cs:arm_programming
no way to compare when less than two revisions
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Předchozí verzeNásledující verze | |||
— | cs:arm_programming [2013/11/08 23:18] – [USB bootloader] kaklik | ||
---|---|---|---|
Řá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. | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | Pro instalaci do Ubuntu je možné využít před připravené [[https:// | ||
+ | |||
+ | == Rychlá instalace pomocí repositáře == | ||
+ | |||
+ | sudo add-apt-repository ppa: | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install gcc-arm-none-eabi | ||
+ | | ||
+ | == 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 ===== | ||
+ | |||
+ | Programovací prostředí v kterém je vytvářen zdrojový kód. Mezi uživateli jsou nejoblíbenější následující dvě volby. Jinak lze ale zdrojový kód psát v libovolném textovém editoru. | ||
+ | |||
+ | ==== Sublime text ==== | ||
+ | |||
+ | Je placený editor pro linux mezi jeho vyjímečné vlastnosti patří například náhled celého zdrojového kódu. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ==== Code:: | ||
+ | |||
+ | Jde o velmi rozřířený editor, jehož výhodou je, že běží na více platformách a mohou ho tedy používat i uživatelé windows. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | sudo apt-get install codeblocks | ||
+ | | ||
+ | | ||
+ | ===== Knihovny periférií ===== | ||
+ | |||
+ | Protože nastavení a obsluha | ||
+ | |||
+ | ==== STM32F10X standard peripheral library ==== | ||
+ | |||
+ | Úplná proprietární knihovna od STMicroelectronics, | ||
+ | |||
+ | Dostupná ke stažení na [[http:// | ||
+ | |||
+ | ==== 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:// | ||
+ | |||
+ | ===== Zápis přeloženého kódu ===== | ||
+ | |||
+ | 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 ==== | ||
+ | |||
+ | === 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, | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | == Připojení modulu == | ||
+ | |||
+ | Pro použití sériového bootloaderu je třeba modul připojit na seriovou linku. V případě použití modulu [[cs: | ||
+ | |||
+ | |||
+ | ^ USB232R01B ^ STM32F10xRxT01A | ||
+ | | TXD | PA10 | | ||
+ | | RXD | PA9 | | ||
+ | |||
+ | Ostatní signály DTR a RTS si na modulu zapojují profesionálové, | ||
+ | (Tato funkce vyžaduje upravený stm32flash, který se však asi podařilo ztratit) | ||
+ | |||
+ | == Kompilace stm32flash == | ||
+ | |||
+ | svn checkout http:// | ||
+ | cd stm32flash-read-only | ||
+ | make | ||
+ | sudo make install | ||
+ | |||
+ | |||
+ | Příklad použití: | ||
+ | |||
+ | sudo stm32flash / | ||
+ | | ||
+ | stm32flash - http:// | ||
+ | | ||
+ | Serial Config: 57600 8E1 | ||
+ | Version | ||
+ | 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 - http:// | ||
+ | | ||
+ | Using Parser : Intel HEX | ||
+ | Serial Config: 57600 8E1 | ||
+ | Version | ||
+ | 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. | ||
+ | | ||
+ | === USB bootloader === | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | 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. Že je mikroprocesor přepnutý do DFU módu lze zkontrolovat přikazem lsusb: | ||
+ | |||
+ | $ lsusb | ||
+ | Bus 003 Device 007: ID 0483:df11 STMicroelectronics STM Device in DFU Mode | ||
+ | |||
+ | |||
+ | 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 uložena v dokumentační složce modulu [[cs: | ||
+ | |||
+ | Příklad volání dfu-util: | ||
+ | |||
+ | dfu-util -d 0483:df11 -a 0 -D ./ | ||
+ | | ||
+ | Popis parametrů příkazu | ||
+ | |||
+ | - // | ||
+ | - // | ||
+ | |||
+ | 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:// | ||
+ | | ||
+ | ==== J-TAG ==== | ||
+ | |||
+ | 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: | ||
+ | |||
+ | Ovládat jej lze například programem [[http:// | ||
+ | OpenOCD má v Ubuntu sice nativně podporované balíčky, ale jejich verze je zatím značně opožděna za současným vývojem. Proto je lepší si zkompilovat aktuální verzi. To provedeme následujícím postupem: | ||
+ | |||
+ | sudo apt-get install libtool git gcc automake libftdi-dev texinfo | ||
+ | git clone git:// | ||
+ | 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, | ||
+ | |||
+ | sudo make uninstall | ||
+ | |||
+ | Pokud máme k počítači připojený modul [[cs: | ||
+ | |||
+ | sudo openocd -f " | ||
+ | | ||
+ | Open On-Chip Debugger 0.7.0-rc1-dev-00011-gd9ba56c (2013-04-28-11: | ||
+ | Licensed under GNU GPL v2 | ||
+ | For bug reports, read | ||
+ | http:// | ||
+ | Info : only one transport option; autoselect ' | ||
+ | adapter speed: 1000 kHz | ||
+ | adapter_nsrst_delay: | ||
+ | jtag_ntrst_delay: | ||
+ | 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: | ||
+ | |||
+ | 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 operační systém ===== | ||
+ | |||
+ | ==== Chibios ==== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | Další programová dokumentace je dostupná [[http:// | ||
+ | === Demo blikání LED === | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | | ||
+ | int main(void) { | ||
+ | | ||
+ | halInit(); | ||
+ | chSysInit(); | ||
+ | | ||
+ | while (TRUE) { | ||
+ | palTogglePad(GPIOB, | ||
+ | chThdSleepMilliseconds(250); | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
cs/arm_programming.txt · Poslední úprava: 2015/03/30 16:37 (upraveno mimo DokuWiki)