Теория по КМПУ Готовые элементы систем Технологии и хитрости Прочее Магазин Контакты
 

FT232RL: USB-программатор для AVR без дополнительной прошивки


Введение

За что я люблю микросхему FT232RL от конторы FTDI, так это за то, что покупаешь ты ее обычно как преобразователь USB-UART, а бонусом получаешь кучу дополнительных плюшек: битбанг, возможность автоматического управления приемопередатчиком RS485, отдельные выводы для светодиодов Tx и Rx, генератор меандра и т.д. На мой взгляд, эти плюхи отчасти оправдывают совершенно конскую цену на данный чип. Поэтому в предлагаемой заметке я хотел бы более подробно осветить одну из вышеупомянутых фич. Речь пойдет о «врожденной» способности микросхемы FT232 прошивать микроконтроллеры AVR (далее также «МК») по интерфейсу ISP (In-System Programming).

Как известно всем продвинутым мега-гуру от программирования, совсем скоро микроконтроллеры ARM похоронят камни AVR. Известно им это уже на протяжении как минимум пяти лет, при этом AVR-ки особо подыхать не думают (по крайней мере, применительно к русскому сегменту радиолюбительства). Конечно, замещение AVR на ARM постепенно идет, однако темпы его совершенно не такие стремительные, как прогнозируют из месяца в месяц мега-гуру. Оно и понятно – за пятнадцать лет по AVR написаны горы русскоязычной документации, созданы сотни и тысячи любительских проектов, да и ту же ардуину абсолютно нельзя списывать со счетов. С другой стороны, 8-ми битные камни от Atmel’а просты в изучении, существуют в DIP-корпусах (а это, на самом деле, пока еще крайне важно для радиолюбительства) и есть, наверное, в любой конторе, которая торгует электронными запчастями. Думаю, именно поэтому запрос «программатор avr» в поисковиках до сих пор так распространен.

Кому интереснее или удобнее читать оффлайн - вот здесь лежит PDF-вариант заметки от пользователя Adwin


Варианты реализации AVR-программаторов

Отмечу, что сама по себе идея программирования МК по интерфейсу ISP достаточно проста – нам всего лишь нужно подать на выводы «RESET», «MOSI» и «SCK» камня последовательность импульсов, строго соответствующую заливаемой прошивке. По линии «MISO» мы, грубо говоря, контролируем правильность заливки данных. (Обратите внимание на то, что при прошивке микроконтроллер является ведомым устройством, а программатор – ведущим. Именно поэтому пины «RESET», «MOSI» и «SCK» кирпича являются входами, а «MISO» – выходом. Также важным моментом является то, что для входа в режим программирования вывод «RESET» МК должен быть притянут к «массе»). Так вот, любой (любой) ISP-программатор для AVR по своей сути – это просто преобразователь какого-либо стандартного компьютерного интерфейса (LPT, COM, USB) в соответствующие TTL-сигналы «RESET», «MOSI», «MISO» и «SCK». Ну а поскольку из перечисленных интерфейсов на данный момент наиболее распространен USB, то и интересуются люди в основном USB-программаторами:



Надо сказать, что USB-интерфейс является относительно сложной штукой. Во всяком случае, он не дает возможности непосредственно генерить с компа требуемые последовательности импульсов, в отличие от LPT- и COM-интерфейсов. Поэтому USB-программатор – это такая умная херовина, которая умеет переводить пакеты USB-данных в отдельные биты для линий «RESET», «MOSI» и «SCK», а также из импульсов, снимаемых с линии «MISO», формировать пачки USB и отправлять их в комп. И основная задача при проектировании USB-программатора заключается именно в реализации подобной умной штуковины.

Путей здесь на данный момент существует два. Один из них реализует мост USB-ISP на микроконтроллере (обычно – на том же AVR), при этом обработка USB-данных производится программно. Данный подход использует целая вереница широко известных программаторов: USBASP, USBISP, AVR910 и т.д.: имя им – легион. Самая большая проблема таких устройств заключается в том, что для начальной прошивки камня, используемом в программаторе, нам нужен… да-да, AVR-программатор, т.е. такой же дывайс, который мы и делаем. И если для человека, давно занимающегося камнями AVR, это обычно не представляет особой проблемы, то где взять программатор начинающему? Получаем замкнутый круг – для того, чтобы AVR-программатор заработал, нам надо найти AVR-программатор. Универсальный выход из этого круга один – не мучиться самому́, а купить готовый USB-прошивальщик, благо в Китае подобная мелочь сто́ит недорого.

