изменить начальный адрес .hex в atmel studio7 - PullRequest
2 голосов
/ 12 мая 2019

Я делаю загрузчик для AVR в ATMELStudio7, при создании .hex он создается с адреса 0x00, но загрузчик должен идти с адреса 0x1e000, если кто-нибудь знает, как изменить это в скомпилированных опциях, я бы ценю это.

1 Ответ

4 голосов
/ 13 мая 2019
  • Перейти к Свойства проекта (Alt + F7)
  • Выбрать Набор инструментов
  • Выбрать AVR / GNU Linker -> Настройки памяти
  • в разделе «Сегмент FLASH» нажмите кнопку «Добавить элемент» и введите:

.text = 0xF000

(UPD) Обратите внимание, этот адрес указан в словах , т. Е. Если вы хотите установить загрузчик 8 КБ на устройство 128 КБ (смещение байтов 0x1E000), то смещение слова будет 0xF000 . Загрузчик 4 КБ на устройстве 32 КБ будет иметь размер 0x3800 и т. Д.

нажмите OK и скомпилируйте проект. Он сообщит компоновщику, где находится начальный адрес основного раздела кода.

Кстати, будьте осторожны при использовании pgmspace.h в загрузчиках на устройствах> 64k, так как константы во флэш-памяти, которые обычно помещаются в младшие 64К, теперь будут размещаться и в верхних адресах и может быть недоступен при использовании обычных pgm_read ... макросов. В этом случае используйте pgm_get_far_address и pgm_read _..._ far макросы.

...