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
Poslední revizeObě strany příští revize
cs:arm_programming [2013/07/05 00:35] – [Programování procesorů ARM STM32] jachocs:arm_programming [2015/03/30 16:37] – newlib installation added ondra6ak
Řádek 4: Řádek 4:
 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]]. 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. +Veškeré zde užité programové vybavení je dostupné zdarma. 
 + 
  
 ===== Kompilátor ===== ===== Kompilátor =====
Řádek 10: Řá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 47: Řá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řípadech, kdy nechceme používat žádný přídavný programovací hardware a 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 toho, jaký konkrétní procesor ARM máme a jak je konstruovaná elektronika ve které je procesor osazený.  
-=== Modul STM32F10xRxT01A ===+ 
 +==== 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 BOOT, zmáčkněte tlačítka RESET a poté hned pusťte tlačítko BOOT.  Pro aktivaci bootloaderu držte tlačítko BOOT, zmáčkněte tlačítka RESET a poté hned pusťte tlačítko BOOT. 
Řádek 59: Řádek 62:
 == 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 115: Řá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)