Отмечу, что лично у меня (лично у меня) ни один из самопальных программаторов подобного типа полноценно не заработал: на одном компе всё нормально шьется, а на другом – нет, или на одной системе шьется, а на другой глючит и т.д. При этом большинство знакомых, которым я эти программаторы пото́м отдавал, ни разу не жаловались и были счастливы. Может, у меня такая карма, а может Ктулху виноват – хер его знает, только начал я поглядывать, как еще можно реализовать USB-программатор. И так оказалось, что микросхема FT232RL, которую при работе с МК я давным-давно использовал для преобразования интерфейса USB в UART (ибо с USB разбираться как-то всё недосуг, да и просто лень), предоставляет такую возможность в качестве аж бесплатного бонуса. При этом вся необходимая «прошивка» в FT232RL залита еще на заводе, так что никаких программаторов для начала работы с чипом не требуется (что, повторюсь, весьма и весьма важно для начинающих). И таким образом получаем второй путь реализации USB-программатора для камней AVR – использование аппаратных возможностей микросхемы FT232RL. Именно этот подход и применяется мной на протяжении нескольких лет, и должен сказать – ни разу меня ФТ-шка не подвела.


Общие схемы USB-программаторов на FT232RL

Работа USB-программатора на базе F232RL упрощенно (упрощенно) описывается довольно просто – комп по USB сообщает данной микросхеме, какая именно комбинация сигналов в данный момент должна быть выведена на линии «RESET», «MOSI» и «SCK», а чип, соответственно, выставляет требуемые уровни на данных линиях. По линии «MISO» ведется контроль соответствия прошивки, залитой в камень, ее исходной версии (т.е. той, которая в компе). Отмечу, что скорость прошивания получается достаточно высокой, по крайней мере, по сравнению с COM-портом. При этом каждой из линий «RESET», «MOSI», «MISO» и «SCK» микроконтроллера можно поставить в соответствие любой из восьми «СОМ-овских» выводов микросхемы FT232RL: «TXD», «RXD», «RTS», «CTS», «DTR», «DSR», «DCD» или «RI».

Таким образом, «схема» USB-программатора на данном чипе выглядит совсем уж смешно – в простейшем случае это просто четыре дорожки, которые соединяют ISP-линии камня с соответствующими выводами FT232RL. Один из возможных примеров такого программатора показан на рисунке ниже (приведенное соответствие выводов использовано в модуле Mega8USB-Micro):



Здесь хотелось бы отметить несколько моментов:

•  во-первых, обратите внимание на организацию питания. Как видим, микросхема FT232RL располагает двумя питающими выводами (имеется в виду «плюс» питания): VCC и VCCIO. Вывод VCC служит для питания ядра чипа и при реализации программатора может быть смело подключен прямо к напряжению +5,0В шины USB (коли уж она любезно предоставляет такую возможность). А вот через вывод VCCIO запитывается выходной буфер микросхемы FT232RL, и амплитуда сигналов на «СОМ-овских» линиях ФТ-шки будет равна именно напряжению на данном выводе. Поэтому если подать на VCCIO напряжение питания камня (+VMCU), мы автоматически получим согласование уровней сигналов программатора и микроконтроллера. Допустимый диапазон напряжений питания выходного буфера FT232RL составляет +(1,80…5,25)В, что полностью покрывает потребности 8-ми битных кирпичей AVR;

•  во-вторых, питание на ядро FT232RL (т.е. на вывод VCC) в процессе работы схемы должно подаваться постоянно. В противном случае вывод RESET будет наглухо прибит к «массе» за счет выходного буфера ФТ-шки, а значит, камень не сможет нормально стартовать;

