Гость Br.Misha 21 декабря, 2009 Опубликовано 21 декабря, 2009 · Жалоба Здраствуйте! Мне надо сделать девайс, в котором обновление прошивки не составило бы труда обычному пользователю, то есть надо Bootloader. Кто может посоветовать программу для ПК и для МК чтобы можно было загружать прошивку через СОМ порт в шифрованом виде, ну или хотя бы в обычном через AVRProg? Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Br.Misha 21 декабря, 2009 Опубликовано 21 декабря, 2009 · Жалоба сори, просто я с украины и общаюсь на укр языке. А с чего именно видно что у меня такой акцент? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 21 декабря, 2009 Опубликовано 21 декабря, 2009 · Жалоба сори, просто я с украины и общаюсь на укр языке. А с чего именно видно что у меня такой акцент? Сейчас не видно а апноуты все же посмотрите, там был вариант лоадера под мегу 16, если память мне не изменяет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 7 21 декабря, 2009 Опубликовано 21 декабря, 2009 (изменено) · Жалоба AvrProg'у по барабану, какой файл передавать в проц, шифрованный или нет. Так что шифруйте hex-файл на здоровье, а в бутлоадере перед записью расшифровывайте. Изменено 21 декабря, 2009 пользователем V_G Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doomer#gp 0 21 декабря, 2009 Опубликовано 21 декабря, 2009 · Жалоба Готовый код вряд ли кто вам выложит. Читаем документацию на МК и пишем. Вообщем загрузчик должен распологаться в верхней boot секции, иметь собственную таблицу прерываний и собственный протокол. Делал такой (с шифованием прошивки) для ATmega 48, 88, 168. Для получения криптованной прошивки берем bin-файл и криптуем все что до boot секции. Можно обвернуть потом в свой формат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 7 22 декабря, 2009 Опубликовано 22 декабря, 2009 · Жалоба иметь собственную таблицу прерываний Я лично предпочитаю в бутлоадере обходиться без прерываний. В нем не так много функций, особых требований по быстродействию нет, а прерывания в бутлоадере - дополнительный головняк. Всего-то достаточно ожидать символа с компорта: recchar: LDS r16,USARTC1_STATUS ANDI r16,USART_RXCIF_bm BREQ recchar LDS r16,USARTC1_DATA RET Константы использованы от xmega Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Polaris 0 25 декабря, 2009 Опубликовано 25 декабря, 2009 (изменено) · Жалоба Я лично предпочитаю в бутлоадере обходиться без прерываний. В нем не так много функций, особых требований по быстродействию нет, а прерывания в бутлоадере - дополнительный головняк. Всего-то достаточно ожидать символа с компорта: Присоединяюсь. С таблицей прерывания, расположенной в начале устройства, и бут-областью в конце (а из другого места писать флэш еще более для AVR затруднительно), с прерываниями лучше не связываться. Я лично их не использую (смысл?), делаю таким же циклическим опросом. Для контроллеров с таблицей прерываний в конце памяти может и есть смысл. У Атмела есть документ по поводу такого загрузчика с исходниками всего, включая PC-часть: http://www.atmel.com/dyn/resources/prod_do...nts/doc2589.pdf. Шифрование по AES. Думаю, вполне хватит для данной задачи. Изменено 25 декабря, 2009 пользователем rezident Излишнее цитирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Br.Misha 29 декабря, 2009 Опубликовано 29 декабря, 2009 · Жалоба Здрствуйте! Мне нада сделать несколько девайсов и каждый с них должен иметь бутлоадер(загрузка прошивки через UART с помощью AVRProg) и ID (5-10 символов). Когда в МК будет залит бутлоадер то будут установлены фузы для запрета чтения FLASH и EEPROM после чего прошивать МК можна будет через UART. Вобщем ID я хочу записывать в сам бутлоадер(там 80 байт свобные), тоесть в исходном коде бутлоадера мне нада записать в определенные адреса эти 8-10 байт и потом считать их основной программой(тоесть той, которая будет залита через UART). Вопрос: как можна записать байты в определенные адреса и потом считать их оттуда и можно ли вообще считывать основной программой FLASH в которой записан бутлоалер? Пишу на Си в WinAVR. Thanks))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Polaris 0 29 декабря, 2009 Опубликовано 29 декабря, 2009 · Жалоба Br.Misha Флэш у АВР стирается/пишется только постранично. Для Mega128 размер страницы - 256 байт, писать туда номер устройства - не самый лучший способ. Мало ли что случится, можно и бутлоадер убить. Самый оптимальный способ хранения номера устройства - EEPROM, по фиксированному адресу где-нибудь в самом конце, установив на всякий случай фуз сохранения содержимого EEPROM при полном стирании чипа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 132 29 декабря, 2009 Опубликовано 29 декабря, 2009 · Жалоба Вопрос: как можна записать байты в определенные адреса и потом считать их оттуда и можно ли вообще считывать основной программой 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 по каким-то причинам не устраивает - можно написать програмку, подставляющую серийник в нужном виде прямо в файл прошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться