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í revize Předchozí verze
Následující verze
Předchozí verze
cs:arm_programming [2013/10/10 18:31]
povik [dfu-util]
cs:arm_programming [2015/03/30 18:37]
Řádek 1: Řádek 1:
-====== Programování procesorů ARM STM32 ====== 
- 
- 
-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 ===== 
- 
-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í depozitáře == 
- 
-  sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded 
-  sudo apt-get update 
-  sudo apt-get install gcc-arm-none-eabisudo 
-   
-== Postup kompilace ==   
-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 
-   
-===== Programovací GUI ===== 
- 
- 
-==== Sublime text ==== 
- 
-[[http://www.ubuntuupdates.org/ppa/sublime|Ubuntu PPA repository]] 
- 
- 
-==== Code::Blocks ==== 
- 
-[[http://www.codeblocks.org/|Code::Blocks]] 
- 
-  sudo apt-get install codeblocks 
-===== Knihovna ===== 
- 
-==== STM32F10X standard peripheral library ==== 
- 
-Úplná proprietární knihovna od STMicroelectronics, která však nemá příliš pohodlné programovací rozhraní a zabírá hodně prostoru ve výsledném programu. 
- 
-Dostupná ke stažení na [[http://www.st.com/stonline/stappl/resourceSelector/app?page=resourceSelector&doctype=FIRMWARE&SubClassID=1169|stránkách STMicroelectronics]]. 
- 
-==== libopencm3 ==== 
- 
-Nová open-source knihovna, prostorově úsporná a s lepším rozhraním, která je ale zatím neúplná (avšak pod aktivním vývojem). 
- 
-[[http://libopencm3.org|Webové stránky projektu]] 
-===== Nahrávání ===== 
- 
-==== Bootloader ==== 
- 
-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. 
-=== Modul STM32F10xRxT01A === 
- 
-Pro aktivaci bootloaderu držte tlačítko BOOT, zmáč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. 
- 
-== 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ě: 
- 
- 
-^ USB232R01B ^ STM32F10xRxT01A  ^ 
-| TXD | PA10 | 
-| RXD | PA9 | 
- 
-Ostatní signály DTR a RTS si na modulu zapojují profesionálové, kteří nechtějí mačkat tlačítka pří každém uploadu :)  
-(Tato funkce vyžaduje upravený stm32flash, který se však asi podařilo ztratit) 
- 
-== Kompilace stm32flash == 
- 
-  svn checkout http://stm32flash.googlecode.com/svn/trunk/ stm32flash-read-only 
-  cd stm32flash-read-only 
-  make 
-  sudo make install 
- 
- 
-Příklad použití: 
- 
-  sudo stm32flash /dev/ttyUSB0 
-   
-  stm32flash - http://stm32flash.googlecode.com/ 
-   
-  Serial Config: 57600 8E1 
-  Version      : 0x20 
-  Option 1     : 0x00 
-  Option 2     : 0x00 
-  Device ID    : 0x0418 (Connectivity line) 
-  RAM          : 64KiB  (4096b reserved by bootloader) 
-  Flash        : 256KiB (sector size: 2x2048) 
-  Option RAM   : 15b 
-  System RAM   : 18KiB 
-   
-  Resetting device... done. 
- 
- 
-Nahravani programu vypada napriklad takto: 
- 
-  $ ./stm32flash -w ./bin/LED_Blink.hex -v -g 0x0 /dev/ttyUSB0  
-  stm32flash - http://stm32flash.googlecode.com/ 
-   
-  Using Parser : Intel HEX 
-  Serial Config: 57600 8E1 
-  Version      : 0x22 
-  Option 1     : 0x00 
-  Option 2     : 0x00 
-  Device ID    : 0x0414 (High-density) 
-  RAM          : 64KiB  (512b reserved by bootloader)  
-  Flash        : 512KiB (sector size: 2x2048) 
-  Option RAM   : 15b 
-  System RAM   : 2KiB 
-   
-  Wrote and verified address 0x08000c48 (100.00%) Done.  
-  Starting execution at address 0x08000000... done. 
-   
-=== dfu-util === 
- 
-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]]  
- 
-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. 
- 
-Dávka pro volání dfu-util pro platformu Windows a př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). 
- 
-Příklad volání dfu-util: 
- 
-''dfu-util -d 0483:df11 -a 0 -D ./bin/blik.bin -s 0x8000000:leave'' 
- 
-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]] 
-   
-==== 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]] 
- 
-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ývojem. Proto je lepší si zkompilovat aktualní verzi..   
- 
-  sudo apt-get install libtool git gcc automake libftdi-dev texinfo 
-  git clone git://git.code.sf.net/p/openocd/code openocd-code 
-  cd openocd-code/ 
-  ./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 příkaz  
- 
-  sudo make uninstall 
- 
-Pokud máme k počítači připojený modul [[cs:jtagft2232v|JTAGFT2232V02A]] s nahraným schématem v FPGA, tak se můžeme připojit k nějakému ARMu. 
- 
-  sudo openocd -f "interface/busblaster.cfg" -f "target/stm32f1x.cfg" 
-   
-  Open On-Chip Debugger 0.7.0-rc1-dev-00011-gd9ba56c (2013-04-28-11:46) 
-  Licensed under GNU GPL v2 
-  For bug reports, read 
-  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  
- 
-  telnet localhost 4444 
-   
-  Trying 127.0.0.1... 
-  Connected to localhost. 
-  Escape character is '^]'. 
-  Open On-Chip Debugger 
-  >  
-  
-===== RTOS ===== 
- 
-==== Chibios ==== 
- 
-[[http://www.chibios.org/dokuwiki/doku.php|Webová stránka projektu]] 
-  
-Jde o základní relaltime operační systém s HAL zjednodušující práci s mikroprocesorem. Pro snazší práci byla vytvorena kofigurace Chibios přímo pro modul s ARM dostupná je na [[https://github.com/toxygen/mlab-chibios|githubu]]  
- 
-Další programová dokumentace je dostupná [[http://chibios.sourceforge.net/html/index.html|ChibiOS/RT]] 
-=== Demo blikání LED === 
- 
-  #include <ch.h> 
-  #include <hal.h> 
-   
-  int main(void) { 
-   
-          halInit(); 
-          chSysInit(); 
-   
-          while (TRUE) { 
-                  palTogglePad(GPIOB, GPIOB_LED1); 
-                  chThdSleepMilliseconds(250); 
-   
-          } 
-  } 
- 
- 
- 
  
cs/arm_programming.txt · Poslední úprava: 2015/03/30 18:37 (upraveno mimo DokuWiki)