Итак, успешно замучен бутлоадер для мегаплатки шлюза (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 вольт подвешен при трехвольтовом питании - это хорошо?