•  ну и в-третьих: под программирующие сигналы действительно могут быть задействованы любые из «СОМ-овских» линий FT232RL («TXD», «RXD», «RTS», «CTS», «DTR», «DSR», «DCD» или «RI»), однако тут есть пара ньюансов. Первый из них состоит в том, что обычно ФТ-шка всё-таки ставится для общения камня с компом по UART, а уж возможность прошивки кирпича является приятным бонусом. Поэтому линии «TXD» и «RXD» под ISP-программирование отводить не рекомендуется. Но этот момент вроде как понятен чисто из бытовой логики. А вот второй ньюанс не столь очевиден. Дело в том, что «СОМ-овские» линии FT232RL по умолчанию имеют конкретные направления передачи данных:

- входы: RXD, RI, DSR, DCD, CTS;

- выходы: TXD, DTR, RTS.

Так вот, в процессе программирования управляющий софт (см. далее) может сделать выходы входами, а входы – выходами, если этого требует схема программатора (например, если линии DTR поставлена в соответствие функция «MISO», то выход DTR будет переведен на вход). Однако, после прошивки направление «СОМ-овских» линий FT232RL вернется в первоначальное состояние. При этом на всех этих выводах будут присутствовать логические единицы (на выходах – сами по себе, а на входах – за счет внутренней подтяжки к «плюсу» питания резисторами порядка 200кОм), причем, как нетрудно догадаться, состояние выходных линий FT232RL микроконтроллером изменить будет нельзя. Поэтому категорически рекомендую в программаторах, использующих прямое подключение FT232RL к камню (как на последнем рисунке), под функции MISO, MOSI и SCK задействовать только входы ФТ-шки (RI, DSR, DCD, CTS). Ну а под служебный RESET можно заюзать как вход, так и выход – один хер, этим сигналом камень обычно не управляет.

Обратите внимание на то, что рассмотренная «схема», в которой используется прямое подключение FT232RL к камню, обычно применяется только во встроенных на плату программаторах. Логика здесь довольно проста: если уж мы проектируем устройство, которое должно общаться с компом по USB через ФТ-шку, то почему бы не сделать его еще и со встроенным прошивальщиком, на который дополнительно не тратится ни копейки? Тем более, что бонусы FT232RL в качестве программатора очевидны:

•  никакого внешнего программатора для прошивки камня использовать не надо, т.е. конечный пользователь получает возможность шить камень прямо по USB (например, заливать в дывайс различные обновления);

•  сигналы ISP можно «раскидать» по «СОМ-овским» линиям так, как нам удобно (данная фича сильно упрощает разводку печатной платы, особенно односторонней);

•  «лишнего» отжирания памяти МК с таким программатором не происходит, т.к. для прошивки не используются бутлоадеры. Это, безусловно, является плюсом. Правда, есть и минус – прошивка заливается в камень в «чистом» виде (т.е. используется оригинальный файл *.hex), так что про различные ее шифрования и защиты можно забыть.

Однако, подобный подход не всегда возможен. Бывает так, что программатор после прошивки должен отключаться от камня для нормальной работы всей схемы (например, это актуально для «внешних» программаторов, которые используются не в конкретном устройстве, а «вообще»). Для этого прошивающий софт позволяет подцепить к FT232RL дополнительный буфер с третьим состоянием или еще какой-нибудь подобный обвес при помощи сигнала «GATE». Данный сигнал во время программирования камня опускается в нуль, причем происходит это до сброса линии «RESET». Поэтому программатор подключается к камню только при прошивке, в остальные же моменты времени выходы программера находятся в третьем состоянии и никак не влияют на работу устройства. Пример схемы с дополнительным выходным буфером на чипе 74HC125 может выглядеть так (соответствие «СОМ-овских» линий FT232RL ISP-сигналам осталось прежним):



Для автоматического согласования уровней сигналов в представленной схеме дополнительный буфер запитан от того же напряжения питания, что и микроконтроллер. Отметим, что микросхемы серии 74HC гарантированно работают только при питании от +2,0В до +6,0В. В связи с этим для значений +VMCU ниже +2,0В (а камни AVR в общем случае могут работать и от +1,8В) в качестве дополнительного буфера необходимо использовать более экзотичные чипы (например, серии 74LVC, специфицированные для питающих напряжений от +1,65В до +5,5В). Обратите также внимание на резистор номиналом 10кОм, подтягивающий линию «GATE» к плюсу питания. Наличие данного резистора дополнительно гарантирует, что буфер будет активен только в моменты прошивки камня. Ну а в остальном приведенная схема полностью повторяет схему с прямым подключением FT232RL к микроконтроллеру.

