|
|
  |
Bootloader for ATmega16/32 |
|
|
|
Dec 21 2009, 13:02
|
Местный
  
Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646

|
Здраствуйте! Мне надо сделать девайс, в котором обновление прошивки не составило бы труда обычному пользователю, то есть надо Bootloader. Кто может посоветовать программу для ПК и для МК чтобы можно было загружать прошивку через СОМ порт в шифрованом виде, ну или хотя бы в обычном через AVRProg? Заранее спасибо!
Причина редактирования: Исправление ошибок
|
|
|
|
|
Dec 21 2009, 13:47
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(Br.Misha @ Dec 21 2009, 16:36)  сори, просто я с украины и общаюсь на укр языке. А с чего именно видно что у меня такой акцент? Сейчас не видно  а апноуты все же посмотрите, там был вариант лоадера под мегу 16, если память мне не изменяет.
|
|
|
|
|
Dec 22 2009, 00:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Цитата(doomer#gp @ Dec 22 2009, 01:46)  иметь собственную таблицу прерываний Я лично предпочитаю в бутлоадере обходиться без прерываний. В нем не так много функций, особых требований по быстродействию нет, а прерывания в бутлоадере - дополнительный головняк. Всего-то достаточно ожидать символа с компорта: recchar: LDS r16,USARTC1_STATUS ANDI r16,USART_RXCIF_bm BREQ recchar LDS r16,USARTC1_DATA RET Константы использованы от xmega
|
|
|
|
|
Dec 25 2009, 21:00
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Цитата(V_G @ Dec 22 2009, 02:02)  Я лично предпочитаю в бутлоадере обходиться без прерываний. В нем не так много функций, особых требований по быстродействию нет, а прерывания в бутлоадере - дополнительный головняк. Всего-то достаточно ожидать символа с компорта: Присоединяюсь. С таблицей прерывания, расположенной в начале устройства, и бут-областью в конце (а из другого места писать флэш еще более для AVR затруднительно), с прерываниями лучше не связываться. Я лично их не использую (смысл?), делаю таким же циклическим опросом. Для контроллеров с таблицей прерываний в конце памяти может и есть смысл. У Атмела есть документ по поводу такого загрузчика с исходниками всего, включая PC-часть: http://www.atmel.com/dyn/resources/prod_do...nts/doc2589.pdf. Шифрование по AES. Думаю, вполне хватит для данной задачи.
Сообщение отредактировал rezident - Dec 25 2009, 21:50
Причина редактирования: Излишнее цитирование.
|
|
|
|
|
Dec 29 2009, 23:11
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Br.Misha @ Dec 29 2009, 21:10)  Вопрос: как можна записать байты в определенные адреса и потом считать их оттуда и можно ли вообще считывать основной программой FLASH в которой записан бутлоалер? Сначала ответ на последний вопрос - зависит от того, как зашиты фузы BLB. Если в 00, то чтение запрещено. Но есть довольно простой обход: в области загрузчика по фиксированному адресу (я располагаю в самых последних адресах), располагается функция, примерно такая: Код uint32_t get_serial() { return 0; } Она компилится в простой код: Код 54 .global _Z6serialv 56 _Z6serialv: 57 .LFB32: 58 .LSM2: 59 /* prologue: frame size=0 */ 60 /* prologue end (size=0) */ 61 .LSM3: 62 0000 60E0 ldi r22,lo8(0) 63 0002 70E0 ldi r23,hi8(0) 64 0004 80E0 ldi r24,hlo8(0) 65 0006 90E0 ldi r25,hhi8(0) 66 /* epilogue: frame size=0 */ 67 0008 0895 ret Вызвав эту функцию из области приложения, получаем серийный номер в регистрах независимо от состояния битов BLB. Теперь первый вопрос: прописать на место этих фиктивных команд команды LDI с серийным номером (и самостоятельно увеличить его после успешной прошивки) умеет AVReal. Если AVReal по каким-то причинам не устраивает - можно написать програмку, подставляющую серийник в нужном виде прямо в файл прошивки.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|