Задать вопрос
  • Как запустить программу (XIP) из внешней QSPI FLASH STM32?

    @IvanVamDam Автор вопроса
    Ну я говорю, что даже до перемещения таблицы векторов прерывания во внешнюю память программа не доходит. Я ознакомился с примером, которым вы поделились. Реализовал у себя подобное:
    uint8_t a = 0;
    
    __attribute__((section(".extflash"))) void function_in_ext_flash(void)
    {
    
    	a += 1;
    }
    int main(void)
    {
     ...
     Конфигурирую периферию 
     ... 
    function_in_ext_flash();
    }

    Ну и да, функция во внешней флеш и все исполняется корректно:
    68623fce68552322658216.png
    Секцию extflash разметил в файле линковщика
    Написано
  • Как запустить программу (XIP) из внешней QSPI FLASH STM32?

    @IvanVamDam Автор вопроса
    zatim, Application Note на QSPI STM32 говорит, что по его адресному пространству можно исполняться, получается, что не надо копировать. Я лишь настраиваю Memory mapping, перед прыжком в область целевой программы (она же область QSPI), чтобы контроллер видел внешнюю QSPI флеш как внутреннюю. Так что да, я просто передаю управление регистру qspi. В целевой программе, я редактирую линкер скрипт, чтобы вся ее флеш была не внутренняя флеш контроллера ORIGIN = 0x0800 0000, SIZE = 2048, а внешняя ORIGIN = 0x9000 0000, SIZE = 8M, Также перед заходом в main() целевой прошивки переношу таблицу векторов по адресу 0x9000 0000, но это не влияет т.к. программа до этого момента не доходит.