Совместно используемая память DDR между процессорами Rocket и ARM A9, работающими на Zedboard - PullRequest
0 голосов
/ 23 октября 2018

Я запускаю голое железо приложения на процессоре с ракетным чипом из репозитория 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-коммуникацию.Есть ли прямой путь?

Заранее спасибо.

...