Выполнение кода, который предварительно загружен во flash NOR - PullRequest
4 голосов
/ 24 декабря 2008

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

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

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

1 Ответ

1 голос
/ 24 декабря 2008

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

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

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

...