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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Контрольная сумма прошивки и Keil
romas2010
сообщение Aug 25 2015, 19:07
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Цитата(ДЕЙЛ @ Aug 20 2015, 22:32) *
Если была такая тема, то хотелось бы ссылку увидеть, поиск мне выдал добрые два десятка страниц.

Сейчас разбираюсь в загрузчике и есть вопрос по поводу контрольной суммы бинарного файла, скомпилированного в Keil'е. Где она хранится и какой алгоритм расчёта? Где можно почитать на эту тему?


- объявляем например в файле main.c

const int crc __attribute__((at(0x800)));

пусть у нас до адреса 0х800 будет загрузчик,а с этого адреса будет программа
- редактируем файл 1.ini (этот файл вне проекта и к нему никак не относится) Пусть у нас к примеру,адрес конца Flash-памяти нашего микроконтроллера 0х1000. также CRC считаем по простенькому алгоритму исключающего или,хотя можно запрограммировать и реальный crc32

map 0x800,0x800 read write

FUNC void calc_crc(void)
{
int i;
crc=0;
for(i=0x804;i<0x1000;i+=4)
crc^=_RDWORD(i);
}

calc_crc()

- подключаем этот файл 1.ini заходим в меню keil-a
"project-options fo target....-вкладка debug-поле initialization file" открываем этот файл
ну собственно говоря,компилируем,загружаем,наслаждаемся

Можно проконтролировать это дело-ввести в watch-окно отладчика переменную crc и проверить...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 26 2015, 03:22
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а результат нигде по 800 адресу сохранить не надо?
Go to the top of the page
 
+Quote Post
x893
сообщение Aug 26 2015, 17:31
Сообщение #18


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Так написано же всё

...
crc=0;
...
crc^=...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 26 2015, 19:44
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



проглядел, const int crc __attribute__((at(0x800)));
Go to the top of the page
 
+Quote Post
редактор
сообщение Aug 27 2015, 06:59
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
подключаем этот файл 1.ini заходим в меню keil-a
"project-options fo target....-вкладка debug-поле initialization file" открываем этот файл
ну собственно говоря,компилируем,загружаем,наслаждаемся

В симуляторе прокатит, а насчет камня не уверен. Поскольку при загрузке HEX значение будет не определено.А последующая модернизация ПЗУ вещь специфическая. И даже если это прокатит, то такую прошивку можно зашивать только через KEIL и только с использованием данного ini-файла, что подходит только для разовой работы или мелкой серии.
Кроме того, если программа начинается с адреса 0x800, то хранить там CRC - преступление.Убивается точка входа в программу.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
romas2010
сообщение Aug 27 2015, 16:05
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Цитата(редактор @ Aug 27 2015, 09:59) *
зашивать только через KEIL и только с использованием данного ini-файла...


Да,только через кейл....файл образа остается неизменным,что не есть хорошо...Адреса приведены здесь чисто для примера. на самом деле они определяются самим программистом..

Да,еще один нюанс- наткнулся в помощи кейла на следующее,т.н. "Cortex-M signature" (меню Help->uvision help->вкладка СОДЕРЖАНИЕ->"книга" uvision user's guide->utilites->Signature Creator for NXP Cortex-M Devices)
Может быть это то,что нам и надо?
Go to the top of the page
 
+Quote Post
редактор
сообщение Aug 28 2015, 07:19
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Гораздо проще настроить в КЕЙЛе проект так, чтоб после сборки запускалась утилита (хоть srecord, хоть самопал, хоть набор утилит из cmd-файла), которая будет пересчитывать CRC у созданного HEX файла.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 28 2015, 08:30
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(редактор @ Aug 28 2015, 10:19) *
Гораздо проще настроить в КЕЙЛе проект так, чтоб после сборки запускалась утилита (хоть srecord, хоть самопал, хоть набор утилит из cmd-файла), которая будет пересчитывать CRC у созданного HEX файла.

Не знаю, проще ли, но логичнее. Запускаю после компиляции сначала преобразование в bin файл, а потом свою программу, которая для вычисляет CRC, размер файла, шифрует его...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 10:00
Рейтинг@Mail.ru


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