Страницы

воскресенье, 9 мая 2010 г.

Настройка программатора FT232RL в Linux Ubuntu


Настройка программатора AVR на базе микросхемы фирмы FDTI FT232RL в Ubuntu 10.04
Перенесенные заметки. Без редакции.

0. Подготовка Ubuntu к компиляции программ
sudo apt-get install patch build-essential libreadline-dev libncurses-dev libusb-dev
sudo apt-get build-dep avrdude avrdude-doc
это установить последнюю версию программы avrdude-5.10 но она не поддерживает ft232rl

0. Подготовка папки, в которой будет компилироваться и существовать программатор avrdude
cd ~
mkdir avrdude
cd avrdude - переходим в папку

0. Загрузка исходников программы avrdude с сайта:
http://ftp.twaren.net/Unix/NonGNU/avrdude/
Для наших целей подходит версия 5.8
wget http://ftp.twaren.net/Unix/NonGNU/avrdude/avrdude-5.8.tar.gz

0. Извлечение архива программы avrdude
tar xzf avrdude-5.8.tar.gz
cd avrdude-5.8

0. Применение патчей для версии 5.8
Иные версии не патчаться автоматически.
Загружаем:
for i in 8 7 6 5 4 3 2 1 0; do wget -O patch-$i.diff http://savannah.nongnu.org/patch/download.php?file_id=1851$i; done
Применяем(патчим):
for file in patch-*.diff; do patch -p0 < $file; done
Все происходит в катологе исходных кодов программы avrdude-5.8

0. Загрузка специального драйвера D2XX для микросхемы FT232RL с сайта фирмы FTDI.
Специальный драйвер для режим Bitbang - прямого управления пинами микросхемы
Для 32-bit Ubuntu linux
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16.tar.gz
Все происходит в катологе исходных кодов программы avrdude-5.8
Для 64-bit Ubuntu Linux
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16_x86_64.tar.gz

0. Извлечение драйвера и настройка драйвера
tar xzf libftd2xx*.tar.gz
cp libftd2xx*/static_lib/* .
cp libftd2xx*/*.h .
cp libftd2xx*/*.cfg .

Помещаем библиотеку драйвера в /usr/local/lib и настраиваем на нее ссылки:
cp libftd2xx.so.0.4.16 /usr/local/lib
cd /usr/local/lib
ln -s libftd2xx.so.0.4.16 libftd2xx.so.0

cd /usr/lib
ln -s /usr/local/lib/libftd2xx.so.0.4.16 libftd2xx.so.0


0.
./configure

0. Редактирование Makefile

   1. Найти строку CFLAGS = -g -O2 и заменить ее строкой CFLAGS = -g -O2 -DHAVE_LIBUSB -DSUPPORT_FT245R.
   2. Найти строку LIBS = -lreadline -lncurses -ltermcap и заменить ее строкой
 LIBS = -lreadline -lncurses -ltermcap ./libftd2xx.a.0.4.16 -lrt.

0. Сборка программы
make

0. Перед запуском
Так как, в linux ядре, встроен драйвер для микросхемы FTDI FT232RL в качестве
usb-serial интерфейса, перед запуском программы надо выгрузить из памяти модули
этого стандартного драйвера
rmmod fdti_sio
rmmod usbserial

это надо делать после каждой перезагрузки


0. Запуск программы
Запуск программы производится из под root

sudo ./avrdude -C avrdude.conf -c duemilanove -P ft0 -p m16

опция -p m16 - это для микроконтроллера m16


Вывод программы должен напоминать следующее:
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK

 ft245r:  bitclk 230400 -> ft baud 115200
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Можно прошить микроконтроллер загрузчиком (bootloader) и после этого применять
загрузку пользовательской программы используя обычный
программатор -P avr109 через последовательный порт и с последней версией avrdude-5.10
Работает также из под обычного пользователя

Помни - загрузчик работает ограниченное время после установки bootloaderа


avrdude -c avr109 -P /dev/ttyUSB0 -p m16
Вывод:
Connecting to programmer: .
Found programmer: Id = "AVRBOOT"; type = S
    Software Version = 0.8; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x75

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403

avrdude done.  Thank you.

0. Прошивка микроконтроллера с уже установленным загрузчиком.

Нажать кнопку ресет
Сразу выполнить команду:
avrdude -c avr109 -P /dev/ttyUSB0 -p m16

Операция чтения памяти микроконтроллера и записи в файл на диске:
avrdude -c avr109 -P /dev/ttyUSB0 -p m16 -U flash:r:read.hex:i
Будет считан и записан файл read.hex в формате intel hex (опция формата - i), другие форматы -h - шестнадцатиричное представление, b - бинарное
и т.п.

Операция записи в память микроконтроллера файла прошивки:
avrdude -c avr109 -P /dev/ttyUSB0 -p m16 -U flash:w:write.hex:a
опция a - автоопределение формата




0. Работа с портом (Serial terminal)
Есть очень удобные простые программы для обмена данными с микроконтроллером
по последовательному порту, некоторые представляют собой графические приложения
cutecom
microcom
moserial - используется
minicom

ser2net - демон, принимающий соединяния через TCP и переправляющий их в последовательный порт. Вещь. Может использоваться как удаленный доступ к
микроконтроллеру.


0. Подготовка программы на ассемблере
Ассемблер avra не совмем понимает макрокоманды ассемблера из avr-studio и поэтому в файле определений микроконтроллера пришлось
внести изменения (убрать все ненужные макрокоманды, благо их там не так много).
Также для байтовых массивов требуется четное выравнивание байт на каждой линии. Пришлось подправить исходник.



Справочно:
Схему программатора можно взять здесь:
http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html

Исходное руководство:
http://doswa.com/blog/2009/12/20/avrdude-58-with-ftdi-bitbang-patch-on-linux/

Описание на русском программы программатора:
http://mcontroller.opentomsk.net/index.php/Avrdude