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

 
 
> Контроль CRC программы из BootLoader, Помогите победить линкер пожалста
Artem
сообщение May 22 2009, 06:12
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 4-02-05
Пользователь №: 2 424



Доброго времени суток. Понадобилось добавить bootloader в рабочий проект, и просчитывать при загрузке CRC приложения. Проблема в следующем: Я хочу сделать так - чтобы линкер во время сборки приложения, считал CRC используемой памяти, последним сементом располагал значение CRC. А по фиксированному адресу в конце ROM, расположил указатель на значение CRC. После ресета, попадаем в бутлодер, который из фиксированного адреса считывает адрес значения CRC, затем просчитывает CRC до этого адреса (т.е. до значения). Вот перечитал документация на линкер, и не могу понять как такое можно сделать. Может что-то пропустил... Как это описать линкеру? С линкером экспериментов раньше не проводил, видать пришло время учиться... Заранее спасибо.
P.S. mcu - ATMega16.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vesago
сообщение May 22 2009, 10:46
Сообщение #2


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Есть термоядерная утилита SRecord. Тут обсуждалась. Она позволяет с прошивкой все что угодно сделать. Я через нее собрал обновление загрузчика из приложения с контролем CRC32. Пример скрипта:
Код
@echo off

@echo 1.PATCH BOOT SIGNATURE 0x14
srec_cat.exe bootloader.hex --Intel --Output bootloader_tmp.bin --Binary
patch_signature.exe bootloader_tmp.bin    
del bootloader.hex
srec_cat.exe bootloader_tmp.bin --Binary --Output bootloader.hex --Intel

@echo 2.GENERATE BOOT CRC32 AND PASTE BEGIN
srec_cat.exe bootloader.hex --Intel --offset 0x04 --l-e-crc32 --min bootloader.hex --Intel --Output bootloader_and_crc32.hex --Intel

@echo 3.ADD BOOT LEN
srec_cat.exe bootloader_and_crc32.hex --Intel --offset 0x04 --b-e-length --min bootloader.hex --Intel --Output bootloader_and_len_and_crc32.hex --Intel

@echo 4.ADD BOOT TO APP AND OUTPUT skat_app.hex
srec_cat.exe bootloader_and_len_and_crc32.hex --Intel --offset 0x00006000 skat.hex --Intel --Output skat_app.hex --Intel

@echo 5.OUTPUT skat_app.bin
srec_cat.exe skat_app.hex --Intel --fill 0xFF 0x00 0x8008 --Output skat_app.bin --Binary

move skat_app.bin release
move skat_app.hex release

move bootloader_and_crc32.hex tmp
move bootloader_and_len_and_crc32.hex tmp
move bootloader_tmp.bin tmp

pause
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:52
Рейтинг@Mail.ru


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