Теперь, когда мы разобрались, что именно происходит в USB-программаторе с чипом FT232RL на уровне железа, самое время нанести завершающий штрих – рассмотреть программы, которые позволяют компу шить микроконтроллеры AVR.


Софт

Для того, чтобы объяснить микросхеме FT232RL какую именно прошивку и как заливать в камень, нам нужна специальная программа. В качестве таковой в данном случае выступает бесплатная утилита AVR Dude, широко известная в кругах AVR-радиолюбителей как «дудка». Данная программа поддерживает целую кучу камней AVR, а также гору программаторов. Однако, оригинальный вариант AVR Dude не позволяет работать с FT232RL, поэтому я использую допиленную версию. Вдобавок ко всему, дудка является консольной, соответственно, общение с ней ведется при помощи командной строки. Для меня это не очень удобно (имеется ввиду процесс разработки поделки, а не работа с уже́ разработанной партией устройств), поэтому для прошивки камней через AVR Dude я использую графическую оболочку «Sina Prog». Хороша она тем, что во-первых, предоставляет пользователю привычный «виндосовский» интерфейс (т.е. кнопки, окна и т.д.), но самое главное – сама умеет считать фузы для камней AVR. Т.е. просто выбираешь нужный тебе режим работы микроконтроллера, жмешь «Прошить» – и всё, нужный режим работы зальется в кирпич. После нескольких лет «ручного» высчитывания фузов данная фича – просто охеренна. Отмечу также, что утилита AVR Dude входит в состав архива с «SinaProg» (т.к. синапрога является лишь графической оболочкой к дудке), поэтому отдельно ее скачивать не надо.

Работу с программой AVR Dude я описывать не буду (кому надо – оригинальная детальная информация по дудке есть здесь), а вот про SinaProg па́ру слов, пожалуй, сказать нужно. Кстати, сразу оговорю – я использую далеко не самые свежие версии синапроги и дудки, так что для любителей «чтобы обязательно всё было самое наисвежайшее» приводимая далее информация, возможно, будет не сильно полезна. Ну а всех остальных приглашаю вкратце ознакомиться с предлагаемым софтом.

Для начала нам надо скачать SinaProg (если это не было сделано ранее). Далее распаковываем скачанный архив на диск (установки синапрога не требует). Отмечу, что по некоторым сведениям распаковывать SinaProg лучше прямо в корень системного диска, но у меня она годами живет по адресу «D:\Distrib\Work\SinaProg 1.4.5.10» и отлично работает. Далее вставляем программатор в USB-порт компа, устанавливаем дрова для FT232RL (если нужно) и запускаем файл «SinaProg.exe» из папки «SinaProg 1.4.5.10». (Обратите внимание – если вставить программатор после запуска синапроги, то она может начать дурковать).

ВНИМАНИЕ: при попытке запуска синапроги в 64-разрядной версии ОС Windows может возникнуть ошибка, связанная с отсутствием необходимых библиотек от LabView (SinaProg создана именно на нем). Проблема решается установкой фреймворка «LabView RunTime Library» от National Instruments (скачать можно здесь). Причем, после установки его можно сразу снести - синапрога продолжит нормально работать, видимо, требуемые библиотеки при этом не удаляются.

После выполнения вышеуказанных действий на экране мы увидим примерно такое:



С одной стороны, на этом скриншоте вроде всё должно быть интуитивно понятно, а с другой – лишний раз рассказать про очевидное будет, возможно, и полезно. Итак:

0. Очень важный элемент, несмотря на то, что эта кнопка не влияет на процесс программирования камня вообще никак. При нажатии на данную кнопку нам откроется окно, в котором можно полностью проследить, как синапрога обращается к дудке, что та ей отвечает, какие результаты при этом получаются ну и вообще – довольно информативное окно получается. Категорически рекомендую перед началом работы нажать на эту кнопку;

1. Окно выбора программатора. По нажатию на стрелку вываливается список программаторов, поддерживаемых представленным софтом, при этом пользователь может выбрать любой из представленных дывайсов;

