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
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение =DeaD= » 23 авг 2009, 23:32

Судя по тексту ошибки - прошивка не при чем. Проблемы просто с открытием СОМ-порта №10. Попробуй терминалом его открыть - откроет или нет?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение galex1981 » 23 авг 2009, 23:53

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

Добавлено спустя 19 минут 17 секунд:
Может быть это чем нибудь поможет, но в той же папке создается файл: com10, в котором записана S. То есть насколько я понял, прогер не видя ком-порта создает его как файл
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение =DeaD= » 24 авг 2009, 00:05

Попробуй убери @echo S>com10 и удали файл, проверь - может это потом твой файл мешает программатору?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение galex1981 » 24 авг 2009, 00:20

В общем проблему с портом решил: оказывается avrdude не понимает порты с номером выше 9.
Сейчас плата у меня висит на COM3. Но при программировании avrdude висит:
Вложения
error2.JPG
error2.JPG (4.68 КиБ) Просмотров: 4382
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение Duhas » 24 авг 2009, 00:24

а это нормально @avrdude.exe -p m32 -P com10 -b 115200 -c avr911 -u -U flash:w:WRITER.HEX
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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

Но проблему не решило :( . Программатор висит...
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение Vooon » 24 авг 2009, 01:06

Какой версии avrdude? В 5.8 точно есть код для открытия 10-ого и выше портов.
Там фишка в "\\\\.\\COM%i".
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение apaex » 05 мар 2010, 01:53

Отличный материал, большое спасибо!
Жаль, что не указаны источники. Бутлоадер основан на проекте AVRProg-compatible Bootloader версии 0.83
Аватара пользователя
apaex
 
Сообщения: 2
Зарегистрирован: 18 окт 2009, 21:28
Откуда: Краснодар
Skype: pavel_a_anufrikov
ФИО: Павел А.Ануфриков

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

Сообщение boez » 05 мар 2010, 12:44

Ну этого особо никто и не скрывал :) В коде упоминание есть. Просто под конец вечера уже как-то не до копирайтов было, радовался что оно заработало и что удалось влезть в 1 килобайт.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение apaex » 05 мар 2010, 20:49

Не, реально круто. Сам бился целый день, почти довел до конца (с размером, правда, не разбирался), а потом нашел твое решение, которое заработало практически сразу!
Аватара пользователя
apaex
 
Сообщения: 2
Зарегистрирован: 18 окт 2009, 21:28
Откуда: Краснодар
Skype: pavel_a_anufrikov
ФИО: Павел А.Ануфриков


Вернуться в МиниБот — национальный класс роботов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2