在Zedboard上运行裸机应用程序的火箭和ARM A9处理器之间共享DDR内存

时间:2018-10-23 11:53:39

标签: fpga zynq rocket

我正在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通信。有什么简单的方法吗?

谢谢。

0 个答案:

没有答案