Поиск по этому блогу

четверг, 20 сентября 2012 г.

USB программатор для AVR Atmega на основе чипа FT232RL, который не нуждается в собственной прошивке, безумно быстр, надёжен и красив внешне и о том, как потом настроить программу avrdude 5.11.1 в операционной системе linux, и о том почему это хорошо и что из этого вышло.

Сначала идём к DiHalt'у на страничку и в точности повторяем схему >>> http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html

возвращаемся сюда и настраиваем avrdude для работы с свежепостроенным девайсом по посту ниже или по ссылке >> http://doswa.com/2010/08/24/avrdude-5-10-with-ftdi-bitbang.html

Ахтунги!!! ссылку на аглицком я поправил в соответствии с нашей железкой - в оригинале немного не такая конфигурация выводов :)

avrdude 5.10 with ftdi bitbang on linux :: 24 aug 2010


Programming an ATmega168 using SparkFun's FTDI Basic Breakout. This guide works for other FT232R-based devices as well.
First, install the dependencies. On Ubuntu 10.04, this should take care of all of them:
sudo apt-get install patch build-essential libreadline-dev libncurses-dev libusb-dev libftdi-dev automake autoconf bison flex
sudo apt-get build-dep avrdude avrdude-doc
Next, create a working directory for the build and cd into it:
mkdir avrdude
cd avrdude
Now download the D2xx driver from FTDI. Only download the one that corresponds to your OS (either 64 bit or 32 bit).
# For 64-bit:
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16_x86_64.tar.gz
# For 32-bit:
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16.tar.gz
Download AVRDUDE and the FTDI bitbang patches:
wget http://download.savannah.gnu.org/releases-noredirect/avrdude/avrdude-5.10.tar.gz
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
Extract everything, put the drivers into place, and apply the patches:
tar xzf avrdude-5.10.tar.gz
tar xzf libftd2xx*.tar.gz
cd avrdude-5.10
for file in ../patch-*.diff; do patch -p0 < $file; done
cp ../libftd2xx*/static_lib/* .
cp ../libftd2xx*/*.h .
cp ../libftd2xx*/*.cfg .
Configure and compile AVRDUDE.
./configure CFLAGS="-g -O2 -DSUPPORT_FT245R" LIBS="./libftd2xx.a.0.4.16 -lpthread -ldl -lrt"
make
If you're using SparkFun's FTDI Basic Breakout board, you can use the following to update your AVRDUDE configuration. If you're using some other FTDI breakout board, you'll need to modify the miso, sck, mosi, and reset options. FTDI has a listing of which bits correspond to which pins on page 1 of the bit-bang mode datasheet.
echo '
programmer
#FTDI_Bitbang
programmer
  id    = "ftbb";
  desc  = "FT232R Synchronous BitBang";
  type  = ft245r;
  miso  = 3;  # CTS(11 PIN FT232R) 
  sck   = 5;  # DSR(9 PIN FT232R)
  mosi  = 6;  # DCD(10 PIN FT232R)
  reset = 7;  # RI (6 PIN FT232R)
;
;' >> avrdude.conf;
If you're using SparkFun's FTDI Basic Breakout, you can make your connections as follows. Otherwise, make your connections according to the pins you chose in the previous step (more details in my previous post on the subject.
FTDI -> MCU (ATmega168 PDIP pin)
--------------------------------
DTR -> RESET (1)
RXI -> MISO (18)
TXO -> MOSI (17)
5V -> VCC (7 & 20)
CTS -> SCK (19)
GND -> GND (8 & 22)
Now try it out to make sure everything worked. On Ubuntu, sudo is required because of the default permissions applied to USB devices. The -B 1 option sets the programming speed to the lowest possible. You can omit that option if your AVR is clocked higher than 8MHz. If this runs successfully, your AVR's high fuse byte should be printed to the terminal in hexadecimal.
sudo ./avrdude -C avrdude.conf -c ftbb -p m168 -P ft0 -U hfuse:r:-:h -B 1
If everything worked well, you can now install AVRDUDE.
# If you're using Ubuntu, you can use checkinstall to build a .deb package and install it:
sudo checkinstall
# Otherwise, just use `make install`:
sudo make install
You should now be able to use AVRDUDE without specifying a configuration file:
sudo avrdude -c ftbb -p m168 -P ft0 -U hfuse:r:-:h -B 1



программатор собран на основе  FT232RL по последней ссылке

4 комментария:

  1. А чтобы не паять, можно взять любую ардуину. На ней уже установлен и USB разъем, и ft232 и разъемы для программирования и сама атмега. можно битбангом прошивать прямо по месту. Под виндой я это проделывал, спасибо за инфу, как это на линуксе повторить

    ОтветитьУдалить
    Ответы
    1. Конечно можно и Ардуиной - но тут скорость работы просто космическая!

      Удалить
  2. Собрал программатор на той же схеме, но разводка поновее (http://we.easyelectronics.ru/AVR/usb-programmator-dlya-mikrokontrollerov-avr-na-baze-ft232-apu-2.html) никак не могу ему ума дать :) пробовал и так и сяк, по статье выше я тоже пробовал, только avrdude.conf другой добавил:
    #FTDI_Bitbang
    programmer
    id = "ftbb";
    desc = "FT232R Synchronous BitBang";
    type = ft245r;
    miso = 4; # DTR(2 PIN FT232R)
    sck = 2; # RTS(3 PIN FT232R)
    mosi = 6; # DCD(10 PIN FT232R)
    reset = 5; # DSR(9 PIN FT232R)
    ;
    Вывод в консоль avrdude такой:

    avrdude: BitBang OK
    avrdude: pin assign miso 4 sck 2 mosi 6 reset 5
    avrdude: drain OK

    ft245r: bitclk 4800 -> ft baud 2400
    avrdude: ft245r_program_enable: failed
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.


    avrdude done. Thank you.

    lsusb: Bus 007 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

    Может посоветуешь чего?

    ОтветитьУдалить
    Ответы
    1. система я так понял Linux? А avrdude допиливал? В стандартных репах avrdude этот чип не умеет :( - я пользую Убунту 12.04.
      А ошибка такая у меня возникает если забыть нажать кнопку, которая reset подтягивает или нетфизически связи с прошиваемым чипом.
      В общем три узких места:
      1 Avrdude
      2 Физическое нарушение в соединениях - провода, разъёмы
      3 Исправность прошиваемой железки - может там чего умерло?
      Попробуй на венде прошить - если там всё работает - а на пропатченном avrdude в линухе нет - значит ...
      З.ы.
      Могу патченный скинуть - работает без установки.

      Удалить