Uživatelské nástroje

Nástroje pro tento web


cs:arm_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:arm_programming [2013/07/05 00:24] – [Kompilátor] jachocs:arm_programming [Unknown date] (aktuální) – upraveno mimo DokuWiki (Unknown date) 127.0.0.1
Řádek 2: Řádek 2:
  
  
-Pro používání procesorů ARM je nejlepší pracovat v operačním systému Linux [[http://wiki.ubuntu.cz/Instalace/Pr%C5%AFvodce%20instalac%C3%AD?redirect=1|Ubuntu]]. +Pro používání procesorů ARM je nejlepší pracovat v operačním systému Linux, proto následující návod popisuje instalaci a využití nástrojů pro práci s ARM v tomto systému.  [[http://wiki.ubuntu.cz/Instalace/Pr%C5%AFvodce%20instalac%C3%AD?redirect=1|Postup instalace Linuxu]]. 
 + 
 +Veškeré zde užité programové vybavení je dostupné zdarma. 
 + 
  
 ===== Kompilátor ===== ===== Kompilátor =====
Řádek 8: Řádek 12:
 Jako volně dostupný kompilátor se může použít GNU C Compiler, dostupný v git repositáři [[https://launchpad.net/gcc-arm-embedded|gcc-arm-embedded]]. Jako volně dostupný kompilátor se může použít GNU C Compiler, dostupný v git repositáři [[https://launchpad.net/gcc-arm-embedded|gcc-arm-embedded]].
  
-Pro instalaci do Ubuntu je možné využít před připravené [[https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded|deb balíčky]]. PPA repositář zatím funguje pouze pro Ubuntu 12.04 +== Rychlá instalace pomocí repositáře ==
- +
-== Rychlá instalace pomocí depozitáře ==+
  
   sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded   sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
   sudo apt-get update   sudo apt-get update
-  sudo apt-get install gcc-arm-none-eabisudo+  sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi
      
-== Postup kompilace ==   +Pokud si nechcete do systému přidávat nový PPA repozitář, tak můžete použít rovnou ipravené [[https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded|deb balíčky]].
-V terminálu je potřeba se nacházet ve složce, kde se nachází soubory potřebné pro kompilaci a následně stačí zadat íkaz MAKE+
      
-===== Programovací GUI ===== +   
 +== Postup kompilace ==  
  
-==== Sublime text ====+V terminálu je potřeba se nacházet ve složce, kde se nachází soubory potřebné pro kompilaci a následně stačí zadat příkaz make. 
 +     
 +===== Knihovny periférií =====
  
-[[http://www.ubuntuupdates.org/ppa/sublime|Ubuntu PPA repository]] +Protože nastavení a obsluha  některých periferií mikroprocesorů ARM je nyní už velmi komplikovaná, je žádoucí si ušetřit práci a čas při vývoji, knihovnami, které již obsahují základní operace
- +
- +
-==== Code::Blocks ==== +
- +
-[[http://www.codeblocks.org/|Code::Blocks]] +
- +
-  sudo apt-get install codeblocks +
-===== Knihovna =====+
  
 ==== STM32F10X standard peripheral library ==== ==== STM32F10X standard peripheral library ====
Řádek 45: Řádek 40:
  
 [[http://libopencm3.org|Webové stránky projektu]] [[http://libopencm3.org|Webové stránky projektu]]
-===== Nahrávání ===== 
  
-==== Bootloader ====+===== Zápis přeloženého kódu =====
  
-Užití bootloaderu je výhodné v případechkdy nechceme používat žádný přídavný programovací hardware nepotřebujeme pokročilé vývojové funkce, jako například debugger. +Po přeložení zdrojového kódu je potřeba výsledný binární program zapsat do FLASH paměti mikroprocesoru. To lze udělat několika způsoby. Podle tohojaký konkrétní procesor ARM máme jak je konstruovaná elektronika ve které je procesor osazený
-=== Modul STM32F10xRxT01A ===+
  
-Pro aktivaci bootloaderu držte tlačítko BOOT při zmáčknutí tlačítka RESET. +==== Modul STM32F10xRxT01A ==== 
 + 
 +=== Sériový bootloader === 
 + 
 +Booloader může být použit na rozhraních USART1, USART2, CAN2 nebo USB. Všechny typy ARM ale nepodporují všechny typy. Dále může být bootloader použit pouze v případě užití konkrétních frekvencí krystalů. 
 + 
 +   * USART  pracuje s interním 8 MHz oscilátorem 
 +   * CAN a USB OTG FS funguje pouze s externími oscilátory 8 MHz, 14.7456 MHz nebo 25 MHz 
 + 
 + 
 +Užití bootloaderu je výhodné v případech, kdy nechceme používat žádný přídavný programovací hardware a nepotřebujeme pokročilé vývojové funkce, jako například debugger. Procesory ARM STM32F103 umí používat sériový bootloader přes UART. Procesory řady STM32F107 umožňují použití i bootloaderu na USB.  
 + 
 +Pro aktivaci bootloaderu držte tlačítko BOOTzmáčkněte tlačítka RESET a poté hned pusťte tlačítko BOOT
 S bootloaderem se může komunikovat přes USB nebo přes UART (např. programem [[http://code.google.com/p/stm32flash/|stm32flash]]). Pro nahrávání firmware přes USB je vhodný program [[http://dfu-util.gnumonks.org/|dfu-util]], který existuje pro Linux, Mac OS i Windows. S bootloaderem se může komunikovat přes USB nebo přes UART (např. programem [[http://code.google.com/p/stm32flash/|stm32flash]]). Pro nahrávání firmware přes USB je vhodný program [[http://dfu-util.gnumonks.org/|dfu-util]], který existuje pro Linux, Mac OS i Windows.
  
 == Připojení modulu == == Připojení modulu ==
  
-Pro použití bootloaderu je třeba modul připojit na seriovou linku. V případě použití modulu [[cs:usb232r|USB232R01B]] stačí mít zapojené pouze RXD a TXD následovně:+Pro použití sériového bootloaderu je třeba modul připojit na seriovou linku. V případě použití modulu [[cs:usb232r|USB232R01B]] stačí mít zapojené pouze RXD a TXD následovně:
  
  
Řádek 113: Řádek 118:
   Starting execution at address 0x08000000... done.   Starting execution at address 0x08000000... done.
      
-=== dfu-util ===+=== USB bootloader ===
  
-Přeložené bináry této utility pro jednotlivé platformy naleznete zde: [[http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FARM%2FSTM32F10xRxT%2FSW%2FUSB_bootloader%2F#_Modules_ARM_STM32F10xRxT_SW_USB_bootloader_/|dfu-util]] +[[https://gitorious.org/dfu-util|dfu-util]] je program, který umožní do procesorů ARM STM32F107 nahrávat firmware USB bootloaderem. 
  
-Pro aktivaci bootloaderu přes USB musíte připojit +3,3 V na nožičku PA9. Spuštění bootloaderu se provádí tlačítky: stiskni RESET, stiskni BOOT, pusť RESET, pusť BOOT.+== Zapojení ==
  
-Dávka pro volání dfu-util pro platformu Windows a eložená verze dfu-util bez potřeby dalších knihoven je zde: [[http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FARM%2FSTM32F10xRxT%2FSW%2FUSB_bootloader%2FWin32%2F#_Modules_ARM_STM32F10xRxT_SW_USB_bootloader_Win32_/|dfu-util-static]]. Pod Windows je ještě nutné nainstalovat nějakou verzi usblib. To nejsnáze uděláte programem [[http://www.mlab.cz/WebSVN/filedetails.php?repname=MLAB&path=%2FModules%2FARM%2FSTM32F10xRxT%2FSW%2FUSB_bootloader%2FWin32%2Fzadig.exe/|zadig]]. V průběhu instalace usblib musíte mít procesor v DFU módu (viz sekvenci tlačítek výše).+Pro aktivaci bootloaderu es USB musíte připojit Vcc (+3,3 V) na nožičku PA9Spuštění bootloaderu se provádí sekvencí tlačítekstiskni RESET, stiskni BOOT, pusť RESET, pusť BOOTŽe je mikroprocesor přepnutý do DFU módu lze zkontrolovat přikazem lsusb:
  
-Nahrání firmware si můžete vyzkoušet pomocí tohoto vzorového bináru, který z procesoru STM32F107 udělá USB HID myš, která opisuje kolečko[[http://www.mlab.cz/WebSVN/filedetails.php?repname=MLAB&path=%2FModules%2FARM%2FSTM32F10xRxT%2FSW%2FUSB_bootloader%2Fsample%2FSTM32F107_mouse.bin/|STM32F107_mouse.bin]] +  $ lsusb 
-   +  Bus 003 Device 007ID 0483:df11 STMicroelectronics STM Device in DFU Mode
-==== J-TAG ====+
  
-K programování přes JTAG se potřebuje externí programátor. Na modulu [[cs:stm32f10xrxt|STM32F10xRxT01A]] jsou JTAG dráty vyvedeny na zvláštním konektoru (J51). Jako externí programátor může být využit například modul [[http://www.mlab.cz/PermaLink/JTAGFT2232V02A|JTAGFT2232V02A]]+Dále je dobré si zkontrolovat, že je sapojený jumper **USB power enable**, který umožňuje napájení ARMu z USB. Jumper //USB D+ pull-up// musí naopak být v tomto módu rozpojený, jinak nedojde ke korektní enumeraci při přepnutí do DFU módu.    
  
-Programovat lze např. otevřeným programem [[http://openocd.sourceforge.net/|OpenOCD]], který podporuje většinu používaných JTAG programátorů a umí vytvořit back-end pro [[http://www.gnu.org/software/gdb/|GDB]], takže podporuje i debugování. 
  
-OpenOCD má v Ubuntu sice nativně podporované balíčky, ale jejich verze je obvykle značně opožděna za současným vývojemProto je lepší si zkompilovat aktualní verzi..  +Dávka pro volání dfu-util pro platformu Windows a přeložená verze dfu-util bez potřeby dalších knihoven je uložena v dokumentační složce modulu [[cs:stm32f10xrxt|STM32F10xRxT01A]] v svn repositářiPod Windows je ještě nutné nainstalovat nějakou verzi usblibTo nejsnáze uděláte programem zadig. V průběhu instalace usblib musíte mít procesor v DFU módu (viz sekvence tlačítek výše).
  
-  sudo apt-get install libtool git gcc automake libftdi-dev texinfo +Příklad volání dfu-util: 
-  git clone git://git.code.sf.net/p/openocd/code openocd-code + 
-  cd openocd-code/ +  dfu-util -d 0483:df11 -a 0 -./bin/blik.bin -s 0x8000000:leave
-  ./bootstrap +
-  ./configure --enable-maintainer-mode --disable-werror --enable-ft2232_libftdi +
-  make +
-  sudo make install+
      
-Tím máme v systému naistalováno OpenOCD. Pokud jej budeme chtít odinstalovat, použije se íkaz + Popis parametrů íkazu 
  
-  sudo make uninstall+    - //0483:df11// - identifikátor zařízení na USB (získáno přes lsusb) 
 +    - //0x8000000:leave// - začátek flash paměti MCU.
  
-Pokud máme k počítači připojený modul [[cs:jtagft2232v|JTAGFT2232V02A]] s nahraným schématem v FPGA, tak se můžeme ipojit k nějakému ARMu.+Nahrání firmware si můžete vyzkoušet pomocí tohoto vzorového bináru, který z procesoru STM32F107 udělá USB HID myš, která opisuje kolečko: [[http://www.mlab.cz/WebSVN/filedetails.php?repname=MLAB&path=%2FModules%2FARM%2FSTM32F10xRxT%2FSW%2FUSB_bootloader%2Fsample%2FSTM32F107_mouse.bin/|STM32F107_mouse.bin]] 
 + 
 +Přímo z klonu MLAB svn repozitáře se nahrání eloženého bináru //STM32F107_mouse.bin// provede takto:
  
-  sudo openocd -f "interface/busblaster.cfg" -f "target/stm32f1x.cfg"+  sudo ./dfu-util -d 0483:df11 -a 0  -D ../sample/STM32F107_mouse.bin  -s 0x8000000:leave -v
      
-  Open On-Chip Debugger 0.7.0-rc1-dev-00011-gd9ba56c (2013-04-28-11:46) +je však potřeba v terminálu být na správné cestětjnapříklad //svnMLAB/Modules/ARM/STM32F10xRxT01A/SW/USB_bootloader/linux-i386// 
-  Licensed under GNU GPL v2 +   
-  For bug reports, read +==== J-TAG ====
-  http://openocd.sourceforge.net/doc/doxygen/bugs.html +
-  Info : only one transport option; autoselect 'jtag' +
-  adapter speed: 1000 kHz +
-  adapter_nsrst_delay: 100 +
-  jtag_ntrst_delay: 100 +
-  cortex_m3 reset_config sysresetreq +
-  Info : max TCK change to: 30000 kHz +
-  Info : clock speed 1000 kHz +
-  Info : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) +
-  Info : JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) +
-  Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints+
  
-OpenOCD teď vytvořilo server ke kterému se můžeme přípojit přes telnet +Jtag lze použít téměř s libovolným ARM mikroprocesorem.   
 + 
 +K programování přes JTAG je potřeba externí programátor. Na modulu [[cs:stm32f10xrxt|STM32F10xRxT01A]] jsou JTAG signály vyvedeny na zvláštním konektoru (J51). Jako externí programátor může být využit například modul [[cs:JTAGFT2232V|JTAGFT2232V02A]]. 
 + 
 +Modul JTAGFT2232V02A lze ovládat například programem [[http://openocd.sourceforge.net/|OpenOCD]], který podporuje většinu používaných JTAG programátorů a umí vytvořit back-end pro [[http://www.gnu.org/software/gdb/|GDB]], takže podporuje i debugování.
  
-  telnet localhost 4444 
-   
-  Trying 127.0.0.1... 
-  Connected to localhost. 
-  Escape character is '^]'. 
-  Open On-Chip Debugger 
-  >  
    
-===== RTOS =====+===== RTOS  operační systém =====
  
 ==== Chibios ==== ==== Chibios ====
cs/arm_programming.txt · Poslední úprava: 2015/03/30 16:37 (upraveno mimo DokuWiki)