16+
Суббота
25 ноября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры AVR

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
fk0  (12.07.2017 00:22) , в ответ на Расскажите, как правильно делать контроль целостности прошивки. автор: Ljutik1
Из функции _start (в C-стартапе, до main) пересчитывается CRC32 прошивки, например, и сравнивается с значениями записанными по специальным адресам (которые при чтении всегда принимаются нулевыми, например). Или контрольная сумма (тут можно 
подобрать, чтоб с самими байтами контрольной суммы вышел ноль). Или сумма Флетчера, или Адлера. Если контрольный код не верный -- отказ от работы, мигание диодом, азбукой морзе, матерного слова. Код осуществляющий проверку должен быть как можно проще, чтоб не был затронут отказом флеши. Как добавить CRC в программу, да просто: const long flash_checksum = 0 в отдельном файлике. Потом делаешь elf файл, из него достаешь с помощью objcopy сегменты .rodata, .text (все, что во флеш), считаешь crc внешней программой (на входе hex или bin), потом линкуешь проект еще раз, но с другим содержимым отдельного файлика, где реальное значение crc вписано. Вместо файлика можно линкерскрипт специальный написать, но мороки больше, проще с файликом. Повторяю, при расчете в прошивке уже, 4 байта по адресу flash_checksum не считывать и принимать равными нулю.
[ZX]
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII