Как установить начальный адрес приложения ARM при использовании загрузчика USB? - PullRequest
2 голосов
/ 17 октября 2011

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

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

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

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

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

1 Ответ

6 голосов
/ 17 октября 2011

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

https://github.com/dwelch67

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

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

вам может потребоваться / нужна .data с

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

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

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

...