fido: posledný mohykán mikrokontrolérov?
V poslednom čase, akoby sa bolo s 32-bitovými jednočipmi vrece roztrhlo. Ponúkajú ich takmer všetci tradiční výrobcovia mikrokontrolérov, a ešte aj celá spústa "netradičných" - t.j. nováčikov, ktorí sa rozhodli zviezť sa na tejto novej módnej vlne. Avšak - všetky sú akosi na jedno kopyto - veď tie ARMy a MIPSy, či dokonca x86, to nie je žiadna novinka, a sú tu už pekných pár (desiatok) rokov! A čo je ešte zarážajúcejšie - nejedná sa o žiadne cielene a premyslene navrhnuté architektúry pre použitie v typických mikrokontrolérových aplikáciách; naopak: sú to zväčša viac či menej súdržné zlepence procesora pôvodne určeného pre nejaký v tých časoch výkonnejší stolový počítač, pamätí a periférií, ktoré sa dajú nazvať jednočipom len preto, lebo sa toto všetko podarilo dostať na jeden čip.
Dokonca aj jedna z mála nových rodín mcu v posledných rokoch - AVR32 (a tak trocha aj pôvodné 8-bitové AVR) - je navrhnutá v podobnom duchu - všetko sa sústredí na akési superjadro s mohutnou výpočtovou silou, pričom sa však zdôrazňuje, že vďaka použitej paradigme RISC má jadro malé rozmery. S mávnutím ruky sa však zabúda že RISCy potrebujú na vykonanie určitej operácie viacero inštrukcií, takže na pomerne jednoduché riadiace operácie - I/O, bitové operácie, vetvenie programu, to všetko typicky potrebné v kontrolérových aplikáciách - poľahky spotrebuje onú vysokú taktovaciu frekvenciu, pričom samotných výpočtov sa v týchto aplikáciách spravidla až toľko nevykonáva. No a napokon to znamená aj vyššie pamäťové nároky, čím sa úspešne eliminuje úspora plochy čipu dosiahnutá vďaka kompaktnému RISC jadru.
Korunu všetkému nasadzujú metódy použité na programovanie, kde sa v mene programátorskej efektivity preberajú veľkorysé metódy z PC, vrátane (či na čele?) s násilným zavádzaním multitaskingu aj tam kde to nie je potrebné, užitočné či vhodné - tentoraz pod módnym kódovým označením RTOS. To pri "vhodnom" použití dokáže vďaka svojej réžii na prepínanie úloh spoľahlivo zlikvidovať posledné zvyšky pôvodne kolosálneho výkonu až do stavu, keď reakcia systému na vonkajší podnet robí z výrazu "Real Time" zlý žart.
Americká firma menom Innovasic (Albuquerque, NM) sa na to rozhodla ísť inak. Využijúc 15-ročné skúsenosti z navrhovania náhrad za zastaralé 8- aj 16-bitové procesory, mikrokontroléry a periférne obvody, rozhodli sa zužitkovať zozbierané skúsenosti a zhrnúť všetko čo pokladali za dobré v rokmi osvedčených obvodoch, a naopak, vyhnúť sa chybám tých menej úspešnejších. Ako sa im to podarilo, to ťažko povedať; použili však niekoľko riešení, ktoré, aj keď možno nie sú žiadne prevratné novinky, sú každopádne dosť neobvyklé.
Pri návrhu obvodov rady fido (skratka z Flexible Input, Deterministic Output) sa návrhári predovšetkým riadili heslom "kremík je lacný, software je drahý". Obvod založili na procesorovom jadre inštrukčne kompatibilnom s platformou 68k. Ako sme hore rozobrali, to samo osebe nič neznamená - aj keď pamätníci určite zatlačia slzu pri spomienke na Amigy a pôvodné Palmy. Zaujímavé však už je, že procesor má hneď päť kompletných sád registrov, medzi ktorými prepína behom jedného cyklu. To je zdatný základ pre hardwarový multitasking, ktorý je ďalej zdôraznený prepracovanou hierarchiou priorít úloh a aj prerušení v rámci úloh. O prepnutie sa môže postarať software jednotlivých úloh, ale ak by došlo v rámci jedného kontextu k zdržaniu - či, načo obchádzať horúcu kašu, software daného kontextu spadne - o prepnutie sa postará časovač, ktorým je pridelený každej úlohe pevný maximálny časový úsek. Podporu multitaskingu dopĺňa jednotka ochrany pamäte pred nepovolaným prístupom z inej úlohy.
Ako je to u mikrokontrolérov tejto triedy obvyklé, k obvodu je možné pripojiť rozsiahlu sadu pamätí a samozrejme je k dispozícii aj SDRAM kontrolér. Obvod v sebe pritom obsahuje RAM, ktorú je možné využiť aj ako pamäť programu, a v tejto funkcii ju výrobca trocha eufemisticky označuje ako "deterministic cache" (čo znamená, že to nie je cache, ale pamäť so staticky uloženými tými časťami programu, ktoré sa majú vykonať rýchlo, bez zdržania ktoré je typicky zviazané s behom programov z externých pamätí).
Ďalším, tentoraz skutočne neobvyklým riešením je absencia periférií, ktoré bývajú bežne vymenované v "shortform" katalógoch, ako U(S)ART, I2C, SPI, Ethernet apod. Ale nebojte sa, fidu nič nechýba, práve naopak. O rozhrania sa starajú štyri jednotky UIC (TM, Universal I/O Controller), ktoré predstavujú akési zabudované, samostatné mini-mikrokontroléry. Každá jednotka UIC obsahuje generátor hodín, posuvný register, dva páry pamätí FIFO sprostredkujúcich prenos dát z a do samotného jadra, hardwarový generátor CRC, a - teraz sa podržte - vlastný jednoduchý RISC kontrolér (prezývaný SKIP - Super Kompact Instruction Processor) s príslušnou programovou RAM a rozsiahlou sadou (vyše 80) konfiguračných registrov. Každá jednotka UIC sa dá nakonfigurovať na 10/100 Ethernet, CAN, 2 UARTy vrátane handshake, SPI, I2C s väčšou alebo menšou úrovňou spracovania dát (najmä v súvislosti s paketizáciou), alebo môže priamo riadiť jednotlivé vstupno/výstupné piny (GPIO).
A ak by bolo potrebné rýchlo prenášať väčšie množstvá dát, sú tu dve DMA jednotky, s vlastnou nastaviteľnou hierarchiou priorít prístupu k jednotlivým zdrojom. Periférie dopĺňa 8-kanálový 10-bitový AD prevodník a dve jednotky čítačov konfigurovateľné do všetkých mysliteľných režimov.
K tomuto všetkému je naozaj sú len ako bombónik prepracované hardwarové prostriedky pre podporu debugovania, primárne pristupované cez obligátny JTAG port. Tentoraz však je k dispozícii aj možnosť ovládať debugovací hardware aj z programu, napríklad jedna úloha môže debugovať druhú úlohu (vrátane krokovania, pozastavenia, prezerania a modifikácie registrov). Tým sa otvárajú možnosti napríklad pre diaľkové debugovanie cez sieť akéhokoľvek druhu, čo môže byť v priemyselných aplikáciách veľmi atraktívna voľba.
Nech je však akokoľvek prepracovaný hardware, rozhodujúca je mnohokrát softwarová podpora. A tam práve môže byť veľká slabina fida. Výrobca priamo neponúka žiadne vývojové prostredie, len sa odkazuje na nie príliš známu firmu CodeSourcery, ktorá ponúka vývojové prostredie založené na GNU prostriedkoch - C/C++, debuger spolupracujúci so zabudovaným JTAG, to všetko zastrešené IDE Eclipse; k tomu knižnice a port uCLinuxu s príslušenstvom. Tento balík však nie je zadarmo a cena je asi už za hranicou, ktorú je ochotný obetovať na pokusy bežný záujemca v našich končinách. Tento balík je však aj súčasťou vývojového kitu, ktorý okrem softwaru obsaje aj dobre obsadenú vývojovú dosku, a je ponúkaný výrobcom za $499.
V súčasnosti je ponúkaný len prvý obvod radu fido, a to fido1100. Tento obvod neobsahuje žiadnu programovú pamäť FLASH, avšak výrobca sľubuje v budúcnosti rozšírené obvody s USB, jednotkou pre prácu s číslami s pohyblivou rádovou čiarkou FPU, pamäťou FLASH a až 32 hardwarovými kontextami. fido1100 je puzdrený do QFP208, je napájaný 2.5V (jadro) a 3.3V (I/O, 5V tolerant), chodí na 66MHz, a v 1k množstve je ponúkaný za $9.95.
wek zavináč efton bodka sk