Добрый день, занялся написанием BootLoader но тут возникло пару вопросов в основном в алгоритме.
1) Как сделать валидацию прошивки? Хотел добавить CRC, но начальник требует что бы программа работала даже с битым CRC(в смысле что бы из за 1 битого байта программа не вставала)
2) В случае если вместо прошивки записался мусор, как можно запустить BootLoader?
Думал запускать его в HardFault_Handler, но если записался мусор то и векторов прерывания тоже нету.
3) Можно ли запустить прошитую программу в режиме пошаговой отладки по .с файлу.
Т.е после того как программа bootloader "Перепрыгнула" на загруженную часть новой программы, то как-то указать ей откуда взять исходники по которым будет производится пошаговая отладка.
(Компилятор IAR)
BootLoader
- Реклама
- Shapa
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Пт июн 20, 2008 09:38:05
- Откуда: Харьков
- Контактная информация:
Re: BootLoader
Всё верно, считайте crc на всю прошивку. Объясните линкеру, чтоб он клал "магическую" сткрутуру в нужном вам месте. Например, в самом начале пошивки. Там храните структуру с нужными вам данными (версия SW, версия HW, expected CRC, entry point, size, etc). Очень полезна будет.pokk писал(а): 1) Как сделать валидацию прошивки? Хотел добавить CRC, но начальник требует что бы программа работала даже с битым CRC(в смысле что бы из за 1 битого байта программа не вставала)
Для востановления данных используется код Хемминга, например. Но зачем это? У вас есть хост, котоырй отправляет прошивку бутлодеру. Если прошивка неуспешна - пинайте хоста, хай отправляет свой мусор заново:)
Запретите менять вектор прерываний. У себя же, в буте создайте таблицу, в озу, где именно HardFault - ваш перехватчик. Остальные - из прошивкиpokk писал(а): 2) В случае если вместо прошивки записался мусор, как можно запустить BootLoader?
Думал запускать его в HardFault_Handler, но если записался мусор то и векторов прерывания тоже нету.
Конечно можно, скормите своему отладчику 2 файла boot.elf + app.elf (вместо одного)pokk писал(а): 3) Можно ли запустить прошитую программу в режиме пошаговой отладки по .с файлу.
Т.е после того как программа bootloader "Перепрыгнула" на загруженную часть новой программы, то как-то указать ей откуда взять исходники по которым будет производится пошаговая отладка.
Фу-фу-фу. Проприретарщина с кучей багов. Смотрите в сторону gccpokk писал(а):(Компилятор IAR)
Re: BootLoader
Shapa, благодарю за ответ. Разобрался с делами, теперь можно более плодотворно заняться бутлоадером.
Т.е после записи прошивки прошивки, таблицу прерываний не перемешать?
Как можно удаленно перевести программу в режим bootloader?
1) пишем некий модуль который находится в основной программе и ожидает команду, после поступления команды перекидывает, на адрес бутлоадера.
2) Вот тут есть понятие черный ход в botloader, но как он организован не совсем понятно.(вроде как при старте программы в течении 1-2 секунд ожидается команда)
http://www.feaser.com/openblt/doku.php?id=manual:design
Что-то очень смутное представление.Запретите менять вектор прерываний. У себя же, в буте создайте таблицу, в озу, где именно HardFault - ваш перехватчик
Т.е после записи прошивки прошивки, таблицу прерываний не перемешать?
Это меня очень порадовало, но перерыв все настройки в IAR, я так и не нашёл как с генерировать файл с расширением elf =((Конечно можно, скормите своему отладчику 2 файла boot.elf + app.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
Вам решать =) Можете переместить, можете модифицировать. Например возьмите таблицу прерываний из новой прошивки, отредактируйте, положите в озу и скажите процу - бери это. Остается только проблема, что при в Аппликуху, можно поменять таблицу на что угодно.pokk писал(а): Т.е после записи прошивки прошивки, таблицу прерываний не перемешать?
ELF - Executable & Linkable File. если говорить в терминах винды EXE-файл. На сколько я помню Иар создает несколько файлов после линковки, посмотрите в директорию где лежит *.hex (*.bin) файл. Там, с таким же именем, но с расширением elf (или вовсе без него) есть то, что вам нужно.pokk писал(а): Это меня очень порадовало, но перерыв все настройки в IAR, я так и не нашёл как с генерировать файл с расширением elf =((
Сами верно ответили на свой вопрос =) как это обернуть - ключевое слово <FOTA>pokk писал(а): Как можно удаленно перевести программу в режим bootloader?
1) пишем некий модуль который находится в основной программе и ожидает команду, после поступления команды перекидывает, на адрес бутлоадера.
Когда и как переходить в бут - вопрос многих переменных. Одна их них - защита от взлома. Вы же не хотите, чтоб злоумышленник подсунул вам свою прошивку, вместо вашей =) Ну а как защищаться - зависит от задачи, может и одно-раундового шифрования хватит...pokk писал(а): 2) Вот тут есть понятие черный ход в botloader, но как он организован не совсем понятно.(вроде как при старте программы в течении 1-2 секунд ожидается команда)
http://www.feaser.com/openblt/doku.php?id=manual:design

