реклама на сайте
подробности

 
 
> IAR 6.21, Обновился с 4.30...
mungo
сообщение Mar 14 2012, 08:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



Вот обновился и впал в ступор. Раньше была директива #pragma segment="CODE_ID" и по ней я мог вычислить, где начало/конец прошивки. Мне это нужно для проверки целостности было.
Это первая проблема.
Взял старт код из примеров. У меня AT91SAM7X256. Все конечно заработало. Но дальше стало совсем интересно. Решил добавить формирование CRC линкером. Но как оказалось происходит ремап из адреса 0 в 0x100000. И как результат линкер впадает в ступор - генерит прошивку размером более мегабайта, и, ессно, прошивальщик грит что прошивка не влезет.

Кто знает, как найти конец прошивки и сформировать вменяемую прошивку с CRC?


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
SSerge
сообщение Mar 14 2012, 09:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Сама прагма никуда не делась, а вот имена секций изменились.
Читайте, там всё написано:
arm\doc\EWARM_DevelopmentGuide.ENU.pdf
arm\doc\EWARM_MigrationGuide.ENU.pdf


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
mungo
сообщение Mar 14 2012, 10:46
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



Чудесно, сегменты исчезли, появились секции, и они ни к чему не обязывают.... Здорово... Хоть возвращайся к старому компилеру...
А по второму вопросу?

Сообщение отредактировал mungo - Mar 14 2012, 11:23


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Mar 14 2012, 14:53
Сообщение #4


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



__section_begin("CODE_ID")
__section_end("CODE_ID")

Разве вам не это надо ???
Go to the top of the page
 
+Quote Post
mungo
сообщение Mar 15 2012, 12:33
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



Цитата(MALLOY2 @ Mar 14 2012, 17:53) *
__section_begin("CODE_ID")
__section_end("CODE_ID")

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

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


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Mar 15 2012, 16:59
Сообщение #6


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Так создай и положи туда код, а так по умолчанию код находится в секции .text

__section_begin - получает адресс заданной секции.
__section_end - получает конец заданной секции.
Go to the top of the page
 
+Quote Post
mungo
сообщение Mar 27 2012, 12:29
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



Так и сделал.
Появился еще вопрос - можно как-то глобально выравнивание поменять, не выписывая везде прагму? А то 8 байт дофига, когда работаешь с епром на 8 кб, а подбирать всюду надоедает...


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.02025 секунд с 7
ELECTRONIX ©2004-2016