Если интересно - пишите на почту. Вышлю.
Консольный бутлоадер. Ничего лишнего. Имеется графическая оболочка, но она вызввает консоль.
Бутлоадер прозрачен, т.е. по сбросу запускается основная программа с адреса 0.
Бутлоадер запускается тогда, когда сначала запускается консоль. Консоль начинает
ждать в указаном COM порте ответ от бутлоадера. Запустив консоль, нужно сбросить контроллер.
Тогда консоль свяжется с бутлоадером и начнется программирование.
Если нужна перекомпиляция:
1. Открываем проект а AVRStudio
2. В файле BOOTLOAD.ASM правим строки:
.equ STX_PORT = PORTD |
.equ STX_DDR = DDRD | - для TXD прописываем порт и номер пина
.equ STX = PD1 |
.equ SRX_PIN = PIND |
.equ SRX_PORT = PORTD | - для RXD прописываем порт и номер пина
.equ SRX = PD0 |
3. Компилируем. Шьем полученый HEX, устанавливая фьюзы в 0 bootrst, bootsz0, bootsz1.
Если перекомпиляция не нужна, то берем в директории HostSide нужный hex - файл и шьем его, устанавливая фьюзы в 0 bootrst, bootsz0, bootsz1.
Далее в директории PCSide запускаем батник FBOOT.BAT с текстом:
fboot17.exe -b38400 -c2 -pLCD_INT.hex -vLCD_INT.hex
где
-b38400 - битрейт
-c2 - номер сом - порта
-pLCD_INT.hex - файл для программирования
-vLCD_INT.hex - файл для проверки
Запускается программа fboot17.exe. Далее надо нажать RESET контроллера.
Отчет выглядит так:
D:\8051\AVR\bootloader\PCSide\fboot17.exe -b57600 -c2 -pLCD_INT.hex -vLCD_INT.hex
COM 2 at 38400 Baud: Connected
Bootloader V2.1
Target: 1E9702 ATmega128L
Buffer: 1024 Byte
Size available: 130048 Byte
Program LCD_INT.hex: 00000 - 02271 successful
Verify LCD_INT.hex: 00000 - 02271 successful
CRC: o.k.
Elapsed time: 5.71 seconds
Если контроллер не опознан (Target: 1E9702 ATmega128L, хотя это и не обязательно), то ручками правим файл FBOOT17.DEF:
прописываем сигнатуру в виде:
1e9702 : ATmega128L
Сигнатура выводится программой в любом случае.
http://www.societyofrobots.com/bootloader_50_robot.shtml