Říká se, že zkusit se má vše. Po tom co jsem objevil EM::Block jsem se rozhodl si na vlastní kůži odzkouším jak se v tomto IDE pracuje. No a když zkoušet něco nového, tak jsem si za prostředníka svého snažení vybral naprosto nečekaně STM32F429i Diskovery Kit.

Co jsem potřeboval:
  1. Nainstalovat EM::Block
  2. Připojit některý STM32 Discovery kit
  3. a ... jo, to bych málem zapomněl, začít si hrát

ad 1.
Naprostá pohoda. Stáhl jsem verzi 1.30. Spustil instalaci a voala na disku se objevil adresář, v kterém kromě EM::Blocku je i kompletní toolchain pro ARM (autorem sestavený a nazývaný "bare-metal" ). Další položkou je GDB server pro STlink (ten je součástí Discovery kitu)

Na obrázku je prostředí s EM::Block po kompilaci příkladu Blink (původně od Keilu). Obrázek jsem na server nahrál v plném rozlišení 1920x1080px.

Takže až dosud dobrý. IDE ideuje, překladač překládá, linker linkuje a já jdu do ledničky pro pivo. Jsem jak Sahara.


ad 2.
STM32F429 Discovery kit jsem objednal u Farnella. Bohužel potřebu zas jednou prubnout programování ARMů mě napadlo v pátek, takže poštovního holuba mohu čekat v pondělí.

Pak mě ale dostihla myšlenka. V šuplících se přece musí povalovat starší model s STM32F103RB6 procesorem. A fakt po hodinovém hledání jsem ho opravdu našel. Po připojení k USB portu se vesele rozblikal a já zaplesal nadšením.

ad 3.
A zde se vylíhl první problém. Při zakládání nového projektu po mně Em::Block požadoval volbu procesoru:
  • STM32F10x_cl
  • STM32F10x_hd
  • STM32F10x_hd_vl
  • STM32F10x_ld
  • STM32F10x_ld_vl
  • STM32F10x_md
  • STM32F10x_md_vl
  • STM32F10x_xl

Má skleróza mi neposkytla žádnou nápovědu, teprve strejda Googl mě nakopl.

Takže pro všechny - zde je stručný přehled přímo od Keila
LD  Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.
LD_VL  Low-density value line devices are STM32F100xx microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.
MD  Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.
MD_VL  Medium-density value line devices are STM32F100xx microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.
HD  High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes.
HD_MD  High-density value line devices are STM32F100xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes.
XL  XL-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 512 and 1024 Kbytes.
CL  Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers.

No jo já vím, ale pro mne to byla zas jednou neuvěřitelná novinka

Pak již stačilo nastavit:
  • velikost FLASH-e
  • velikost RAM-ky
  • velikost stack-u
  • velikost heap-u

Spouštím Debug projektu a, ... a nic. Em::Builder nic do DiscoveryVL nenahrál. Nuž nelením, instaluji STlink Utility, program nahrávám skrze ně a vše krásně bliká. Boha jeho, ale proč to nejde přímo z Em::Blocku, vždyť to potom nepůjde ani ladění.

Celou sobotu a neděli jsem strávil nad touto stupiditou. Nakopl mě až onvav s odkazem na náhradu driveru. Skutečně po výměně driveru se vše chová mravně. Přeflašování programu i debug je naprosto korektní.

Em::Block si nerozumí s STlinkem V1 (s driverem?) s V2 je prý vše v pořádku. To ale budu mít ověřeno až mi dorazí nový Discovery Kit.


Takže suma sumárum Em::Block s Diskovery kitem je v současnosti nejjednodušší a nejlevnější cesta jak rychle a bezbolestně začít s ARMy. Žádné omezení ve velikosti kódu, optimalizacích či čase.

...tím dnes končím