Как установить начальный адрес приложения ARM при использовании загрузчика USB?

Только что взял одну из этих мини-плат ARM Cortex-M3 LPC1768 от eBay. Это в основном разделочная доска.

Однако, основываясь на небольшой документации, поставленной с ним, я определил, что у него есть USB-загрузчик, аналогичный описанному в примечании к дополнительному USB-загрузчику LPC1700 (AN10866) NXP.

Оба документа (примечание к приложению и документация к плате) указывают, что пользовательские программы должны создаваться так, чтобы их начальный адрес был 0x2000. Потому что загрузчик USB уже на 0x0 и занимает 8K.

В обеих документах также показаны снимки экрана (см. Стр. 14 примечания к приложению) о том, как это сделать в Keil uVision, однако я планирую использовать набор инструментов GNU (Yagarto + Eclipse + OpenOCD).

Как указать начальный адрес 0x2000 при компиляции с помощью цепочки инструментов GNU, чтобы он правильно работал с загрузчиком USB?

1 ответ

Решение

У меня есть много примеров, основанных на руке:

https://github.com/dwelch67

Найдите или создайте свой собственный скрипт компоновщика. где он мог бы сказать, ORIGIN = 0x00000000 для rom изменить это на 0x2000, что-то вроде этого, например:

MEMORY
{
   rom : ORIGIN = 0x00002000, LENGTH = 0x6000
   ram : ORIGIN = 0x40000000, LENGTH = 0x2000
}
SECTIONS
{
   .text : { *(.text*) } > rom
   .bss  : { *(.bss*) } > ram
}

Вы можете захотеть / нужны данные с

   .data  : { *(.data*) } > ram AT >rom

или что-то типа того. зависит от ваших программ и загрузочного кода и все такое.

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

Другие вопросы по тегам