romas2010 1 25 августа, 2015 Опубликовано 25 августа, 2015 · Жалоба Если была такая тема, то хотелось бы ссылку увидеть, поиск мне выдал добрые два десятка страниц. Сейчас разбираюсь в загрузчике и есть вопрос по поводу контрольной суммы бинарного файла, скомпилированного в 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 и проверить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 26 августа, 2015 Опубликовано 26 августа, 2015 · Жалоба а результат нигде по 800 адресу сохранить не надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 26 августа, 2015 Опубликовано 26 августа, 2015 · Жалоба Так написано же всё ... crc=0; ... crc^=... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 26 августа, 2015 Опубликовано 26 августа, 2015 · Жалоба проглядел, const int crc __attribute__((at(0x800))); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 27 августа, 2015 Опубликовано 27 августа, 2015 · Жалоба подключаем этот файл 1.ini заходим в меню keil-a "project-options fo target....-вкладка debug-поле initialization file" открываем этот файл ну собственно говоря,компилируем,загружаем,наслаждаемся В симуляторе прокатит, а насчет камня не уверен. Поскольку при загрузке HEX значение будет не определено.А последующая модернизация ПЗУ вещь специфическая. И даже если это прокатит, то такую прошивку можно зашивать только через KEIL и только с использованием данного ini-файла, что подходит только для разовой работы или мелкой серии. Кроме того, если программа начинается с адреса 0x800, то хранить там CRC - преступление.Убивается точка входа в программу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romas2010 1 27 августа, 2015 Опубликовано 27 августа, 2015 · Жалоба зашивать только через KEIL и только с использованием данного ini-файла... Да,только через кейл....файл образа остается неизменным,что не есть хорошо...Адреса приведены здесь чисто для примера. на самом деле они определяются самим программистом.. Да,еще один нюанс- наткнулся в помощи кейла на следующее,т.н. "Cortex-M signature" (меню Help->uvision help->вкладка СОДЕРЖАНИЕ->"книга" uvision user's guide->utilites->Signature Creator for NXP Cortex-M Devices) Может быть это то,что нам и надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 28 августа, 2015 Опубликовано 28 августа, 2015 · Жалоба Гораздо проще настроить в КЕЙЛе проект так, чтоб после сборки запускалась утилита (хоть srecord, хоть самопал, хоть набор утилит из cmd-файла), которая будет пересчитывать CRC у созданного HEX файла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 августа, 2015 Опубликовано 28 августа, 2015 · Жалоба Гораздо проще настроить в КЕЙЛе проект так, чтоб после сборки запускалась утилита (хоть srecord, хоть самопал, хоть набор утилит из cmd-файла), которая будет пересчитывать CRC у созданного HEX файла. Не знаю, проще ли, но логичнее. Запускаю после компиляции сначала преобразование в bin файл, а потом свою программу, которая для вычисляет CRC, размер файла, шифрует его... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться