User Tools

Site Tools

Translations of this page?:

en:arm_programming

This is an old revision of the document!


ARM STM32 processors programming

The best working environment for ARM processors is the Linux OS. That is why the following manual describes the installation process and how to handle the tools for work with ARM in this system. Linux installation manual.

All the software that is mentioned in this guide can be obtained for free.

Introduction for beginners

A required HW includes:

A required SW includes:

  • SW for writing the code / coding Psaní programu
  • Compiler
  • Loading of compiled program Nahrání přeloženého programu

Compiler

You can use freely available GNU C compiler, obtainable from git repository gcc-arm-embedded.

To help you with the Ubuntu installation it is possible to used a ready-made deb packages. A PPA repository works currently only for Ubuntu version 12.04.

Quick installation using a __repository__
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabisudo
Compilation procedure

Open a terminal and change the directory to the one containing the compilation files. Start the compilation process using the MAKE command.

GUI

Sublime text

Code::Blocks

Code::Blocks

sudo apt-get install codeblocks

Libraries

STM32F10X standard peripheral library

The complete proprietary library from STMicroelectronics, suffering form uncomfortable programming interface and occupying a lot of space in the final program.

It is available for download at STMicroelectronics web site.

libopencm3

A new open-source library with better interface and smaller size, that in unfortunately yet incomplete (though under an ongoing development)

Web pages of the project

Loading

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 stm32flash). Pro nahrávání firmware přes USB je vhodný program 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 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: 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: dfu-util-static. Pod Windows je ještě nutné nainstalovat nějakou verzi usblib. To nejsnáze uděláte programem zadig. V průběhu instalace usblib musíte mít procesor v DFU módu (viz sekvenci tlačítek výše).

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: STM32F107_mouse.bin

J-TAG

K programování přes JTAG se potřebuje externí programátor. Na modulu 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 JTAGFT2232V02A

Programovat lze např. otevřeným programem OpenOCD, který podporuje většinu používaných JTAG programátorů a umí vytvořit back-end pro 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 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

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 githubu

Další programová dokumentace je dostupná 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);

        }
}
en/arm_programming.1374929077.txt.gz · Last modified: 2013/07/27 12:44 (external edit)