Выполнение кода, предварительно загруженного во флэш-память NOR

Я создаю систему uClinux для запуска на NXP LPC2478. Чип имеет 512k встроенную быструю вспышку, из которой он может напрямую выполнять код. Я хочу загрузить и запустить пользовательское приложение из обычной внешней SDRAM. Но у меня есть специальная графическая библиотека, которую я хотел бы предварительно загрузить, чтобы выполнить из встроенной вспышки.

Есть ли способ скомпилировать графическую библиотеку для работы в фиксированном месте в памяти (flash), а затем скомпилировать/связать приложение, которое использует его, чтобы все ссылки на эту библиотеку были зафиксированы в соответствующих местах во флэш-памяти?

Если мне нужно написать собственный пользовательский загрузчик приложений, который будет выполнять исправления вручную, я сделаю это.

1 ответ

Я предполагаю, что вы используете GCC. Кроме того, я считаю, что вы связываете uCLinux, графическую библиотеку и ваше приложение за один этап, чтобы создать исполняемый файл. Связывание всех компонентов контролируется компоновщиком script (ld файл). Чтобы сделать то, что вы хотите, вам нужно отредактировать ld файл, а также выполнить правильную инициализацию при запуске кода.

В компоновщике script вы должны поместить секцию данных во внешнюю ОЗУ. Затем создайте специальный раздел для графической библиотеки и поместите его во flash. При создании раздела вы можете указать, к каким объектным файлам он будет включать. В вашем стартовом коде вам необходимо скопировать раздел данных с флэш-памяти в ОЗУ. Компилятор позаботится о том, чтобы связать ваше приложение в ОЗУ с графической библиотекой во флеше.

Вот как это делается вообще. На основе ваших требований из вашей цепочки инструментов и библиотек может быть больше шагов.

licensed under cc by-sa 3.0 with attribution.