Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR 6.21
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
mungo
Вот обновился и впал в ступор. Раньше была директива #pragma segment="CODE_ID" и по ней я мог вычислить, где начало/конец прошивки. Мне это нужно для проверки целостности было.
Это первая проблема.
Взял старт код из примеров. У меня AT91SAM7X256. Все конечно заработало. Но дальше стало совсем интересно. Решил добавить формирование CRC линкером. Но как оказалось происходит ремап из адреса 0 в 0x100000. И как результат линкер впадает в ступор - генерит прошивку размером более мегабайта, и, ессно, прошивальщик грит что прошивка не влезет.

Кто знает, как найти конец прошивки и сформировать вменяемую прошивку с CRC?
SSerge
Сама прагма никуда не делась, а вот имена секций изменились.
Читайте, там всё написано:
arm\doc\EWARM_DevelopmentGuide.ENU.pdf
arm\doc\EWARM_MigrationGuide.ENU.pdf
mungo
Чудесно, сегменты исчезли, появились секции, и они ни к чему не обязывают.... Здорово... Хоть возвращайся к старому компилеру...
А по второму вопросу?
MALLOY2
__section_begin("CODE_ID")
__section_end("CODE_ID")

Разве вам не это надо ???
mungo
Цитата(MALLOY2 @ Mar 14 2012, 17:53) *
__section_begin("CODE_ID")
__section_end("CODE_ID")

Разве вам не это надо ???

Дело в том, что таких названий секциий нету, это раз, а два - код и данные разделились как я понял, поэтому нет точного адреса окончания прошивки.
MALLOY2
Так создай и положи туда код, а так по умолчанию код находится в секции .text

__section_begin - получает адресс заданной секции.
__section_end - получает конец заданной секции.
mungo
Так и сделал.
Появился еще вопрос - можно как-то глобально выравнивание поменять, не выписывая везде прагму? А то 8 байт дофига, когда работаешь с епром на 8 кб, а подбирать всюду надоедает...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.