Страница 1 из 2 12 Последняя
Показано с 1 по 20 из 22

Тема: BootLoader для ATMega168

  1. #1
    AudioKiller
    Автор темы
    Аватар для AudioKiller
    Регистрация
    10.02.2005
    Адрес
    Ростов-на-Дону
    Возраст
    61
    Сообщений
    2,485

    По умолчанию BootLoader для ATMega168

    НЕ АРДУИНО!

    Нужно с ноута обновлять прошивку в устройстве. Через свисток USB-UART. Надо написать бутлоадер.
    Вроде бы всё просто: программа бута проверяет входной пин МК и если он в нуле - читает страницу по UART в ОЗУ, а потом пишет её во FLASH. Хорошо бы потом сравнить что записывали, и что получилось.
    Но никак не могу вникнуть. Там используются спецфункции (пишу исключительно на С), вроде в них тоже можно разобраться. Но нет в голове цельной картинки. Никак не сложится И толковой статьи/книжки тоже не нахожу.
    Постоянно попадаются готовые проекты, причём суперуниверсальные, мало того, что из-за этого тяжёлые, но даже и непонятно что там отключать - всё же я не такой крутой программер, и трудно с понималкой, когда функция вызывает функцию, которая в свою очередь вызывает функцию. И все они разбросаны по разным модулям. Так что примеры только запутывают. Например, перед прошивкой надо проверить № версии, чтобы только обновления можно было ставить. Очень простой код, но в тех примерах, что я видел даже не могу понять, куда его вставлять.

    Может кто подскажет, что почитать? Больше даже кулинарный рецепт, т.к. плата уже готова, в ней единственная возможность программировать проц - через бутлоадер (впаивать уже прошитый). А нужна будет отладка на месте, т.е. обновлять прошивку придётся.
    Безо всяких универсальностей и наворотов.
    - Что значит маловато шлюпок?! Не разводите панику, это непотопляемый корабль!
    Томас Эндрюс, конструктор "Титаника"

  2. #2
    Зарегистрировался Аватар для IgorRytch
    Регистрация
    30.08.2025
    Адрес
    Москва
    Сообщений
    17

    По умолчанию Re: BootLoader для ATMega168

    Приветствую! Вы помогли мне с усилком, теперь моя очередь помочь Вам с программой. Спишемся по электронной почте. Напишу.

  3. #3
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    51
    Сообщений
    3,536

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Постоянно попадаются готовые проекты, причём суперуниверсальные, мало того, что из-за этого тяжёлые, но даже и непонятно что там отключать
    Для про рынка они конечно сложные, поскольку надо обеспечить множество свойств, при этом имея стабильность.


    Начинать надо с четкой спецификации, как и что должен делать бутлодырь, как мы строим приложение, как проверяем целостность, что делаем, если целостность не достигнута, где и как приложение хранит номер версии, как построен контейнер, используемое шифрование...
    Помимо бутлодыря потребуется еще и конвертор прошивок (хекс файлов) в во внешний формат бутилодыря, также софт, который заливает.

    Очень давно(лет 15+ назад) у Атмела были пара апнотов с бутлодырем и писишныйм софтом, один под des шифр, другой под aes. Все с исходниками. Как условно простой пример - годно, для коммерческого проекта - надо сильно допиливать. Задача не выходного дня.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  4. #4
    Завсегдатай Аватар для Серый Мыш
    Регистрация
    14.01.2005
    Адрес
    Германия
    Сообщений
    2,015

    По умолчанию Re: BootLoader для ATMega168

    Я б поискал на github. На вскидку: https://github.com/zevero/avr_boot
    Успехов!
    Сергей
    -------
    Снятся людям иногда
    Дорогие провода...

  5. #5
    AudioKiller
    Автор темы
    Аватар для AudioKiller
    Регистрация
    10.02.2005
    Адрес
    Ростов-на-Дону
    Возраст
    61
    Сообщений
    2,485

    По умолчанию Re: BootLoader для ATMega168

    Я так понимаю, что мне нужна специальная софтина и на компе. Не просто программа-терминал, а которая пообщается с бутлоадером, шлёт ему страницы и слушает ответы.


    Цитата Сообщение от IgorRytch Посмотреть сообщение
    моя очередь помочь Вам с программой
    Спасибо


    Цитата Сообщение от Openreel Посмотреть сообщение
    потребуется еще и конвертор прошивок (хекс файлов) в во внешний формат бутилодыря
    Это в смысле, чтобы с компа передавать на проц? Разве сам бутлоадер не понимает хексов?


    Цитата Сообщение от Openreel Посмотреть сообщение
    построен контейнер, используемое шифрование.
    Про это можно подробнее? Что за контейнер и для чего шифрование? Если я подключаюсь проводом непосредственно с ноута к устройству, зачем шифрование?


    Цитата Сообщение от Openreel Посмотреть сообщение
    как проверяем целостность
    Я предполагал читать страницу (128 байт) по ЮАРТу в ОЗУ, писать её во флеш, а потом читать свежезаписанную страницу и сравнивать. Если не совпало - повторить 3 раза. Не помогло - алярм.


    Цитата Сообщение от Openreel Посмотреть сообщение
    где и как приложение хранит номер версии
    В устройстве микросхема памяти для своих нужд. Доступ по I2C. В определённой ячейке записана версия. И она же первой передаётся бутлоадеру. Он сравнивает.


    Цитата Сообщение от Openreel Посмотреть сообщение
    у Атмела были пара апнотов с бутлодырем
    То, что нашёл - фуфло. Может не всё нашёл.
    - Что значит маловато шлюпок?! Не разводите панику, это непотопляемый корабль!
    Томас Эндрюс, конструктор "Титаника"

  6. #6
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    51
    Сообщений
    3,536

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Это в смысле, чтобы с компа передавать на проц? Разве сам бутлоадер не понимает хексов?
    Во взрослом мире никто хексы не шлет. И контроллеры лочит, чтоб прошивку не считали. В детском мире голый хекс тоже не канает - простой вопрос - как ты проверяешь целостность при старте приложения? естественно посчитав crc. значит нужна софтина, которая первый раз посчитает crc на компе и положит его в файл прошивки. Номер версии тоже должен быть в файле прошивки, это обеспечивает компилятор. И таймстамп сборки, на случай если ты забыл поправить версию, или даже не поправлял, а собираешь тестовую. Сам бутлодырь при старте должен проверить целостность себя - без сторонней софтины жизни нет.
    Да и сам хекс файл, кто сказал, что там внутри все данные должны быть отсортированы по адресам?!
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  7. #7
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    63
    Сообщений
    39,130

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Я так понимаю, что мне нужна специальная софтина и на компе. Не просто программа-терминал, а которая пообщается с бутлоадером, шлёт ему страницы и слушает ответы.
    Можно наверное и в DocLite Scrip наваять.
    Вообще, от бутлоадера зависит, если в нем реализовать какой-нибудь протокол передачи файлов, типа Kermet или X/Y/Z-Modem, то можно и программой-терминалом (где есть эти протоколы, например повсеместно используемый TeraTerm).

    P.S. Я давно перешел на другой способ, также не требующий специального софта в компе, но он годится только для микроконтроллеров со своим USB (USB2COM) и наличием места для такого бутлоадера во флеше(было пару раз, что размер бутлоадера даже немного превышал размер самой прошивки).


    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Разве сам бутлоадер не понимает хексов?
    Большинство бутлоадеров понимают .bin a не .hex, но в общем - научить бутлоадер понимать .hex, т.е. делать его преобращование в бинарник "на лету", не ахти какая задача.

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    зачем шифрование?
    Ни к чему, если все это только для себя, без передачи кому-то. Ну или, прошивка не представляет никакой секретности.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  8. #8
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    51
    Сообщений
    3,536

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Я предполагал читать страницу (128 байт) по ЮАРТу в ОЗУ, писать её во флеш, а потом читать свежезаписанную страницу и сравнивать. Если не совпало - повторить 3 раза. Не помогло - алярм.
    Шансы на сбой гораздо выше у процесса передачи данных в микроконтроллер. Надо проверять валидность принятых данных. Если сбой во время записи, то это не алярм, это сразу аминь.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  9. #9
    Зарегистрировался Аватар для IgorRytch
    Регистрация
    30.08.2025
    Адрес
    Москва
    Сообщений
    17

    Круто! Re: BootLoader для ATMega168

    Обычно микроконтроллер имеет в пзу встроенный загрузчик uart, но в случае avr этого нет. Поэтому еще в 2010 году выпустили такое решение : (ссылка скрыта, запрос в лс). Раньше было платным.
    Последний раз редактировалось IgorRytch; 11.11.2025 в 21:03.

  10. #10
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    63
    Сообщений
    39,130

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от IgorRytch Посмотреть сообщение
    Обычно микроконтроллер имеет в пзу встроенный загрузчик uart,
    Ну не "обычно", а "некоторые имеют". И для этого нужен соотв. софт для компа.

    Опять-же - если это для едничного устройства для собственного пользования, то все немного "не так" как когда девайс у пользователя.
    Последний раз редактировалось Alex; 11.11.2025 в 18:36.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  11. #11
    Зарегистрировался Аватар для IgorRytch
    Регистрация
    30.08.2025
    Адрес
    Москва
    Сообщений
    17

    По умолчанию Re: BootLoader для ATMega168

    Alex, уважаю.

  12. #12
    AudioKiller
    Автор темы
    Аватар для AudioKiller
    Регистрация
    10.02.2005
    Адрес
    Ростов-на-Дону
    Возраст
    61
    Сообщений
    2,485

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от Alex Посмотреть сообщение
    Большинство бутлоадеров понимают .bin a не .hex
    Саша, но когда я связываю микроконтроллер с компом через терминал по ЮАРТ, то легко гоняю туда-сюда хексы с данными. Неужели в принципе такая же прога, только бутлоадера (т.е. принимающая числа, являющиеся не числами, а кодами команд) хексы неправильно поймёт?


    Цитата Сообщение от Alex Посмотреть сообщение
    если все это только для себя, без передачи кому-то
    Исключительно


    Цитата Сообщение от Openreel Посмотреть сообщение
    Надо проверять валидность принятых данных. Если сбой во время записи, то это не алярм, это сразу аминь.
    1. Валидность принятых данных - это каждый блок CRC кодом снабжать? Приложение занимает порядка 11 килобайт, его за один приём не передашь.
    2. Т.е. если с первого раза во флеш не прописалось, то повторять смысла нет?
    - Что значит маловато шлюпок?! Не разводите панику, это непотопляемый корабль!
    Томас Эндрюс, конструктор "Титаника"

  13. #13
    PaX PALANTiRA Аватар для EDDiE
    Регистрация
    13.02.2006
    Адрес
    GAZ-A-LAGO
    Сообщений
    13,323

    По умолчанию Re: BootLoader для ATMega168

    adb bootloader, ещё, кстати, есть

  14. #14
    Зарегистрировался Аватар для IgorRytch
    Регистрация
    30.08.2025
    Адрес
    Москва
    Сообщений
    17

    По умолчанию Re: BootLoader для ATMega168

    AudioKiller, почему не используете загрузчик из моей ссылки выше? Желаете разобраться, как оно работает?

    PS. Странные тут люди. Не читают, что "НЕ АРДУИНО", или пытаются андроид в avr засунуть, итд. И этим хотите помочь? Да так ещё больше запутаете... Пожалуйста, пишите только то, в чём уверены. Человеку помощь нужна.
    Последний раз редактировалось IgorRytch; 11.11.2025 в 21:58.

  15. #15
    AudioKiller
    Автор темы
    Аватар для AudioKiller
    Регистрация
    10.02.2005
    Адрес
    Ростов-на-Дону
    Возраст
    61
    Сообщений
    2,485

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от IgorRytch Посмотреть сообщение
    AudioKiller, почему не используете загрузчик из моей ссылки выше?
    Сначала надо разобраться. Вот послезавтра поеду на РосХайЭнд, в поезде и почитаю. За ссылку спасибо.
    - Что значит маловато шлюпок?! Не разводите панику, это непотопляемый корабль!
    Томас Эндрюс, конструктор "Титаника"

  16. #16
    Зарегистрировался Аватар для IgorRytch
    Регистрация
    30.08.2025
    Адрес
    Москва
    Сообщений
    17

    По умолчанию Re: BootLoader для ATMega168

    AudioKiller, в письме расписал все действия по пунктам. Уверен, это не тот вопрос, на который надо тратить время. Удачи Вам!

  17. #17
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    63
    Сообщений
    39,130

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    огда я связываю микроконтроллер с компом через терминал по ЮАРТ, то легко гоняю туда-сюда хексы с данными.
    Хекс - текстовый файл. поэтому его просто гонять терминалов в его обычном режиме. Бинарник так не погоняешь, для этог в терминалах есть специальные протоколы передачи файлов (я упоминал выше - X/Y/X-Modem, etc.)


    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Неужели в принципе такая же прога, только бутлоадера (т.е. принимающая числа, являющиеся не числами, а кодами команд) хексы неправильно поймёт?
    1) Хекс - не код команд, а текстовое представление бинарника.
    2) Бутлоадер поймет хекс, если это в нем прописано - он будет перевдить зхекс в байты и записывать эти байты в память, сразу во флешь или сначала в ОЗУ.
    Или, если ОЗУ много, может сначала как есть, в текстовом хексе записывать в него, а в бинарник преобразовывать при переписывании с ОЗУ во флешь.
    Это потому что хекс занимет в несколько раз больше места чем бинарник.



    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Приложение занимает порядка 11 килобайт, его за один приём не передашь.
    Да, когда флеша больше чем ОЗУ.

    Хотя когда флеша слишком много (минмум вдвое больше чем надо прошивке), иногда пишут в незанятую область флеша, а потом переписывают его уже в рабочую область, но это редко.

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Валидность принятых данных - это каждый блок CRC кодом снабжать?
    Да, хотя бы самой простой. Я встречал случаи, когда кроме КС еще и делали ерификацию (т.е. пересылали принятое обратно в комп со сравнением), но по мне так это уже оверкилл.

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    Исключительно
    Если все только для собственного пользования, то все несколько проще. По крайней мере, не нужно шифрование.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  18. #18
    Завсегдатай Аватар для Станислафф
    Регистрация
    18.10.2007
    Адрес
    Тольятти
    Возраст
    47
    Сообщений
    1,662

    По умолчанию Re: BootLoader для ATMega168

    https://github.com/Optiboot/optiboot

    https://github.com/avrdudes/avrdude

    И чуть чуть настройки

    Этого должно хватить.....
    приму в дар видеокарту ET6000 TsengLabs

  19. #19
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    51
    Сообщений
    3,536

    По умолчанию Re: BootLoader для ATMega168

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    1. Валидность принятых данных - это каждый блок CRC кодом снабжать? Приложение занимает порядка 11 килобайт, его за один приём не передашь.
    2. Т.е. если с первого раза во флеш не прописалось, то повторять смысла нет?
    1. если нужна надежность - однозначно да.
    2. За ~20 лет моего опыта программных сбоев при программировании не замечено. Варианты "передернули питание" или подобное - не считаем. Настоящий бутлодырь никогда не запустит невалидное приложение. Совсем настоящий даже не начнет прошивать приложение не предназначенное для целевой платформы.
    Тем обеспечивается защита от окирпичивания и отчасти борьба с человеческим фактором.

    Насколько это актуально в твоих условиях (цена вопроса сбоя или вероятность сбоя) - ты должен знать сам.

    ---------- Сообщение добавлено 23:56 ---------- Предыдущее сообщение было 23:46 ----------

    Цитата Сообщение от AudioKiller Посмотреть сообщение
    когда я связываю микроконтроллер с компом через терминал по ЮАРТ, то легко гоняю туда-сюда хексы с данными. Неужели в принципе такая же прога, только бутлоадера (т.е. принимающая числа, являющиеся не числами, а кодами команд) хексы неправильно поймёт?
    Если приложение для микроконтроллера делал вменяемый инженер, то оно будет принимать данные без ошибок, просто по определению. Ошибки возникают исключительно из за влияния внешних сил(наводки, EMI, кривое или косячное железо)

    Учебный пример бутлдодыря от атмела http://ww1.microchip.com/downloads/e...es/doc2541.pdf
    Шифрование можешь выкинуть, если оно не нужно.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  20. #20
    Зарегистрировался Аватар для IgorRytch
    Регистрация
    30.08.2025
    Адрес
    Москва
    Сообщений
    17

    По умолчанию Re: BootLoader для ATMega168

    Openreel, простите, а зачем эта информация? Вы думаете, что AudioKiller будет сам писать загрузчик, в нынешнее время? Он уже получил готовый. Осталось его прошить, и пользоваться.


    Offтопик:

    И кстати, Михаил, не хотите ли 19-20 ноября посетить симпозиум, посвященный мировой индустрии звукозаписи академической музыки? В частности, на Мосфильме будет лекция Геннадия Папина, звукорежиссера той самой первой студии, где мы записывали мюзикл. Уникальный шанс!
    https://symposium-sound-pure.com/

    Последний раз редактировалось IgorRytch; 12.11.2025 в 05:34.

Страница 1 из 2 12 Последняя

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •