FreeRTOS

Každý, kdo programoval jednočipy, jistě dřív nebo později narazí na jistý problém, spočívající v organizaci chodu vlastního programu. Vše, co se má po dobu chodu programu v MCU provádět, je většinou napsáno v nekonečné smyčce "WHILE", která je zpravidla umístěna v těle funkce "MAIN" a následuje bezprostředně za inicializačními kroky zařízení, v průběhu kterých jsou parametrizovány periferie MCU, jakožto Ethernet procesor, displej a podobné.
 
V momentě, kdy má MCU řídit vykreslování displeje (o to větší je to zápřah v případě barevného TFT), provádět měření dotykové plochy displeje (dle gusta, ať už vyčítáním dat přes SPI z externího převodníku a nebo převodem A/D převodníku integrovaného v MCU), zpracovávat měření z připojených čidel a k tomu ještě něco vyhodnocovat a přepočítávat, může rychle vzít přehlednost programu za své, o absenci chyb a výkonosti ani nemluvě.
 
Zde přichází ke slovu nástroj, který přináší do našich luhů a hájů multitasking, což je víceúlohová správa programu, kdy několik úloh běží v reálném čase paralelně vedle sebe. Zní to asi poněkud kouzelně, bohužel tento nástroj nenamnoží několikrát procesor jak by se mohlo zdát, avšak provádí velmi rychlé přepínání mezi jednotlivými úlohami dle priorit a dalších nastavení, celý proces se tedy jeví tak, jako by jednotlivé úlohy byly skutečně prováděny současně.
 
V případě výkonějších jednočipů (v mém případě Atmely s jádrem ARM) mám hned dvě dobré zprávy. Ta první dobrá zpráva je, že pro takové aplikace jsou vyvinuty multitaskingové operační systémy (je jich celá řada, já používám právě FreeRTOS) a ta druhá a ještě lepší, že je to zadarmo a to i pro komerční aplikace, kdy není vyžadováno zvěřejňovat zdrojový kód (pokud tedy netvoříte něco speciálního jako bezpečnostně kritické aplikace).