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

 
 
> IAR: Расчет CRC только для секции CODE, запись размера прошивки во FLASH
093
сообщение Sep 8 2017, 07:01
Сообщение #1





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



Приветствую! Подскажите пожалуйста:

1) Есть ли возможность в IAR настроить расчет CRC не для всей области памяти, как это делается по умолчанию путем предварительного заполнения неиспользуемой памяти значениями 0xFF, а только для той, где лежит программа?
Ведь в процессе работы содержимое flash может изменяться (например, записали туда какие-то настройки) и CRC уже не совпадет.
2) Допустим генерацию CRC настроили как надо, но как определить по какому объему данных рассчитывать CRC?
Может быть можно настроить линкер так, чтобы перед кодом программы он вставил размер прошивки (4 байта) или в конец программы специальный маркер из 4...8 байт, который нигде больше не встречается? Какие для этого используются директивы?

Сообщение отредактировал 93 - Sep 8 2017, 07:02
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 20)
k155la3
сообщение Sep 24 2017, 19:10
Сообщение #16


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

Группа: Свой
Сообщений: 1 123
Регистрация: 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 719
Регистрация: 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


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

Группа: Свой
Сообщений: 1 123
Регистрация: 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


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 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


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

Группа: Свой
Сообщений: 1 123
Регистрация: 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 Текстовая версия Сейчас: 9th August 2025 - 23:09
Рейтинг@Mail.ru


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