Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: [HOWTO] - Programování AVR pod Linuxem a FTDI ovladače  (Přečteno 11283 krát)

LordAli

  • Aktivní člen
  • *
  • Příspěvků: 165
[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« kdy: 16 Listopadu 2007, 19:12:27 »
Po přechodu z jednoho nejmenovaného OS jsem se dostal před problém programování AVR pod Ubuntu (7.04 Fiesty Fawn) a instalování ovladačů pro FTDI chipy, protože na noťasu nemám sériový ani paralelní port. Takže AVR programuji přes USB programátor (AVR ISP MKII), který využívá FTDI konvertoru USB -> Parallel port. Jak na to?


Instalace FTDI ovladačů:
1.Přes synaptic se odinstaluje balík brltty (braille device – braille display). Důvod: Když je brltty nainstalován, FTDI čip se 4 sekundy po připojení na USB sám odhlásí.
 
2.V synapticu se najdou ovladače pro FTDI (libftdi0, ftdi-eeprom), aktuální verze ovladačů které používám jsou 0.2-3 a 0.2-7.
 
3.Nyní by měla fungovat komunikace s FTDI chipem. Pro kontrolu by měly být vidět informace o FTDI a připojeném zařízení s FTDI čipem pomocí těchto příkazů v terminálu (zařízení připojeno na USB):


a) V seznamu USB zařízení se objeví FTDI

lordali@Mousillon:~$ lsusb
Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd 8-bit FIFO


b) Odpojte zařízení v USB a zadejte následující příkaz. Po opětovném připojení zařízení na USB by to mělo nahlásit, že bylo přidáno zařízení na USB sběrnici (ttyUSB0).

lordali@Mousillon:~$ lshal --monitor

Start monitoring devicelist:
-------------------------------------------------
usb_device_403_6001_noserial added
usb_device_403_6001_noserial_if0 added
usb_device_403_6001_noserial_if0_serial_usb_0 added
usb_device_403_6001_noserial_usbraw added


Po odpojení zařízení z USB zase nahlásí, že bylo zařízení odebráno.
usb_device_403_6001_noserial_if0_serial_usb_0 removed
usb_device_403_6001_noserial_if0 removed
usb_device_403_6001_noserial removed
usb_device_403_6001_noserial_usbraw removed

Monitorování sběrnice se ukončí přes Ctrl+C (na nic lepšího jsem nepřišel).


c) při problémech s komunikací FTDI se hodí výpis log souborů

lordali@Mousillon:~$ tail -f /var/log/messages

Příklad není, protože je výpis ohledně připojování a odpojování FTDI dlouhý.



Programovací HW a SW pro AVR:

Hardware:

   Na programování AVR používám USB programátor (SPI rozhranní), kompatibilní s protokolem STK500 a AVRISP MKII. Programátor na USB si lze postavit, není to těžké. Schéma, program a instrukce zprovoznění jsou na www.matwei.de. V anglické verzi je programátor schován v položce Electronics -> USBisp.


Software:

   
   Většina lidí je zvyklá na AVR studio z Windows. V Linuxu existuje náhrada a jmenuje se to KontrollerLab. Tento program lze stáhnout ze stránek www.cadmaniac.org, kde jsou i podrobnější instrukce k tomu, co to pro programování potřebuje (avrdude, avr-gcc) a popis jak se v programu pracuje. Používám zatím verzi 0.8 a funguje to.

   Po spuštění KontrollerLab se ve složce Project zvolí Configure programmer. V záložce Choose programmer se zvolí AVRDUDE. Do kolonky command nic nepíšeme, mělo by tam být jen avrdude.

   V poslední záložce AVR DUDE se zaškrtne Specify programmer type na Atmel AVR ISP mkII a ještě se musí nastavit Specify port na Serial port /dev/ttyUSB0 (napíše se port z toho, co nahlásí příkaz lshal --monitor ). Ještě není špatné klapnout na tlačítko Set current setting as default a nastavit si to tak pro další použití jako default. To je vše z nastavení programátoru.

    U sebe mám ještě nastaveno Specify JTAG/STK500v2 bit clock period a nastaveno na 5μs (ale možná by to ani nemuselo být nastaveno).

   Ve složce Project je ještě Configure project, kde se nastaví typ procesoru podle toho jaký chcete programovat a jiné informace pro program. Funkci programu i HW lze ozkoušet přečtením Fuse bitů z procesoru.


