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

 
 
> 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
 
Start new topic
Ответов
093
сообщение Sep 12 2017, 13:07
Сообщение #2





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



Цитата
что будет если попытаться записать (с предварительным стиранием) что-либо сразу после последнего байта программы без учёта границ секторов

Кто вам это сказал? Не надо додумывать.
Цитата
на вкладке опций проекта посвящённой расчёту CRC указать границы этой области

Нет на той вкладке такой опции. Можно только через командную строку задать.
Вообще такой способ довольно плох тем, что будем ограничены парой секторов, а если прошивка больше занимает?

Как задать специальный маркер из нескольких байт сразу после CODE и CONST memory? Это бы решило сразу пару проблем.



Сообщение отредактировал 93 - Sep 12 2017, 13:12
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 14 2017, 23:00
Сообщение #3


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

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



Цитата(93 @ Sep 12 2017, 16:07) *
. . .
Как задать специальный маркер из нескольких байт сразу после CODE и CONST memory? Это бы решило сразу пару проблем.

В файле линкера определите свой сегмент, расположенный за сегментом CODE (CONST идет в начале флеш)
и пользуйте его через

Код
/*const*/   int MyVar[] @ "MY_CODE_SEG" = {0x55AA, 0xAA55};

ps - правильно-ли, и будет ли работать - не знаю, возможно линкер будет ругаться что посягнули на "CODE".
Скорее всего это реализуемо, но надо хорошо знать что и где прописывать в файле линкера.
Если разберетесь - поделитесь sm.gif
Go to the top of the page
 
+Quote Post
093
сообщение Sep 20 2017, 08:06
Сообщение #4





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



Obam, проц MSP430F5418A и MSP430F5438A

Цитата(k155la3 @ Sep 15 2017, 02:00) *
В файле линкера определите свой сегмент, расположенный за сегментом CODE (CONST идет в начале флеш)
и пользуйте его через
Если разберетесь - поделитесь sm.gif


Вот с определение сегмента как раз и проблема: линкер игнорирует этот сегмент.

Код
//В main.c
const int MyVar[] @ "MYSEGMENTA" = {0x55AA, 0xAA55};


Код
// ---------------------------
// Constant data
//
-Z(CONST)DATA20_C,DATA20_ID,CODE_ID=5C08-FF7F,10040-25BEF
//Объявляю сегмент:
-Z(CONST)MYSEGMENTA=25BF0-25BFF


В map файле нет этого сегмента и никаких ошибок тоже нет:

Код
SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
DATA16_AN                              0102 - 0103               2   rel    0
....
....
CODE_I                                    1C00                       rel    1
DATA20_I                               1C00 - 1C40              41   rel    1
DATA20_Z                               1C42 - 22B5             674   rel    1
DATA20_N                                  22B6                       rel    1
DATA20_HEAP                            22B6 - 2305              50   rel    1
CSTACK                                 5B60 - 5BFF              A0   rel    1
CSTART                                 5C08 - 5C37              30   rel    1
ISR_CODE                               5C38 - 5E0B             1D4   rel    1
<CODE> 1                               5E0C - EFF9            91EE   rel    1
INTVEC                                 FF80 - FFF3              74   com    1
RESET                                  FFFE - FFFF               2   rel    1
DATA20_C                           00010040 - 00012337        22F8   rel    1
DATA20_ID                          00012338 - 00012378          41   rel    1
CODE_ID                                 0001237A                     rel    1


Сообщение отредактировал 93 - Sep 20 2017, 08:09
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2017, 09:49
Сообщение #5


Гуру
******

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



Цитата(93 @ Sep 20 2017, 15:06) *
Вот с определение сегмента как раз и проблема: линкер игнорирует этот сегмент.

Откройте мануал на компилятор и прочитайте назначение префикса __root.
То же самое для атрибута ROOT секции.
То же самое можно сделать через свойства проекта. И думаю, что и через командный файл линкёра тоже.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 93   IAR: Расчет CRC только для секции CODE, запись размера прошивки во FLASH   Sep 8 2017, 07:01
- - jcxz   Цитата(93 @ Sep 8 2017, 14:01) Ведь в про...   Sep 8 2017, 08:19
- - 93   ЦитатаКто-ж пишет в тот-же сектор, в котором лежит...   Sep 11 2017, 16:07
|- - jcxz   Цитата(93 @ Sep 11 2017, 23:07) Легко - п...   Sep 12 2017, 02:55
- - x893   Тем более, что пишется за 10-15 минут.   Sep 11 2017, 16:13
|- - jcxz   Цитата(93 @ Sep 12 2017, 20:07) Кто вам э...   Sep 16 2017, 11:30
- - x893   А чем не устраивает запись CRC например после табл...   Sep 16 2017, 13:56
|- - Obam   Цитата(x893 @ Sep 16 2017, 17:56) А чем н...   Sep 16 2017, 14:26
- - 93   jcxz, Ларчик просто открывался! Компилятор ...   Sep 20 2017, 12:34
|- - jcxz   Цитата(93 @ Sep 20 2017, 19:34) Компилято...   Sep 20 2017, 16:41
- - 93   Ну что же, с маркерами разобрались, осталось разоб...   Sep 20 2017, 13:57
|- - k155la3   Цитата(93 @ Sep 20 2017, 16:57) . . . . В...   Sep 24 2017, 19:10
|- - SSerge   Цитата(k155la3 @ Sep 25 2017, 02:10) Если...   Sep 25 2017, 07:02
|- - k155la3   Цитата(SSerge @ Sep 25 2017, 10:02) У пре...   Sep 28 2017, 20:12
|- - jcxz   Цитата(k155la3 @ Sep 29 2017, 03:12) MYSE...   Sep 29 2017, 05:35
- - 93   Интересно, как правильно выбрать значения маркеров...   Sep 29 2017, 19:39
- - k155la3   Цитата(93 @ Sep 29 2017, 22:39) Интересно...   Sep 30 2017, 17:00


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:43
Рейтинг@Mail.ru


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