Не шьётся левый boot, вопрос знатокам AVR

icms
Offline
Зарегистрирован: 22.03.2011

История такая. потребовалось мне залить в мегу чужую програмку , компилировал в 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 всё мигает, работает.

Мега живая родной бутлоадер зашивает и работает.

Как так, понимаю что вопрос сложный , но может кто сталкивался.

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Вопрос не сложный, если вы ставите перед собой задачу проверить шьётся МК или нет - дуде вам в консоли говорит, что произошло: прошилось/не прошилось, верифицировалось или нед...

icms
Offline
Зарегистрирован: 22.03.2011

 Понимаю много текста , но я написал, указал что камень(mega 2560) зашивается успешно, со стороны дюды нет ошибок, но не работает заведомо рабочий код который работает на других процессорах(mega168)

leshak
Offline
Зарегистрирован: 29.09.2011

Погодте. А вы 168 и 2560 шьете одной и той же прошивкой? Один и тот же .hex заливаете в разные камни?

icms
Offline
Зарегистрирован: 22.03.2011

Да нет я на этих прошивка уже табун лошадей съел(произвожу для работы контроллеры на базе ардуино, сам платы делаю сам паяю , сам шью)

конечно прошивки разные вернее makefile разные и так по мелочам.

Если есть у ког проверенный hex с makefile для mega2560 так чтобы в порт чё слал имигал. Может я действительно чего то не учитываю, хотя получается в 2 прогах ошибаюсь, странно.

может что makefile& вот он (немного укороченный, мусор немного выкинул)

 

icms
Offline
Зарегистрирован: 22.03.2011

Решил проверить фьюзы, вот что выдаёт.

C:\WinAVR-20100110\bin\avrdude.exe -C C:\WinAVR-20100110\bin\avrdude.conf -p m2560 -P com6 -c stk500v1 -b19200 -U efuse:v:0xFF:m -U hfuse:v:0x99:m -U lfuse:v:0x65:m
 
avrdude.exe: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.06s
 
avrdude.exe: Device signature = 0x1e9801
avrdude.exe: verifying efuse memory against 0xFF:
avrdude.exe: load data efuse data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip efuse data:
 
Reading | ################################################## | 100% 0.02s
 
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xff != 0xfd
avrdude.exe: verification error; content mismatch
 
avrdude.exe done.  Thank you.

 

Складывается такое впечатление что не туда по адресу шьёт, не в начало, потом идёт наложение и сбой.

 

 

Клапауций
Offline
Зарегистрирован: 10.02.2013
1avrdude.exe: verifying ...
2avrdude.exe: verification error, first mismatch at byte 0x0000
3             0xff != 0xfd
4avrdude.exe: verification error; content mismatch

Было у меня подобное при попытке верификации залоченного МК.

Что нужно сделать:

- фьюзы считать реально, а не глючно и сравнить записанное с записываемым:
пример:
avrdude -p ATtiny2313 -c stk500v2 -U lfuse:r:lfuse.txt:h -U hfuse:r:hfuse.txt:h
- стереть МК полностью.
- прошить фьюзы, соответвующие размеру лоадера.*
- залить лоадер.
- залочить лоадер(иногда бывает не нужно).
 
*подозреваю, что где-то здесь кроется проблема - лоадер не помещается полностью в защищённую загрузочную область и, впоследствии, перезаписывается при заливке скетча.
icms
Offline
Зарегистрирован: 22.03.2011

На данный момент наверное 90% уверенность что всё дело в родном бутлоадере и втом что для прошивки я использую арду как isp программатор с stk500v1. Идея таже, родной бутлодер в связке с програмтором -мешает прошивке, шьёт не туда.

icms
Offline
Зарегистрирован: 22.03.2011

Считал  всё содержимое памяти 2560, как и прдпологал аруевский бут на месте в конце памяти, моя прога в начале. В общем там полная каша. Пытался почистить дудкой -е результат удивил всё осталось на своих местах.

 

Есть какой вариант почистить всё под ноль? заодно чтобы и фьюзы на заводские стали.

меня там беспокоят фьюзы , добраться к ним из дудки почемуто не получилось

BOOTSZ1 2

BOOTSZ0 1

BOOTRST

Клапауций
Offline
Зарегистрирован: 10.02.2013

icms пишет:
Есть какой вариант почистить всё под ноль? заодно чтобы и фьюзы на заводские стали.

