k155la3 26 24 сентября, 2017 Опубликовано 24 сентября, 2017 · Жалоба . . . . Возможно ли как-то не вручную узнать адреса сегментов, . . . . Если из кода - то в переменных препроцессора надо смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 25 сентября, 2017 Опубликовано 25 сентября, 2017 · Жалоба Если из кода - то в переменных препроцессора надо смотреть. У препроцессора вообще никаких переменных нет, он просто делает замены одного текста на другой, ну и есть ещё выражения в директивах типа #if. В программе можно ссылаться на адреса и размеры сегментов, но их реальные значения станут известны только в результате работы линкера. Можно также сделать доступными программе константы, объявленные в .icf файле. Так что, если это действительно нужно, придётся получать реальные адреса из выхлопа линкера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 28 сентября, 2017 Опубликовано 28 сентября, 2017 · Жалоба У препроцессора вообще никаких переменных нет, . . . Да, Вы правы. Вот нашел, где я на эту тему натыкался в Help/IAR/MSP430 #pragma segment="MYSEGMENT" __data16 __root void * seg_addr; int main(void) { seg_addr = __segment_begin("MYSEGMENT"); . . . MYSEGMENT должен быть определен в файле линкера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 29 сентября, 2017 Опубликовано 29 сентября, 2017 · Жалоба MYSEGMENT должен быть определен в файле линкера. А что толку? Как эти адреса (начала/конца сегмента) передать процессу подсчёта CRC? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
093 0 29 сентября, 2017 Опубликовано 29 сентября, 2017 · Жалоба Интересно, как правильно выбрать значения маркеров конца/начала прошивки так, чтобы эти маркеры с наименьшей вероятностью встретились в самой прошивке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 30 сентября, 2017 Опубликовано 30 сентября, 2017 · Жалоба Интересно, как правильно выбрать значения маркеров конца/начала прошивки так, чтобы эти маркеры с наименьшей вероятностью встретились в самой прошивке? В таблице команд найти "недействительный" опкод, и оттиражировать ЕГО на максимальную длину команд + 1, чтобы "заэкранировать" данные, которые могут быть какимиугодно. Это "сработает" только для кодового сегмента, где нет массивов данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться