Не шьётся левый boot, вопрос знатокам AVR
- Войдите на сайт для отправки комментариев
История такая. потребовалось мне залить в мегу чужую програмку , компилировал в hex сам в PN winawr(сразу скажу програмка не маленькая и переделке в среду ардуино не подлежит из за некоторых ограничений ardino ide - железо) .
Шью с по мошью arduino isp (контроллер arduino nano v3 atmega328) испробывал разные варианты из arduino ide , из PN(programers notepad) входит в состав winavr. После небольших танцев с бубном всё залилось без ошибок.
Но вот незадача прога явно не работает, порт молчит(програмка при старте должна плевать по usart отчётом о начале работы), ещё на что обратил внимание наш led pin (portb 7) в high состоянии т.е. светик горит и не мигает даже при нажатии reset. Ну думаю забугорные ребята подкололи с прогой.
Придумываю проверку - самый просстой blink на С (для надёжности долблю сразу весь порт Б), компилирую опять таки заливаю разными способами. Результат тот же. Лед горит, порт пустой.Прогу проверил на arduino pro mini atmega168 всё мигает, работает.
Мега живая родной бутлоадер зашивает и работает.
Как так, понимаю что вопрос сложный , но может кто сталкивался.
Вопрос не сложный, если вы ставите перед собой задачу проверить шьётся МК или нет - дуде вам в консоли говорит, что произошло: прошилось/не прошилось, верифицировалось или нед...
Понимаю много текста , но я написал, указал что камень(mega 2560) зашивается успешно, со стороны дюды нет ошибок, но не работает заведомо рабочий код который работает на других процессорах(mega168)
Погодте. А вы 168 и 2560 шьете одной и той же прошивкой? Один и тот же .hex заливаете в разные камни?
Да нет я на этих прошивка уже табун лошадей съел(произвожу для работы контроллеры на базе ардуино, сам платы делаю сам паяю , сам шью)
конечно прошивки разные вернее makefile разные и так по мелочам.
Если есть у ког проверенный hex с makefile для mega2560 так чтобы в порт чё слал имигал. Может я действительно чего то не учитываю, хотя получается в 2 прогах ошибаюсь, странно.
может что makefile& вот он (немного укороченный, мусор немного выкинул)
Решил проверить фьюзы, вот что выдаёт.
Складывается такое впечатление что не туда по адресу шьёт, не в начало, потом идёт наложение и сбой.
Было у меня подобное при попытке верификации залоченного МК.
Что нужно сделать:
На данный момент наверное 90% уверенность что всё дело в родном бутлоадере и втом что для прошивки я использую арду как isp программатор с stk500v1. Идея таже, родной бутлодер в связке с програмтором -мешает прошивке, шьёт не туда.
Считал всё содержимое памяти 2560, как и прдпологал аруевский бут на месте в конце памяти, моя прога в начале. В общем там полная каша. Пытался почистить дудкой -е результат удивил всё осталось на своих местах.
Есть какой вариант почистить всё под ноль? заодно чтобы и фьюзы на заводские стали.
меня там беспокоят фьюзы , добраться к ним из дудки почемуто не получилось
BOOTSZ1 2
BOOTSZ0 1
BOOTRST
Единственный: avrdude -p ATtiny2313 -c stk500v2 -e
локи снимутся, фьюзы настроек платы дуино останутся - зачем их сбрасывать?
ФУУУУУУх
начнём сначала.
1. avrdude -e не вытирает память а только убирает указатели, как на компе стёрли название файла значит его нет а он на месте, а мегах таже фигня, вероятно экономят циклы записи.
2. Далеко не каждую програмулину можно записать как бут, есть элементарное ораничение размер у меня мега2560 так там 8к я лил 11к. Ко всему прочему арда использует адрес старта лоадера.
3. Для того чтобы в арду HEX файл(не как бутлоадер, а просто как программу) использовать arduino as isp програматор не не нужно. Т.е. вторая арда не нужна. Льётся всё через обычный порт чаще всего это usb.
Но тут тоже не всё просто , конечно понятно что загрузка будет с помощью averdude, но с параметрами всё очень как не просто!
На просторах наших ардииноманов вариантов хватает, да и сам лил дудкой неоднократно, аднако факт остаётся фактом советы не помогли , дудка файл не лила. В основном ошибка связи с программатором.
Связался даже с разрабом того злосчастного кода который пытался залить, он написал что из под линукса всё льётся отлично.
Нарыл наконец таки 2 програмули которые всётаки осилили данную задачу.
Xloader и ArduinoUploader
http://xloader.russemotto.com/ сайт программки и ссылка на скачивание http://xloader.russemotto.com/XLoader.zip
http://www.ngcoders.com/downloads/arduino-hex-uploader-and-programmer/ ссылка на скачивание http://www.ngcoders.com/?dl_id=13
Xloader сработал сразу без лишних танцев.
ArduinoUploder пришлось в параметрах дудки ручками дописывать скорость и прписывать свой камень так как список там совсем небольшой, а avr.conf стандартный.
Вот как то так.
ФУУУУУУх
начнём сначала.
Можно было бы промолчать, если бы не услышал много странного от топиктартера.
1. avrdude -e не вытирает память а только убирает указатели, как на компе стёрли название файла значит его нет а он на месте, а мегах таже фигня, вероятно экономят циклы записи.
Хитрецы какие - циклы они экономят, стирать не стирает и стёртые программы работают.
2. Далеко не каждую програмулину можно записать как бут, есть элементарное ораничение размер у меня мега2560 так там 8к я лил 11к. Ко всему прочему арда использует адрес старта лоадера.
Размер секции загрузки настраивается фьюзами BOOTSZ0 и BOOTSZ1 микроконтроллера, старт программы с адреса $0000(без лоадера) или c $F000(с лоадером) настраивается фьюзом BOOTRST.
*программу бесконечного размера невозможно записать нивкуда.(КО)
3. Для того чтобы в арду HEX файл(не как бутлоадер, а просто как программу) использовать arduino as isp програматор не не нужно. Т.е. вторая арда не нужна. Льётся всё через обычный порт чаще всего это usb.
[картинко маслом - я и мой друг КО гордо смотрим в резко обрывающийся вниз горизонт светлого будущего...]
Стесняюсь спросить, что за лоадер то в дуину заливался - цель танцев сбубном, если блинк программатором придётся заливать?
Но тут тоже не всё просто , конечно понятно что загрузка будет с помощью averdude, но с параметрами всё очень как не просто!
На просторах наших ардииноманов вариантов хватает, да и сам лил дудкой неоднократно, аднако факт остаётся фактом советы не помогли , дудка файл не лила. В основном ошибка связи с программатором.
Ну, и хрен с ним, если не помогли... [и не помогут, потому как нед никакого дуино и не было никогда - есть МК, запаянный в отладочную плату!]
Вопрос по Xloader.
Он же использует родной загрузчик дуины - как у вас получается использовать его с загрузчиками отличными от оригинального?
Клапауций ну вы прям уж извините тролите.
Программы затёртые -е не работают, я такого не писал, я писал что они остаются в памяти, можете это легко проверить.
Какой бы bootsz для mega2560 вы не настроили бутлоадер не будет дольше 8к.
а по вашему лоадер это обязательно програ для общения с другими устройствами для прошивки программирования? можно придумать задачу и по забавней.
А вот xloader работает так изначально автор кода предусмотрел совместимость с загрузчиком ардуино.
вы конечно помогли мне своими комментариями , направили мысли в нужное русло(немного), но всё таки этот форум технический и трололо здесь устраивать не нужно
Неправда.
Как проверить?
Конечно - написано такое в даташите и по всему инету в виде страданий авторов загрузчиков, что как бы классный загрузчик(мог бы быть), но не влезет...
Не обязательно для прошивки но, если вы не предусмотрели в программе загрузчика событие выхода из загрузчика(обычно это кнопка или таймер), то так и будете сидеть в нём(программе, ограниченной размером загрузочной секции) вечно, остальной кусок флеша вам будет доступен для записи и чтения, но не для загрузки исполняемого кода МК.
Если вместо загрузчика дуино записана "забавная" программа, то откуда xloader берёт загрузчик дуино?
Можно просто шить МК без загрузчика?
Ну, не знаю - загрузчик вы не прошили, почему дуде ошибки верификации выдаёт - не выяснили, как Arduino IDE умудряется дудкой правильно писать флеш и верифицировать - остаётся загадкой.