2. Порт, к которому подключен программатор. Для случая USB-программеров на базе FT232RL значения могут быть такими: USB, USB1, USB2, USB3. Смысл данного окошка довольно прост. При подключении к компу любого устройства на базе FT232RL система, условно говоря, создает под это подключение «свой» USB-порт. И рассматриваемое окошко служит исключительно для того, чтобы можно было использовать USB-программатор вместе с другими «FT232RL»-ными дывайсами. Простой пример – сначала в комп воткнули преобразователь USB-UART на базе ФТ-шки. Система послушно создала под него порт «USB». Затем к компу подключили USB-ЦАП на том же чипе. Под эту поделку создается порт «USB1». Ну и наконец в комп воткнули USB-программатор на FT232RL. В этом случае скорей всего (скорей всего) под программатор будет создан порт «USB2», который и нужно выбрать в рассматриваемом окне, при этом конфликтов программатора с вышеперечисленными устройствами заведомо не будет.

К сожалению, приведенный выше пример в большинстве случаев является идеальным. На практике комп назначает номера USB-портов новым устройствам на базе FT232RL от балды. С одной стороны, это не особо приятно, т.к. нельзя точно спрогнозировать последствия, а с другой стороны – перебрать четыре порта для того, чтобы узнать, на какой из них подключен программатор, не так уж и сложно. Ну и с третьей стороны – если из всех «FT232RL»-ных устройств к компу подключен только лишь USB-программатор (а именно этот вариант и актуален для подавляющего большинства случаев), то висеть он стопроцентно будет на порте «USB» (безо всяких индексов);

3. Скорость программирования камня. При нажатии на стрелку вывалится целый ворох вариантов скоростей прошивки. Тут, в принципе, всё понятно – чем больше выбранное значение, тем лучше. И в большинстве случаев при длине шлейфа от программатора до прошиваемой платы не более 0,5м программа и фузы успешно заливаются на максимальной скорости (3000000). Однако, бывают случаи когда для нормальной работы программатора скорость прошивания приходится снижать. Так что на первых порах можно ограничиться значением скорости «9600» (при такой скорости глюков не было обнаружено ни разу), а по мере знакомства с «характером» программатора при необходимости постепенно ее повышать.

4. Выбор модели программируемого камня. Ну, тут, думаю, особых пояснений не требуется – просто выбираем нужную модель и щелкаем на ней. Единственный момент – для улучшенных кирпичей (это те, которые с индексом «А», например, ATMega8A, ATMega168PA, ATMega324PA) отдельные позиции создавать нет смысла, поэтому для работы с камнем, например, ATMega8A в списке надо выбрать «ATmega8», для работы с ATMega48A – «ATmega48», для работы с ATMega88PA – «ATmega88P» и т.д.

5. Быстрый поиск выбранного камня. Весьма полезная кнопка. Позволяет сразу проверить, правильно ли введены вышеупомянутые параметры. Лично я обычно делаю так – выбираю программатор, порт и скорость, затем модель камня и жму на «Search». Если всё нормально, и программатору удалось достучаться до кирпича, справа в информационном окне (см. кнопка «>») будет выведено что-нибудь типа:

avrdude: safemode: Fuses OK
RESET ... OK»


Обращаю внимание: только сообщение «Fuses OK» сигнализирует о том, что программатору удачно удалось связаться с камнем. Если этого сообщения нет – значит где-то что-то пошло не так, и надо еще раз всё проверить:



6. Кнопка перехода к работе с фузами. По нажатию на данную кнопку SinaProg вызывает калькулятор фузов для выбранного камня:



Нужные значения конфигурационных битов выставляются в общем случае в окнах «Lock Bits», «High Fuse», «Low Fuse» и «Ext. Fuse». Для установки нужных значений необходимо нажать на кнопку «С» («Calculate») в соответствующем окне. Однако далеко не для всех моделей микроконтроллеров AVR будут доступны все возможные конфигурационные биты. Например, для кирпича ATMega8 окно «Ext. Fuse» будет наглухо заколочено в полном соответствии с даташытом на данный камень. Поэтому давать какие-то общие рекомендации по прошивке фузов для всех микроконтроллеров AVR, поддерживаемых SinaProg довольно сложно. Для каждой конкретной модели камня набор конфигурационных битов будет своим (для того, чтобы точно узнать – каким именно, полезно прочитать даташит на микроконтроллер). Исключение составляют фузы, отвечающие за источник тактовой частоты камня и за время старта (они, кстати, обычно самые популярные). Данные фузы для всех поддерживаемых микроконтроллеров устанавливаются через окно «Low Fuse». После нажатия на кнопку «С» в этом окне, вывалится еще одно окошко, в котором, в частности, можно указать нужный источник тактовой частоты и время старта из довольно нехилого списка, включающего в себя все возможные комбинации:



