u-boot mmc read_block 限制
u-boot mmc read_block limitiations
我正在尝试从 MMC/SD 卡中的 U-Boot SPL 的全局变量(结构)中复制文件,该变量位于 OCRAM 中。到目前为止,我正在尝试使用
mmc->block_dev.block_read(0, file_sector, 4, &my_struct);
由于复制到 DRAM (DDR3/DDR4) 有效(如果我将 &my_struct
替换为 RAM 中的地址,调用成功并且我可以正确地从 RAM 中读回文件),我确定我的文件位于 file_sector
.
扇区的开头
但是,使用这段代码,我得到:
ERROR: v7_dcache_inval_range - start address is not aligned - 0x100082f4
ERROR: v7_dcache_inval_range - start address is not aligned - 0x10008af4
在 block_read
的目的地位置,我应该知道一些 requirements/limitations 吗?
所以,部分答案就是错误消息中的内容。 'mystruct' 不是缓存对齐的,所以我们所做的刷新是无效的。您应该使用 ALLOC_CACHE_ALIGN_BUFFER 宏,并且如@LPs 所述,将其复制到字符缓冲区中。
我正在尝试从 MMC/SD 卡中的 U-Boot SPL 的全局变量(结构)中复制文件,该变量位于 OCRAM 中。到目前为止,我正在尝试使用
mmc->block_dev.block_read(0, file_sector, 4, &my_struct);
由于复制到 DRAM (DDR3/DDR4) 有效(如果我将 &my_struct
替换为 RAM 中的地址,调用成功并且我可以正确地从 RAM 中读回文件),我确定我的文件位于 file_sector
.
但是,使用这段代码,我得到:
ERROR: v7_dcache_inval_range - start address is not aligned - 0x100082f4
ERROR: v7_dcache_inval_range - start address is not aligned - 0x10008af4
在 block_read
的目的地位置,我应该知道一些 requirements/limitations 吗?
所以,部分答案就是错误消息中的内容。 'mystruct' 不是缓存对齐的,所以我们所做的刷新是无效的。您应该使用 ALLOC_CACHE_ALIGN_BUFFER 宏,并且如@LPs 所述,将其复制到字符缓冲区中。