我正在Zedboar *(link)的lowrisc存储库中的火箭芯片处理器上运行裸机应用程序。
在该配置中,外部存储器是DDR。此外,zynq的PS上的裸机应用程序在ARM A9上运行(禁用了缓存)。 DDR在ARM和火箭之间共享。
火箭lowrisc上用于外部存储器的默认火箭地址为0x80000000
,然后在wrapper.v将此地址转换为0x10000000
,以使用zedboard的DDR。
我的目标是将火箭应用程序结果写入DDR和arm应用程序中以对其进行访问。
但是,我无法做到这一点。火箭应用程序可以成功运行,但不会写入DDR内存,即使地址是硬定义的,例如:
volatile uint32_t *a = (volatile uint32_t *)0x80000000;
*a = 5;
我猜数据存储在火箭缓存中,而不是写入DDR。不能禁用火箭缓存,是吗?而且,我没有找到任何刷新缓存的命令。
在this page中描述了所有内存写操作都被缓冲,并且对内存映射的实际更新是由对“ mem_update”的写操作触发的。但是,我无法在裸机应用中编写“ mem_update”。
我只想进行IO通信。有什么简单的方法吗?
谢谢。