Единственный: avrdude -p ATtiny2313 -c stk500v2 -e

локи снимутся, фьюзы настроек платы дуино останутся - зачем их сбрасывать?

icms
Offline
Зарегистрирован: 22.03.2011

ФУУУУУУх

начнём сначала.

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 стандартный.

Вот как то так.

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

icms пишет:

ФУУУУУУх

начнём сначала.

Можно было бы промолчать, если бы не услышал много странного от топиктартера.

icms пишет:

1. avrdude  -e не вытирает память а только убирает указатели, как на компе стёрли название файла значит его нет а он на месте, а мегах таже фигня, вероятно экономят циклы записи.

Хитрецы какие - циклы они экономят, стирать не стирает и стёртые программы работают.

icms пишет:

2. Далеко не каждую програмулину можно записать как бут, есть элементарное ораничение размер у меня мега2560 так там 8к я лил 11к. Ко всему прочему арда использует адрес старта лоадера.

Размер секции загрузки настраивается фьюзами BOOTSZ0 и BOOTSZ1 микроконтроллера, старт программы с адреса $0000(без лоадера) или c $F000(с лоадером) настраивается фьюзом BOOTRST.

*программу бесконечного размера невозможно записать нивкуда.(КО)

icms пишет:

3. Для того чтобы в арду HEX файл(не как бутлоадер, а просто как программу)  использовать arduino as isp програматор не не нужно. Т.е. вторая арда не нужна. Льётся всё через обычный порт чаще всего это usb.

[картинко маслом - я и мой друг КО гордо смотрим в резко обрывающийся вниз горизонт светлого будущего...]

Стесняюсь спросить, что за лоадер то в дуину заливался - цель танцев сбубном, если блинк программатором придётся заливать?

icms пишет:

Но тут тоже не всё просто , конечно понятно что загрузка будет с помощью averdude, но с параметрами всё очень как не просто!

На просторах наших ардииноманов вариантов хватает, да и сам лил дудкой неоднократно, аднако факт остаётся фактом советы не помогли , дудка файл не лила. В основном ошибка связи с программатором.

Ну, и хрен с ним, если не помогли... [и не помогут, потому как нед никакого дуино и не было никогда - есть МК, запаянный в отладочную плату!]

Клапауций
Offline
Зарегистрирован: 10.02.2013

Вопрос по Xloader.

Он же использует родной загрузчик дуины - как у вас получается использовать его с загрузчиками отличными от оригинального?

icms
Offline
Зарегистрирован: 22.03.2011

Клапауций ну вы прям уж извините тролите.

Программы затёртые -е не работают, я такого не писал, я писал что они остаются в памяти, можете это легко проверить.

Какой бы bootsz для mega2560 вы не настроили бутлоадер не будет дольше 8к.

а по вашему лоадер это обязательно програ для общения с другими устройствами для прошивки программирования? можно придумать задачу и по забавней.

А вот xloader работает так изначально автор кода предусмотрел совместимость с загрузчиком ардуино.

вы конечно помогли мне своими комментариями , направили мысли в нужное русло(немного), но всё таки этот форум технический и трололо здесь устраивать не нужно

Клапауций
Offline
Зарегистрирован: 10.02.2013

icms пишет:
Клапауций ну вы прям уж извините тролите.

Неправда.

icms пишет:
Программы затёртые -е не работают, я такого не писал, я писал что они остаются в памяти, можете это легко проверить.

Как проверить?

icms пишет:
Какой бы bootsz для mega2560 вы не настроили бутлоадер не будет дольше 8к.

Конечно - написано такое в даташите и по всему инету в виде страданий авторов загрузчиков, что как бы классный загрузчик(мог бы быть), но не влезет...

icms пишет:
а по вашему лоадер это обязательно програ для общения с другими устройствами для прошивки программирования? можно придумать задачу и по забавней.

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

icms пишет:
А вот xloader работает так изначально автор кода предусмотрел совместимость с загрузчиком ардуино.

Если вместо загрузчика дуино записана "забавная" программа, то откуда xloader берёт загрузчик дуино?

Можно просто шить МК без загрузчика?

icms пишет:
вы конечно помогли мне своими комментариями , направили мысли в нужное русло(немного), но всё таки этот форум технический и трололо здесь устраивать не нужно

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