roboforum.ru

Технический форум по робототехнике.

Бутлоадер для платы шлюза USB-CC2500

Бутлоадер для платы шлюза USB-CC2500

boez » 21 фев 2009, 00:24

Итак, успешно замучен бутлоадер для мегаплатки шлюза (ft232rq+atmega88+cc2500).

К сообщению приаттачен архив с двумя папками - boot-m88 и ledtest. В первой - бутлоадер, тот же самый, что использовал vooon для меги32 минибота. Во второй - тестовая прожка, мигающая светодиодом. Для того, чтобы поиметь щастье и грузить свои проги по юсб, нужно проделать следующее:

Инструкция для счастливых обладателей линуха с gcc-avr или винды с WinAVR:

1. Собрать бутлоадер (опционально). Под линухом для этого нужен пакет gcc-avr, под виндой - WinAVR. Просто набрать make.
Для тех, кто пересобирать не хочет (а оно в принципе не сильно и надо) - там же лежит готовый hex-файл, собранный gcc 4.2.0 для atmega88 с кварцем 7.3728 МГц и скорости порта 115200.
2. Зашить этот бутлоадер в мегу. Для этого поправить в мейкфайле AVRDUDE_PORT и AVRDUDE_PROGRAMMER на соответствующие своему программатору, после чего make program.
3. Поставить фьюзы бутлоадера: Extended Fuse Byte = 0x02.

Инструкция (опять же для счастливых :) ) обладателей всех остальных систем программирования AVR:

1. Зашить boot-m88/main.hex в мегу.
2. Поставить фьюзы бутлоадера: BOOTSZ1=0 (programmed) BOOTSZ0=1 (unprogrammed) BOOTRST=0 (programmed)

Предполагается что остальные фьюзы расставлены правильно и мега успешно тактируется от кварца.

Собственно и все - мы получили платку, способную прошиваться по USB любым AVR109-совместимым программатором.

Для теста можно прошить мигалку светодиодом. Для этого в папке ledtest вписать в мейкфайл правильный порт, соответствующий воткнутому FT232 платки. Далее платку из юсб выдергиваем, вставляем обратно и в течение 5 секунд запускаем make program в той же папке ledtest. Опять же, если другой программатор - то все в нем подготовить и затем после втыкания юсб в течение 5 сек нажать кнопку "Прошить". Если прошивка проходит успешно - то снова передергиваем USB. Платка ждет 5 секунд в бутлоадере и затем весело начинает мигать светодиодом с периодом в 1 секунду. Время ожидания программирования специально увеличено до 5 секунд, т.к. за 1 секунду плата толком даже задетектиться не успевает.

Напоминаю, скорость ком-порта при программировании через бутлоадер нужно выставлять 115200! Если нужна другая скорость и программатор ее менять не умеет по каким-то причинам - пишите, соберу хекс с другой скоростью.

Да, с размером пришлось немножко повозиться. Почему-то у исходного лоадера под мегу8 размер получается меньше килобайта, а под мегу88 - 1100 с лишним байт. Основной причиной такого непотребного поведения оказалось то, что при оптимизации по размеру гцц все равно разматывает функции приема-передачи по уарту в инлайн, а также считает, что несмотря на бесконечный цикл, из main возможен выход. Добавление функциям соответствующих атрибутов помогло загнать непослушный размер в границу килобайта.

Так что 7 килобайт из 8 у нас есть под протоколы обмена по усб и радио. О них мы тоже обязательно поговорим, но попозже :)

ЗЫ а вы считаете что то, что светодиод на +5 вольт подвешен при трехвольтовом питании - это хорошо?
Вложения
boot.tar.bz2
Исходники и готовый hex бутлоадера для меги88.
(14 КиБ) Скачиваний: 53

Re: Бутлоадер для платы шлюза USB-CC2500

galex1981 » 23 авг 2009, 23:28

Пробовал ваш Бутлоадер, залил в Мегу88, попытался прошить, использовал метод: http://roboforum.ru/viewtopic.php?f=58&t=3973&start=105#p78690
Содержимое командного файла:
Код: Выделить всёРазвернуть
@echo Programming...
@pause
@echo S>com10
@avrdude.exe -p m32 -P com10 -b 115200 -c avr911 -u -U flash:w:WRITER.HEX
@pause