Toť vše. ;)
« Poslední změna: 12 Ledna 2008, 22:47:56 od Anna Taliánová »
Intel Core i5-750
Gigabyte P55-UD3A
NVidia GTX260  ASUS F2J-5D003, ATI Mobility X1400 Debian Lenny (byvavalo)

franta8512

Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« Odpověď #1 kdy: 30 Března 2013, 10:30:23 »
Kontrollerlab mi nejde nainstalovat. Chce pořád libktexteditor.so.0. Jak na to?
franta8512

Myrmica

  • Závislák
  • ***
  • Příspěvků: 1701
    • MYRMICA
Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« Odpověď #2 kdy: 30 Března 2013, 13:35:56 »
Ta knihovna by měla být součástí kdelibs, zkus si je nainstalovat třeba pomocí Synaptic.
Stolní strojek: OS– UBUNTU 16.04 x86_64, MB ASUS P8 Z68-V/GEN3, Intel® Core™ i5-3470 CPU @ 3.20GHz × 4 , 16GiB DDR3, GeForce GTX 670...
Notebook: ASUS U53Jc OS– UBUNTU 16.04 x86_64, Windows 7, Processor – Intel Core i5-460M (2,53 GHz), Graphics – switchable NVIDIA GeForce 310M and Intel GMA HD

OK1SYM

  • Návštěvník
  • Příspěvků: 3
Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« Odpověď #3 kdy: 18 Října 2013, 10:44:53 »
Díky za návod, vše funguje tak, jak píšeš, jen jedna věc se mi nezdařila a to je instalace libftdi0 (nemůžu ji nikde najít), zjistil jsem ale, že již mám naistalovanou libftdi1, podle popisu v Sinapticu by to měla být: " Library to control and program the FTDI USB controller " Je to adekvátní náhrada? Nebo AVR dude vyžaduje libftdi0? Když se pokusím přečíst paměť mikroprocesoru dozvím se, že: "avrdude: ser_open(): canť open device "/dev/ttyACM0":Permission denied". Nějak se mi nedaří přijít na to, kde může být chyba.
Intel® Pentium(R) 4 CPU 3.2GHz
Debian 7.1

marun

  • Stálý člen
  • **
  • Příspěvků: 601
Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« Odpověď #4 kdy: 18 Října 2013, 14:22:48 »
přidej se do skupiny dialout(a pak odhlásit a přihlásit) jinak nemáš práva používat porty

OK1SYM

  • Návštěvník
  • Příspěvků: 3
Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« Odpověď #5 kdy: 28 Října 2013, 17:17:06 »
OK, díky, to pomohlo. Teť jsem narazil ještě na jeden problém, se kterým nemůžu hnout. Když se pokusím použít externí soubor s makry, tak se při kompilaci dozvím, že: makra:1:Error: unexpected end of file in macro `stack' definition

Ten soubor musí být nějak konkréně ukončen? AVRstudiu stačil *.inc soubor s makry uzavřenými mezi .macro a .endmacro.

Předem díky za jakoukoli pomoc.
Intel® Pentium(R) 4 CPU 3.2GHz
Debian 7.1

OK1SYM

  • Návštěvník
  • Příspěvků: 3
Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
« Odpověď #6 kdy: 30 Října 2013, 20:38:50 »
Tak problém je vyřešen. Všechno to bylo tím, že AVR-GCC neskousne direktivy a syntaxi Assambleru od Atmelu (není assambler, jako assambler). Použil jsem pro překlad AVRA a všecko je v pořádku. Jen je nutné předkládat do hexu z příkazové řádky, přímo v Kontrollerlabu to nejde.

A ještě pár poznámek na okraj pro ty, kteří by se pokoušeli o totéž:

 AVRA (Version 1.2.3 Build 1 (15. November 2007))nemá rád výceřádkové komentáře ( */ /* ), komentovat je nutné výhradně středníkem. Navíc jsem musel v *def.inc souboru příslušného mikrokontroléru zakomentovat všecky řádky začínající křížkem např.:

#ifndef _M88DEF_INC_
#define _M88DEF_INC_
#pragma partinc 0

AVRA je vypisoval jako chyby, resp. neznámé instrukce.

Cestu k *.inc souborům musím zadávat pomocí přepínače -I, bez něj si je avra nenajde, ani když jsou ve stejné složce, jako překládaný soubor.
Intel® Pentium(R) 4 CPU 3.2GHz
Debian 7.1

 

Provoz zaštiťuje spolek OpenAlt.