V únoru jsem začal studovat on-line kurz „UT.6.02x Embedded Systems – Shape the World“ na serveru edx.org. Na tomto serveru najdete řadu kurzů, které pořádají renomované univerzity. Z průběhu kurzu jsem byl velmi překvapen, jak je profesionálně připraven.
Tento konkrétní kurz je zaměřen na procesory ARM Cortex-M4 a jejich programování na nízké úrovni. Jen pro představu, jak vypadá blikání LED (procesor TM4C123GH6PMI, Texas Instruments):
#define GPIO_PORTF_DATA_R (*((volatile unsigned long *)0x400253FC)) #define GPIO_PORTF_DIR_R (*((volatile unsigned long *)0x40025400)) #define GPIO_PORTF_AFSEL_R (*((volatile unsigned long *)0x40025420)) #define GPIO_PORTF_PUR_R (*((volatile unsigned long *)0x40025510)) #define GPIO_PORTF_DEN_R (*((volatile unsigned long *)0x4002551C)) #define GPIO_PORTF_LOCK_R (*((volatile unsigned long *)0x40025520)) #define GPIO_PORTF_CR_R (*((volatile unsigned long *)0x40025524)) #define GPIO_PORTF_AMSEL_R (*((volatile unsigned long *)0x40025528)) #define GPIO_PORTF_PCTL_R (*((volatile unsigned long *)0x4002552C)) #define SYSCTL_RCGC2_R (*((volatile unsigned long *)0x400FE108)) #define LED 0x08 void PortF_Init(void); void Delay(void); void EnableInterrupts(void); int main(void){ PortF_Init(); while(1){ GPIO_PORTF_DATA_R = LED; Delay(); GPIO_PORTF_DATA_R = 0x00; Delay(); } } void PortF_Init(void){ volatile unsigned long delay; SYSCTL_RCGC2_R |= 0x00000020; delay = SYSCTL_RCGC2_R; GPIO_PORTF_LOCK_R = 0x4C4F434B; GPIO_PORTF_CR_R = LED; GPIO_PORTF_AMSEL_R = 0x00; GPIO_PORTF_PCTL_R = 0x00; GPIO_PORTF_DIR_R = LED; GPIO_PORTF_AFSEL_R = 0x00; GPIO_PORTF_DEN_R = LED; } void Delay(void){unsigned long volatile time; time = 727240*200/91; while(time){ time--; } }
Tento kurz mě přivedl k vývojovým deskám LaunchPad společnosti Texas Instruments, protože je celý postaven na desce EK-TM4C123GXL .
Desek z rodiny LaunchPad je celá řada. Velmi mě zaujala deska MSP-EXP430G2, která je dodávána s 16-bitovým procesorem MSP430G2553 a MSP430G2452. Procesor je totiž vyměnitelný, podobně, jak je tomu u desek Arduino Uno. Navíc je možné tyto procesory objednat jako vzorek, tedy zdarma. Vyzkoušeno, do ČR dorazí cca během dvou dnů. Vlastní desku jsem kupoval v on-line obchodu Farnell. S doručením do druhého dne stála cca 470,- Kč včetně dopravy, která je 130,- Kč.
Protože nejsem žádný expert na nízkoúrovňové programování procesorů a výše uvedený kurz jsem dokončil s „odřenýma“ ušima, tak mě o zajímavosti desek LaunchPad přesvědčil projekt Energia. Tento projekt není nic jiného, než vývojové prostředí Arduino upravené pro programování desek z rodiny LaunchPad.
Blikání LED je pak triviální:
#define LED RED_LED void setup() { pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, HIGH); delay(1000); digitalWrite(LED, LOW); delay(1000); }
K deskám LaunchPad je k dispozici celá řada rozšiřujících desek, označovaných jako BoosterPac. Systém je velmi podobný Arduino shields, ale není samozřejmě k dispozici tak velké množství rozšiřujících desek jako pro Arduino. Celkem se mi podařilo najít cca 70 BosterPacks. Desky z rodiny LaunchPad, zejména MSP-EXP430G2, mi přijdou jako velmi zajímavá alternativa k Arduinu. Jak cenově, tak způsobem programování.