Uživatelské nástroje

Nástroje pro tento web


cs:avr_programming

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
cs:avr_programming [2014/10/12 09:31] – [Pálení programu] kaklikcs:avr_programming [2022/01/28 16:21] (aktuální) – [Známé problémy] kaklik
Řádek 5: Řádek 5:
 ==== Vývojové prostředí ==== ==== Vývojové prostředí ====
  
-  * [[http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725|AVRstudio]] +[[http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725|AVRstudio]] obsahuje všechny potřebné softwarové nástroje pro práci s MCU AVR většinou tak není potřeba instalovat další softwareJeho nevýhodou je velikost malá flexibilita
- +
-==== Knihovny ==== +
- +
- +
-==== Nahrávání programu ==== +
- +
-Vedle klasického způsobu pálení firmwaru [[http://cs.wikipedia.org/wiki/In_System_Programming|ISP módu]] je také možné využít bootloader. Tento způsob využívá Arduino jeho příznivci jistě ocení jeho variaci [[cs:labduino|LABduino]], která se díky bootloaderu chová identicky.+
  
 ===== Linux ===== ===== Linux =====
Řádek 19: Řádek 12:
  
     $ sudo apt-get update     $ sudo apt-get update
-    $ sudo apt-get install gcc build-essential+    $ sudo apt-get install gcc build-essential gcc-avr gdb-avr binutils-avr avr-libc avrdude
  
 === Code Blocks IDE === === Code Blocks IDE ===
Řádek 25: Řádek 18:
 [[http://stringofthoughts.wordpress.com/2009/11/06/code-blocks-ide-for-avr-gcc-and-avrdude-ubuntu/ [[http://stringofthoughts.wordpress.com/2009/11/06/code-blocks-ide-for-avr-gcc-and-avrdude-ubuntu/
 |Code Blocks IDE for avr-gcc and avrdude (Ubuntu)]] |Code Blocks IDE for avr-gcc and avrdude (Ubuntu)]]
-==== Kompilátor ==== 
  
-  sudo  apt-get install gcc-avr +==== Nahrání programu do MCU ====
  
-==== Knihovny ====+Pro nahrávání přeloženého programu do mikrokontrolérů Atmel je potřeba hardwarový programátor [[cs:atprogispusb|ATprog]], který je připojen k MCU přes programovací kablík a k počítači přes USB. 
  
