Fórum Ubuntu CZ/SK

Ostatní => Tipy a triky pro Linux => Téma založeno: LordAli 16 Listopadu 2007, 19:12:27

Název: [HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: LordAli 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. ;)
Název: Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: franta8512 30 Března 2013, 10:30:23
Kontrollerlab mi nejde nainstalovat. Chce pořád libktexteditor.so.0. Jak na to?
Název: Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: Myrmica 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.
Název: Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: OK1SYM 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.
Název: Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: marun 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
Název: Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: OK1SYM 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.
Název: Re:[HOWTO] - Programování AVR pod Linuxem a FTDI ovladače
Přispěvatel: OK1SYM 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.