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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> IAR: Расчет CRC только для секции CODE, запись размера прошивки во FLASH
k155la3
сообщение Sep 24 2017, 19:10
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 719
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(93 @ Sep 20 2017, 16:57) *
. . . .
Возможно ли как-то не вручную узнать адреса сегментов, . . . .

Если из кода - то в переменных препроцессора надо смотреть.
Go to the top of the page
 
+Quote Post
SSerge
сообщение Sep 25 2017, 07:02
Сообщение #17


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

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



Цитата(k155la3 @ Sep 25 2017, 02:10) *
Если из кода - то в переменных препроцессора надо смотреть.

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

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

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


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 28 2017, 20:12
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 719
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(SSerge @ Sep 25 2017, 10:02) *
У препроцессора вообще никаких переменных нет, . . .

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

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

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


MYSEGMENT должен быть определен в файле линкера.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 29 2017, 05:35
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 775
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(k155la3 @ Sep 29 2017, 03:12) *
MYSEGMENT должен быть определен в файле линкера.

А что толку? Как эти адреса (начала/конца сегмента) передать процессу подсчёта CRC?
Go to the top of the page
 
+Quote Post
093
сообщение Sep 29 2017, 19:39
Сообщение #20





Группа: Участник
Сообщений: 13
Регистрация: 8-09-17
Пользователь №: 99 176



Интересно, как правильно выбрать значения маркеров конца/начала прошивки так, чтобы эти маркеры с наименьшей вероятностью встретились в самой прошивке?
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 30 2017, 17:00
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 719
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(93 @ Sep 29 2017, 22:39) *
Интересно, как правильно выбрать значения маркеров конца/начала прошивки так, чтобы эти маркеры с наименьшей вероятностью встретились в самой прошивке?

В таблице команд найти "недействительный" опкод, и оттиражировать ЕГО на максимальную длину команд + 1, чтобы "заэкранировать"
данные, которые могут быть какимиугодно. Это "сработает" только для кодового сегмента, где нет массивов данных.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st November 2017 - 21:20
Рейтинг@Mail.ru


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