-      $ sudo apt-get install gcc-avr gdb-avr binutils-avr avr-libc avrdude 
- 
-==== Pálení programu ==== 
  
 V Ubuntu se pro nahrání programu do AVR obvykle používá program [[http://www.nongnu.org/avrdude/|avrdude]]. Následujícím způsobem: V Ubuntu se pro nahrání programu do AVR obvykle používá program [[http://www.nongnu.org/avrdude/|avrdude]]. Následujícím způsobem:
Řádek 40: Řádek 29:
  
 **Nastavení pojistek je třeba upravit pro konkrétní aplikaci. Nevhodným nastavením si můžete mikroprocesor zablokovat proti dalšímu zápisu** **Nastavení pojistek je třeba upravit pro konkrétní aplikaci. Nevhodným nastavením si můžete mikroprocesor zablokovat proti dalšímu zápisu**
 +
 +Nové verze avrdude nefungují a je potřeba použít starší verzi programu avrdude ([[http://packages.ubuntu.com/lucid/avrdude|5.10]]).
 +Stažený balík pak nainstalujeme příkazem
 +  sudo dpkg -i  název_balíku.deb
  
 === Známé problémy === === Známé problémy ===
Řádek 51: Řádek 44:
   avrdude: stk500v2_recv(): checksum error   avrdude: stk500v2_recv(): checksum error
  
-Přes to, že tato chybová hláška vypadá podivně, tak obvykle znamená, že se s programátorem pokoušíte komunikovat na jiném portu, než na který je fyzicky připojen. Tj. např. ///dev/ttyUSB1// místo ///dev/ttyUSB1//+Přes to, že tato chybová hláška vypadá podivně, tak obvykle znamená, že se s programátorem pokoušíte komunikovat na jiném portu, než na který je fyzicky připojen. Tj. např. ///dev/ttyUSB0// místo ///dev/ttyUSB1// 
 + 
 +== Permission denied == 
 + 
 +<code> 
 +Arduino: 1.6.13 (Linux), Board: "Sanguino, ATmega1284 or ATmega1284P (16 MHz)" 
 + 
 +/opt/arduino-1.6.13/hardware/tools/avr/bin/avrdude -C/opt/arduino-1.6.13/hardware/tools/avr/etc/avrdude.conf -v -patmega1284p -cstk500v2 -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m  
 + 
 +avrdude: Version 6.3, compiled on Sep 12 2016 at 15:21:49 
 +         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ 
 +         Copyright (c) 2007-2014 Joerg Wunsch 
 + 
 +         System wide configuration file is "/opt/arduino-1.6.13/hardware/tools/avr/etc/avrdude.conf" 
 +         User configuration file is "/home/kaklik/.avrduderc" 
 +         User configuration file does not exist or is not a regular file, skipping 
 + 
 +         Using Port                    : usb 
 +         Using Programmer              : stk500v2 
 +avrdude: usbdev_open(): cannot open device: Permission denied 
 +avrdude: usbdev_open(): did not find any USB device "usb" (0x03eb:0x2104) 
 + 
 +avrdude done.  Thank you. 
 + 
 +</code> 
 + 
 +Řešení: 
 + 
 +  sudo vim /etc/udev/avrisp.rules 
 +   
 +vložit následující obsah: 
 + 
 +<code> 
 +SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end" 
 + 
 +# Atmel Corp. JTAG ICE mkII 
 +ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout" 
 +# Atmel Corp. AVRISP mkII 
 +ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout" 
 +# Atmel Corp. Dragon 
 +ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout" 
 + 
 +LABEL="avrisp_end" 
 +</code> 
 + 
 +Pak vytvořit sybolický link:  
 + 
 +  cd /etc/udev/rules.d 
 +  sudo ln ../avrisp.rules 60-avrisp.rules 
 + 
 +A nakonec restartovat udev service 
 + 
 +  sudo service udev restart 
 + 
 +Více na: 
 + 
 +http://stackoverflow.com/questions/5412727/avrisp-mkii-doesnt-work-with-avrdude-on-linux 
 +==== Bootloader ==== 
 + 
 +Vedle klasického způsobu pálení firmwaru v [[http://cs.wikipedia.org/wiki/In_System_Programming|ISP módu]] je také možné využít bootloader. Tento způsob využívá Arduino a jeho příznivci jistě ocení jeho variaci [[cs:labduino|LABduino]], které díky boatloaderu hardwarový programátor nepotřebuje. Bootloaderů existuje ale mnoho druhů.  
 + 
 +=== Xboot === 
 + 
 +[[https://github.com/alexforencich/xboot|Xboot]] je velmi flexibilní bootloader, který kromě v celku běžného způsobu nahrávání firmware přes UART rozhraní dovede firmware aktualizovat i přes rozhraní jako [[cs:i2c|I²C]], [[cs:spi|SPI]], nebo paralelní FIFO. Bootloader do procesoru nahrajeme následujícím způsobem.  
 + 
 +Stáhneme zdrojové soubory bootloaderu z githubu. 
 + 
 +  git clone https://github.com/alexforencich/xboot.git 
 +  cd xboot  
 + 
 +Dále je potřeba vytvořit konfiguraci bootloaderu podle požadované aplikace. V tomto případě si zkopírujeme referenční konfiguraci pro MCU ATMEGA328P, který je například v modulu [[cs:atmegatq32|]] 
 + 
 +  cp conf/arduino328p.conf.mk . 
 +   
 +V kopii konfiguračního souboru je třeba změnit proměnnou ''AVRDUDE_PROGRAMMER = avrispmkII'' na avrdude identifikaci programátoru, který bude skutečně použit pro první programování bootloaderu do MCU. Pak můžeme spustit příkaz pro vygenerování úplné konfigurace bootloaderu. 
 +   
 +  make arduino328p.conf.mk 
 + 
 +Pokud proces proběhl bez chyb, tak bootloader zkompilujeme a nahrajeme do MCU. 
 +  make  
 +  make program 
 + 
 +Pokud předchozí krok proběhl bez chyb, tak by jsme nyní v MCU měli mít nahraný funkční bootloader Xboot, kterým je možné do MCU nahrát aplikační firmware. To uděláme například následujícím příkazem. 
 + 
 +  avrdude -P /dev/ttyACM0 -c avr109 -b 115200 -p m328p  -U flash:w:Blink.cpp.hex 
 +   
 +Kde soubor Blink.cpp.hex je vygenerovaný testovací program z Arduino IDE.  
 +   
 + 
 + 
  
 ==== Reference ==== ==== Reference ====
cs/avr_programming.1413106282.txt.gz · Poslední úprava: 2014/10/12 09:31 (upraveno mimo DokuWiki) · Právě zamknuto: 65.108.103.112