Com10 соответственно порт Мегаплаты

Суть такая что avrdude выдает ошибку и конечно не прошивает:

Добавлено спустя 42 секунды:
Почему не может открыть буффер, я не знаю
Вложения
error.JPG

Re: Бутлоадер для платы шлюза USB-CC2500

=DeaD= » 23 авг 2009, 23:32

Судя по тексту ошибки - прошивка не при чем. Проблемы просто с открытием СОМ-порта №10. Попробуй терминалом его открыть - откроет или нет?

Re: Бутлоадер для платы шлюза USB-CC2500

galex1981 » 23 авг 2009, 23:53

Терминалом открывает нормально....

Добавлено спустя 19 минут 17 секунд:
Может быть это чем нибудь поможет, но в той же папке создается файл: com10, в котором записана S. То есть насколько я понял, прогер не видя ком-порта создает его как файл

Re: Бутлоадер для платы шлюза USB-CC2500

=DeaD= » 24 авг 2009, 00:05

Попробуй убери @echo S>com10 и удали файл, проверь - может это потом твой файл мешает программатору?

Re: Бутлоадер для платы шлюза USB-CC2500

galex1981 » 24 авг 2009, 00:20

В общем проблему с портом решил: оказывается avrdude не понимает порты с номером выше 9.
Сейчас плата у меня висит на COM3. Но при программировании avrdude висит:
Вложения
error2.JPG
error2.JPG (4.68 КиБ) Просмотров: 4574

Re: Бутлоадер для платы шлюза USB-CC2500

Duhas » 24 авг 2009, 00:24

а это нормально @avrdude.exe -p m32 -P com10 -b 115200 -c avr911 -u -U flash:w:WRITER.HEX

Re: Бутлоадер для платы шлюза USB-CC2500

galex1981 » 24 авг 2009, 00:26

Блин, не заметил :oops:. Поставил m88:
Код: Выделить всёРазвернуть
@echo Programming...
@pause
@avrdude.exe -p m88 -P com3 -b 9600 -c avr911 -u -U flash:w:WRITER.HEX
@pause

Но проблему не решило :( . Программатор висит...

Re: Бутлоадер для платы шлюза USB-CC2500

Vooon » 24 авг 2009, 01:06

Какой версии avrdude? В 5.8 точно есть код для открытия 10-ого и выше портов.
Там фишка в "\\\\.\\COM%i".

Re: Бутлоадер для платы шлюза USB-CC2500

galex1981 » 24 авг 2009, 02:15

Версия 5.6.
В общем разобрался с висяком программатора - нужно было перед очередным запуском командного файла переконнектить мегаплату к USB
Проблема сейчас в другом: при верификации выдается ошибка верификации, то есть как я понял - прошивка не заливается...
Код: Выделить всёРазвернуть
@echo Programming...
@pause
@echo S>com3
@avrdude.exe -p m88 -P com3 -b 115200 -c avr911 -u -U flash:w:WRITER.HEX
@pause


Добавлено спустя 43 минуты 47 секунд:
Разобрался и с этим, просто неверно выставил фузы :oops:. Всем спасибо за помощь!
Вложения
fuses.JPG

Re: Бутлоадер для платы шлюза USB-CC2500

apaex » 05 мар 2010, 01:53

Отличный материал, большое спасибо!
Жаль, что не указаны источники. Бутлоадер основан на проекте AVRProg-compatible Bootloader версии 0.83

Re: Бутлоадер для платы шлюза USB-CC2500

boez » 05 мар 2010, 12:44

Ну этого особо никто и не скрывал :) В коде упоминание есть. Просто под конец вечера уже как-то не до копирайтов было, радовался что оно заработало и что удалось влезть в 1 килобайт.

Re: Бутлоадер для платы шлюза USB-CC2500

apaex » 05 мар 2010, 20:49

Не, реально круто. Сам бился целый день, почти довел до конца (с размером, правда, не разбирался), а потом нашел твое решение, которое заработало практически сразу!


Rambler\'s Top100 Mail.ru counter