Загрузка платы Everest MicroSemi RiscV с загрузчика на ddr3 - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть плата для разработки Everest PolarFire Microsemi RiscV. У меня есть загрузчик и я хочу загрузить основное приложение, которое я хочу выполнить из DDR. Я скопировал всю программу в местоположение 0x80010000 и подтвердил, что могу видеть местоположение ddr, если я прочитал это местоположение и выполнил cr c в коде, который я скопировал. Но когда я пытаюсь загрузить его, я просто зависаю, когда пытаюсь вызвать приведенный ниже код.

Я делаю следующее после того, как скопировал код в правильное место в ddr:

    __disable_irq();
    PLIC_init();

    /* Disable all interrupts: */
    write_csr(mie, 0);

    /* Start executing from the top of DDR memory: */
    __asm volatile("lui ra,0x80010");
    __asm volatile("ret");

Я нашел это в https://github.com/RISCV-on-Microsemi-FPGA/SoftConsole/blob/master/riscv-simple-baremetal-bootloader/bootloader.c.

Я не понимаю, почему не вижу распечатки моего серийного номера после загрузки кода, который я поместил в загрузчик. Я в основном перекомпилировал программу загрузчика для 0x80010000, которая является местоположением ddr в дизайне Libero. Я сделал это, изменив скрипт компоновщика так, чтобы он указывал на 0x80010000.

Любая помощь будет принята с благодарностью.

...