Я запускаю голое железо приложения на процессоре с ракетным чипом из репозитория lowrisc на Zedboar * ( ссылка ).
В этой конфигурации внешняя память является DDR.Кроме того, приложение «голое железо» работает на ARM A9 (с отключенными кэшами) с PS zynq.DDR совместно используется и ARM, и ракетой.
Адрес ракеты по умолчанию для внешней памяти на ракете lowrisc равен 0x80000000
, а затем этот адрес преобразуется в 0x10000000
в файле wrapper.v для использования DDRот zedboard.
Моя цель - записать результаты ракетного приложения в DDR и приложение arm для доступа к ним.
Однако яЯ не в состоянии сделать это.Ракетное приложение работает успешно, но не записывает память DDR, даже адрес, который жестко определен, например:
volatile uint32_t *a = (volatile uint32_t *)0x80000000;
*a = 5;
Я предполагаю, что данные хранятся в кешах ракеты, а не записываются в DDR.Ракеты не могут быть отключены, не так ли?И я не нашел ни одной команды для очистки кэшей.
На этой странице описано, что вся запись в память буферизуется, и фактическое обновление карты памяти запускаетсянаписать в 'mem_update'.Тем не менее, я не мог написать «mem_update» в голом металлическом приложении.
Я просто хочу сделать IO-коммуникацию.Есть ли прямой путь?
Заранее спасибо.