Embedded u-boot mmc读取块限制

Embedded u-boot mmc读取块限制,embedded,u-boot,Embedded,U Boot,我试图从U-Boot SPL的全局变量(struct)中的MMC/SD卡复制一个文件,该变量位于OCRAM中。到目前为止,我正在尝试使用 mmc->block_dev.block_read(0, file_sector, 4, &my_struct); 由于复制到DRAM(DDR3/DDR4)是有效的(如果我用RAM中的地址替换&my_struct,调用就会成功,并且我可以正确地从RAM读回文件),因此我确信我的文件位于扇区文件\u扇区的开头 但是,使用此代码,我得到: ERRO

我试图从U-Boot SPL的全局变量(struct)中的MMC/SD卡复制一个文件,该变量位于OCRAM中。到目前为止,我正在尝试使用

mmc->block_dev.block_read(0, file_sector, 4, &my_struct);
由于复制到DRAM(DDR3/DDR4)是有效的(如果我用RAM中的地址替换
&my_struct
,调用就会成功,并且我可以正确地从RAM读回文件),因此我确信我的文件位于扇区
文件\u扇区
的开头

但是,使用此代码,我得到:

ERROR: v7_dcache_inval_range - start address is not aligned - 0x100082f4
ERROR: v7_dcache_inval_range - start address is not aligned - 0x10008af4

block_read
的目的地位置上是否有一些我应该注意的要求/限制?

因此,部分答案就是它在错误消息中所说的。其中'mystruct'未与缓存对齐,因此我们所做的刷新无效。您应该使用ALLOC\u CACHE\u ALIGN\u BUFFER宏,并如@LPs所述,复制到字符缓冲区。

mmc\u read
应该使用字符缓冲区完成工作。它应该不需要任何特定的对齐。“DDRAM”应该是什么?我的错,这是一个打字错误。应该阅读DRAM(文档说明为DDR3/DDR4)谢谢您的提示。从doc in common.h我看到宏是在堆栈上分配的。是否有一个等价物分配在头部?我需要填充标题并将其读回两个单独的文件中。你是说堆?如果已初始化DDR,则可以使用memalign.hYes中的malloc_cache_aligned()。。堆对不起:)谢谢你的回答!