Перейти к содержанию
    

IAR: Расчет CRC только для секции CODE, запись размера прошивки во FLASH

. . . .

Возможно ли как-то не вручную узнать адреса сегментов, . . . .

Если из кода - то в переменных препроцессора надо смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если из кода - то в переменных препроцессора надо смотреть.

У препроцессора вообще никаких переменных нет, он просто делает замены одного текста на другой, ну и есть ещё выражения в директивах типа #if.

 

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

Можно также сделать доступными программе константы, объявленные в .icf файле.

 

Так что, если это действительно нужно, придётся получать реальные адреса из выхлопа линкера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У препроцессора вообще никаких переменных нет, . . .

Да, Вы правы.

Вот нашел, где я на эту тему натыкался в Help/IAR/MSP430

 

#pragma segment="MYSEGMENT" __data16 
__root void * seg_addr;

int main(void)
{
   seg_addr = __segment_begin("MYSEGMENT");   
   . . .

 

MYSEGMENT должен быть определен в файле линкера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MYSEGMENT должен быть определен в файле линкера.

А что толку? Как эти адреса (начала/конца сегмента) передать процессу подсчёта CRC?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, как правильно выбрать значения маркеров конца/начала прошивки так, чтобы эти маркеры с наименьшей вероятностью встретились в самой прошивке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, как правильно выбрать значения маркеров конца/начала прошивки так, чтобы эти маркеры с наименьшей вероятностью встретились в самой прошивке?

В таблице команд найти "недействительный" опкод, и оттиражировать ЕГО на максимальную длину команд + 1, чтобы "заэкранировать"

данные, которые могут быть какимиугодно. Это "сработает" только для кодового сегмента, где нет массивов данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...