BootLoader

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

BootLoader

Сообщение pokk »

Добрый день, занялся написанием BootLoader но тут возникло пару вопросов в основном в алгоритме.
1) Как сделать валидацию прошивки? Хотел добавить CRC, но начальник требует что бы программа работала даже с битым CRC(в смысле что бы из за 1 битого байта программа не вставала)
2) В случае если вместо прошивки записался мусор, как можно запустить BootLoader?
Думал запускать его в HardFault_Handler, но если записался мусор то и векторов прерывания тоже нету.
3) Можно ли запустить прошитую программу в режиме пошаговой отладки по .с файлу.
Т.е после того как программа bootloader "Перепрыгнула" на загруженную часть новой программы, то как-то указать ей откуда взять исходники по которым будет производится пошаговая отладка.
(Компилятор IAR)
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: BootLoader

Сообщение Shapa »

pokk писал(а): 1) Как сделать валидацию прошивки? Хотел добавить CRC, но начальник требует что бы программа работала даже с битым CRC(в смысле что бы из за 1 битого байта программа не вставала)
Всё верно, считайте crc на всю прошивку. Объясните линкеру, чтоб он клал "магическую" сткрутуру в нужном вам месте. Например, в самом начале пошивки. Там храните структуру с нужными вам данными (версия SW, версия HW, expected CRC, entry point, size, etc). Очень полезна будет.
Для востановления данных используется код Хемминга, например. Но зачем это? У вас есть хост, котоырй отправляет прошивку бутлодеру. Если прошивка неуспешна - пинайте хоста, хай отправляет свой мусор заново:)
pokk писал(а): 2) В случае если вместо прошивки записался мусор, как можно запустить BootLoader?
Думал запускать его в HardFault_Handler, но если записался мусор то и векторов прерывания тоже нету.
Запретите менять вектор прерываний. У себя же, в буте создайте таблицу, в озу, где именно HardFault - ваш перехватчик. Остальные - из прошивки
pokk писал(а): 3) Можно ли запустить прошитую программу в режиме пошаговой отладки по .с файлу.
Т.е после того как программа bootloader "Перепрыгнула" на загруженную часть новой программы, то как-то указать ей откуда взять исходники по которым будет производится пошаговая отладка.
Конечно можно, скормите своему отладчику 2 файла boot.elf + app.elf (вместо одного)
pokk писал(а):(Компилятор IAR)
Фу-фу-фу. Проприретарщина с кучей багов. Смотрите в сторону gcc
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: BootLoader

Сообщение pokk »

Shapa, благодарю за ответ. Разобрался с делами, теперь можно более плодотворно заняться бутлоадером.
Запретите менять вектор прерываний. У себя же, в буте создайте таблицу, в озу, где именно HardFault - ваш перехватчик
Что-то очень смутное представление.
Т.е после записи прошивки прошивки, таблицу прерываний не перемешать?
Конечно можно, скормите своему отладчику 2 файла boot.elf + app.elf (вместо одного)
Это меня очень порадовало, но перерыв все настройки в IAR, я так и не нашёл как с генерировать файл с расширением elf =((

Как можно удаленно перевести программу в режим bootloader?
1) пишем некий модуль который находится в основной программе и ожидает команду, после поступления команды перекидывает, на адрес бутлоадера.
2) Вот тут есть понятие черный ход в botloader, но как он организован не совсем понятно.(вроде как при старте программы в течении 1-2 секунд ожидается команда)
http://www.feaser.com/openblt/doku.php?id=manual:design
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: BootLoader

Сообщение Shapa »

pokk писал(а): Т.е после записи прошивки прошивки, таблицу прерываний не перемешать?
Вам решать =) Можете переместить, можете модифицировать. Например возьмите таблицу прерываний из новой прошивки, отредактируйте, положите в озу и скажите процу - бери это. Остается только проблема, что при в Аппликуху, можно поменять таблицу на что угодно.
pokk писал(а): Это меня очень порадовало, но перерыв все настройки в IAR, я так и не нашёл как с генерировать файл с расширением elf =((
ELF - Executable & Linkable File. если говорить в терминах винды EXE-файл. На сколько я помню Иар создает несколько файлов после линковки, посмотрите в директорию где лежит *.hex (*.bin) файл. Там, с таким же именем, но с расширением elf (или вовсе без него) есть то, что вам нужно.
pokk писал(а): Как можно удаленно перевести программу в режим bootloader?
1) пишем некий модуль который находится в основной программе и ожидает команду, после поступления команды перекидывает, на адрес бутлоадера.
Сами верно ответили на свой вопрос =) как это обернуть - ключевое слово <FOTA>
pokk писал(а): 2) Вот тут есть понятие черный ход в botloader, но как он организован не совсем понятно.(вроде как при старте программы в течении 1-2 секунд ожидается команда)
http://www.feaser.com/openblt/doku.php?id=manual:design
Когда и как переходить в бут - вопрос многих переменных. Одна их них - защита от взлома. Вы же не хотите, чтоб злоумышленник подсунул вам свою прошивку, вместо вашей =) Ну а как защищаться - зависит от задачи, может и одно-раундового шифрования хватит...
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «ARM»