Еще раз отмечу – вычисление значений фузов (ра́вно как и их прошивка), соответствующих выбранному режиму работы камня, производится автоматически, за что камраду, разработавшему SinaProg нужно сказать огромное спасибо. Повторное считывание фузов, прошитых в камне, осуществляется по кнопке «Read» (при этом все ранее произведенные вычисления будут затерты). Прошить фузы, соответствующие выбранному режиму работы кирпича, можно нажав на кнопку «Write». Ну а кнопка «Chip Erase» предназначена для полного стирания информации, залитой в камень.

7. Окно выбора рабочего файла. Здесь при помощи кнопки «8» можно выбрать файл, который будет шиться в камень. Вообще говоря, это самый странный момент во всей утилите. Странность заключается в том, что нельзя (как, например, в PonyProg) выбрать сразу два файла – один для FLASH-памяти, а другой для EEPROM. Нет, синапрога ограничивает нас одним файлом, а с какой областью памяти МК он будет взаимодействовать – зависит от того, кнопка «Program», «Verify» или «Read» какой секции (Flash или EEPROM) будет нажата. Проще говоря – если нам надо прошить флэш, то нужно выбрать соответствующий файл с расширением *.hex и нажать кнопку «Program» в секции «Flash». Если же нам надо прошить ЕЕПРОМ камня, выбираем файл с расширением *.eep и жмем «Program» в секции «EEPROM».

8. Кнопка, открывающая проводник для выбора рабочего файла (см. пункт 7).

9/10/11. Кнопки, предназначенные для прошивки/проверки/считывания FLASH-памяти камня (см. пункт 7).

12/13/14. Кнопки, предназначенные для прошивки/проверки/считывания EEPROM-памяти камня (см. пункт 7).

Обращаю ваше внимание на то, что функция считывания данных в предлагаемой версии синапроги реализована как-то коряво (детали расследования можно посмотреть тут). С другой стороны, лично мне (как, думаю, и большинству радиолюбителей) программатор нужен только для того, чтобы шить камни. Так что, на мой взгляд, софтина SinaProg со своими основными функциями вполне справляется, ну а мелкие косяки – так у кого их нет? В общем, утилиты AVR Dude и синапрог мною категорически рекомендуются к использованию совместно с программаторами на базе FT232RL, но надо всё-таки помнить о наличии в них некоторых недостатков, описанных выше.


Добавление нового программатора в AVR Dude / SinaProg

Наличие в AVR Dude и SinaProg кучи предустановленных программаторов – это, конечно, хорошо. Но что делать, если нам надо добавить свой собственный? В случае программеров на базе FT232RL этот вопрос является особо актуальным, ибо (как было сказано ранее) соответствие выводов ФТ-шки линиям программирования ISP может быть вообще любым, и нет смысла заранее описывать программаторы «на все случаи жизни». К счастью, упомянутые утилиты позволяют легко добавлять USB-программеры на базе чипа FT232RL в свой список.

Для того, чтобы познакомить дудку и синапрогу со своим свежеиспеченным программатором на базе микросхемы FT232RL нам надо сделать следующее:

•  для начала надо задать соответствие выводов FT232RL линиям программирования ISP в формате дудки. У нее эти выводы кодируются так (почему именно такое соответствие – я не знаю):

TXD: 0;
RXD: 1;
RTS: 2;
CTS: 3;
DTR: 4;
DSR: 5;
DCD: 6;
RI: 7.

Т.е. каждому выводу микросхемы соответствует определенная цифра от 0 до 7;

•  далее надо расписать функциональное назначение линий ISP в соответствии с приведенной кодировкой выводов FT232RL. Например, для вышеприведенной схемы простейшего программатора без буфера будем иметь:

