Первый вариант данной утилиты создан в те далёкие времена, когда только появились первые микроконтроллеры AVR.
До этого переломного момента разработка программы для микроконтроллера в внутренней памятью программ (на примере PIC) происходила так:
покупался отладочный кристалл с окошком (за аж 70$), паялся (или покупался специальный программатор),
программа писАлась, компилировалась, зашивалась программатором в кристалл, по результатам теста программа правилась, кристалл стирался UV-лампой и т.д.
Сказка про попа и собаку. Всё это происходило очень неспешно с постоянным риском обломать ноги процессора.
Микроконтроллеры АВР появились с внутренней флеш памятью программ и не требовали для программирования
ни специальных напряжений, ни точной времянки.
А так как ресурс стирание/запись их флеша был солидным, то их успех у ембеддеров был предопределён.
Про систему команд даже и не говорю - по кривизне сложно выло переплюнуть тогдашние ПИКи.
Так уж исторически сложилось, что к моменту появления микроконтроллеров AVR
у меня уже был в наличии хвостик для программирования ПЛМ Альтера.
А так как для программирования микроконтроллеров в нём было достаточно сигналов,
то хвостик стал устройством двойного назначения.
Надо сказать, что идея использования альтеровского хвостика пришла в головы многих людей и сейчас это практически стандарт.
Сначала собственной утилите просто не было альтернативы, но позже появился проект Avreal.
При появлении новых процессоров в семействе АВР несколько раз был соблазн
плюнуть на свою разработку и пользоваться "как все" авреалом, но к счастью у меня с ним всегда что-то работало
не так как хотелось, а то и вовсе не работало :-))
Время шло, появилась виндовсХП и программа написанная ещё на турбоси1.0
перестала доставать до ножек порта принтера из-за заслона виртуализации.
Пришлось садиться и разбираться как жить дальше.
На счастье мир не без добрых людей, и в сети был найден Porttalk,
позволяющий лазать под виндовсХП куда заблагорассудится.
Сначала, как водится, был использован халявный вариант запуска своей утилиты из-под портталка.
Но вскоре из-за неудобства и некоей непредсказумости такого подхода было принято решение переписать утилиту так,
чтобы она пользовалась портталком как драйвером.
Пришлось перетаскивать утилиту под вижуалси,
но это было вознаграждено сторицей - стабильность и скорость работы возросли кардинально.
Вниманию предлагается текущий вариант утилиты с исходниками под MSVC2005: avr_isp.
Кое-что, конечно, несколько коряво, но с главной задачей - программированием микроконтроллеров АВР она вполне справляется.
В данный момент поддерживаются AT90S1200, AT90S2333, AT90S4433, ATMega103, AT90S8515, ATMega16, ATMega603, ATMega8, ATTiny13.
Устанавливать утилиту не нужно, она просто запускается с командной строки (ненавижу окошковые программаторы).
Но для её работы требуется установить драйвер порталк.
(Сам драйвер porttalk.sys кладётся в виндовс\систем32\драйверс, а в реестр вносится запись porttalk.reg.)
Пример командной строки для стирания и программирования памяти программ: avr_isp.exe E W xxx.hex
Где E - стирание, а W xxx.hex - запись в память программ xxx.hex.