ISP FT232RL AVR Dude
MISO DCD 6
SCK DSR 5
MOSI CTS 3
RESET RI 7
GATES RI 7

Для версии же программатора с дополнительным буфером соответствие будет таким:

ISP FT232RL AVR Dude
MISO DCD 6
SCK DSR 5
MOSI CTS 3
RESET RI 7
GATES DTR 4

Обратите внимание на различия в таблицах. В простейшем программаторе линия «GATE» не используется, поскольку нет дополнительного буфера. Поэтому занимать под нее дополнительный вывод FT232RL как-то негоже (ибо он заведомо никогда не будет использован). В связи с этим для простейшего программатора линии «GATES» и «RESET» объединены ввиду их идентичной функциональности (сброс в нуль при программировании). При таком подходе линия «RESET» просто будет сброшена немного раньше, а отпущена немного позже, чем требуется (за счет формирования дудкой сигнала на выводе «GATE»). Ничего страшного при этом не произойдет, просто процесс прошивки камня займет немного больше времени. А вот в случае использования дополнительного буфера нам нужен как сигнал «RESET», так и сигнал «GATE» в «чистом виде», поэтому и поставлены они в соответствие разным выводам FT232RL;

•  после этого открываем в блокноте файл «avrdude.conf» из папки с SinaProg. В этом файле ищем («Ctrl»+«F») фразу «APU_2». На зов должен отозваться вот такой кусок текста:

programmer
id = "APU_2";
desc = "FT232R Synchronous BitBang";
type = ft245r;
miso = 4;
sck = 2;
mosi = 6;
reset = 5;
gates = 3;
;


•  копируем эти строчки (все 10 штук), а затем вставляем между описаниями уже прописанных программаторов (лучше всего вставлять после программеров на FT232RL, но тут уж дело вкуса);

•  ну а дальше правим вставленный кусок кода под свои нужды (обратите внимание – изменениям должны подвергнуться только строки №№ 2, 5-9; строки №1, 3, 4 и 10 трогать не нужно). Если обозвать простейший программатор «USBProg», а программатор с буфером «USBProgBuf», то соответствующие куски исправленного кода будут выглядеть так:

programmer
id = "USBProg";
desc = "FT232R Synchronous BitBang";
type = ft245r;
miso = 6;
sck = 5;
mosi = 3;
reset = 7;
gates = 7;
;


programmer
id = "USBProgBuf";
desc = "FT232R Synchronous BitBang";
type = ft245r;
miso = 6;
sck = 5;
mosi = 3;
reset = 7;
gates = 4;
;


•  работа непосредственно с дудкой на этом закончена. Сохраняем и закрываем файл avrdude.conf». Теперь нужно рассказать про новый программатор синапроге. Открываем в блокноте файл «Programmer.txt» из папки с SinaProg и вставляем в открывшийся список программеров (в любое место) имя нашего нового дывайса – USBProg и/или USBProgBuf. Сохраняем и закрываем файл «Programmer.txt»;

•  открываем в блокноте файл «Port.txt» из папки с SinaProg. В данном файле описывается сколько и каких именно портов будет соответствовать нашему новому программатору. Рекомендую тупо скопировать кусок готового текста для USB-программатора «APU_2», а затем заменить во вставленном куске «APU_2» на «USBProg» или «USBProgBuf», в зависимости от описываемого программатора (обратите внимание – после названия программатора ОБЯЗАТЕЛЬНО должна стоять точка!). После этого текущий файл нужно сохранить и закрыть;

Ну и можно себя поздравить – новый программатор добавлен в AVR Dude и SinaProg. Чтобы в этом убедиться, нужно зайти в синапрогу, выбрать свежий программатор и попробовать прошить им какой-нибудь камень. Ну а у меня на сегодня всё. Желаю удачи при прошивке микроконтроллеров AVR!

Обсудить эту заметку можно здесь



Место для разного (сдается)

 




Создание, "дизайн", содержание "сайта": podkassetnik
Для писем и газет: Почта России электрическая

Место для © (копирайта, понятно, нет, но ссылайтесь хотя бы на первоисточник)

Since 2013 и до наших дней