česky english Vítejte, dnes je čtvrtek 28. březen 2024

Vývoj MCU aplikací s technologií Cloud Computing

DPS 1/2012 | Články
Autor: Dr. Ning Li, Wuhan University of Technology

Cloud computing je nový super výpočetní systém, založený na internetu a rozvoji distribuovaných výpočtů, paralelních výpočtů a tzv. Grid Computingu. Cloud Computing vychází ze sdílení dostupných zdrojů jako je software a hardware, které jsou jednotlivým službám dostupné nečastěji prostřednictvím sítě internet.[1], [2].

Tradiční vývoj MCU aplikací vychází z profesionálních integrovaných vývojových prostředí, které možnosti dnešního internetu využívá jen omezeně. Nicméně v posledních letech, jak se zvyšuje rychlost produkce stále nových a dokonalejších typů integrovaných obvodů, je potřeba získávání relevantních informací a dalších údajů z internetu pro vývoj aplikací stále naléhavější. Cloud Computing, pokud je zaveden do oblasti vývojových nástrojů a sdílení know-how, umožní zrychlení celého procesu vývoje aplikací. Tento článek má za cíl přiblížit možnosti vývojové platformy MCU s technologií Cloud Computingu – Coocox Tools mého týmu, přičemž budeme vycházet z analýzy nedostatků tradičních vývojových nástrojů.

Nedostatky tradičních vývojových nástrojů

Při použití tradičních vývojových nástrojů se obvykle setkáváme s následujícími problémy:

Příliš mnoho času stráveného hledáním a tříděním informací

Před zahájením práce na samotné aplikaci musí každý vývojář strávit nějaký čas výběrem produktu a hledáním dostupných informací o použité platformě, dále potřebuje nástroje pro vývoj, technickou podporu a další. Každý vývoj nové aplikace vyžaduje celou řadu informací: datasheet, schémata, postupy, pokyny atd. Většinu z těchto informací lze obvykle nalézt přímo na webových stránkách výrobce či distributora nebo jiné specializované technické podpory. Ovšem ne vždy se nám zde podaří nalézt úplně vše potřebné a zbývající informace je pak nutné hledat na internetu pomocí různých vyhledávačů. Každý takový sběr dat, jejich úprava a třídění, zabere obvykle hodně práce a tradiční vývojové nástroje s MCU nejsou obvykle v tomto směru schopny nabídnout pomocnou ruku.

Izolovaný vývojář

Ve většině případů se návrhu a vývoji dané aplikace věnuje jen několik málo vývojářů a není výjimkou, kdy je to i jediný člověk. Jakmile se pak vyskytne nějaký problém, musí se obtížně hledat přijatelné řešení nebo zkusit technickou podporu výrobce. Mezi nejčastější zdroje informací patří různá fóra a mailové skupiny několika lidí, což však opět vyžaduje určitý čas.

Omezení při vývoji aplikační vrstvy

Vývoj aplikací se obvykle skládá z několika dílčích celků, jako je například vývoj hardware a vývoj software. Vývoj software se dále skládá z programování příslušných ovladačů, portování na operační systém, portování a optimalizace algoritmů a návrh aplikační vrstvy. Programátor zde obvykle stráví většinu času právě vývojem ovladačů, podpory operačního systému a implementací daných algoritmů, takže například na aplikační vrstvu a optimalizaci celé aplikace zbývá mnohem méně času.

Takový přístup bývá zdrojem zkrácení životního cyklu aplikace a vývojáři, kteří používají tradiční vývojové nástroje, čelí problémům s rozdělením mezi časem vývoje a kvalitou produktu.

Dnes, v době internetu, je čas na změnu

Internet s sebou přinesl nový způsob distribuce informací. Díky snadnému přístupu k velkému množství informací, způsobům získávání cenných uživatelských zkušeností a snadné dostupnosti se stává důležitým prvkem pro získávání dat při výzkumu a vývoji. Způsob uspořádání informací na internetu můžeme rozdělit do následujících kategorií:

  • Hledání v databázi: Procházení webu a hledání informací připomíná procházení dat uložených v databázi. Pouze s tím rozdílem, že pro vyhledávání dat se nepoužívá žádný obvyklý databázový klient, ale vyhledávač například typu yahoo. Jeho klasifikace je jasná, ovšem zúžit konkrétní informace nám pomůže jen stěží.
  • Fulltextové vyhledávání: S jeho pomocí lze hledat informace na všech webových stránkách a z výsledku je poté možné vytvořit velkou on-line databázi podle pravidel uživatelského dotazu. Dotaz lze ze stanovených indexů databáze získat především pomocí klíčových slov, například Google. Tímto způsobem lze snadno získat informace týkající se klíčových slov a zároveň jednoduše oddělit nepodstatné informace.
  • Wiki: Každý uživatel může vytvářet, upravovat, měnit nebo diskutovat nad daným tématem úpravy stránek, stejně jako by se jednalo o čistou tabuli, uloženou kdesi na internetu. Informace zde uložené jsou díky kontrolním mechanismům obvykle velmi profesionální a přesné.
  • Moderovaná komunita Q&A: Celá řada uživatelů, na základě svých zkušeností a odborných znalostí, sdílí otázky a nabízí řešení problémů v tzv. Q&A diskuzích. Typickým příkladem podobné diskuze je i komunitní portál element14 (www.element14.com). Zde lze na své otázky obvykle získat rychlou a odbornou pomoc.

Snahy o účelnou organizaci informací provázejí internet prakticky od jeho vzniku. Nyní, s příchodem technologie Cloud Computingu a konceptu softwarových služeb (SaaS) je možné, že právě Cloud Software bude tím, kdo dosavadní monopol velkých výrobců prolomí. Výhodou je, že každý uživatel má možnost svobodně uplatňovat své tvůrčí účely a zároveň má přístup ke všem druhům softwarových služeb. Cloud Computing umožňuje předcházet vzniku režimu uspořádání informací a prostřednictvím tzv. sdílení informací zvyšuje efektivitu práce (www.self.com).

Ve spojení s embedded vývojovými nástroji, je Cloud Computing schopný přinést nové možnosti a zároveň může odstranit nedostatky tradičních vývojových nástrojů.

Vývoj MCU aplikací s technologií Cloud Computingu

Vývojovým nástrojem pro MCU, který je založený právě na technologii Cloud Computingu, je Cloud Software, umožňující efektivního využití informací z této sítě. Jakmile dojde k volbě vhodného MCU, jsou vývojáři ihned dostupné veškeré související informace (datasheety, postupy, schémata zapojení a algoritmy). Rovněž je v tu chvíli možné související informace také sdílet s dalšími vývojáři na síti. Dalo by se říci, že ideálním vývojovým nástrojem s technologií Cloud Computingu je pouze jediný prohlížeč. Jak je vidět na obr. 1, veškeré úkony, jako je kompilace, úpravy, uchování, správa projektů a správa informací, vše se odehrává v rámci daného Cloudu.

Obr. 1

Obr. 1

Příklad rychlého prototypového nástroje s embedded platformou ARM®, mbed, je uvedený na obr. 2, a to včetně jednotné hardwarové testovací platformy. Prostřednictvím přístupu k webovému rozhraní embed.org lze libovolně řídit veškeré procesy vývoje dané aplikace, včetně editace, kompilace, správy celého projektu i komunikace s ostatními uživateli.

Obr. 2

Obr. 2

Mbed je však v současné době pouze prvním prototypovým vzorem platformy, bez zajištění kompletní funkce, nutné pro plnohodnotný vývoj embedded aplikací. Přesto se nám podařilo rozšířit myšlenku vytvoření volného vývojového nástroje založeného na technologii Cloud Computingu, jakým je právě Coocox.

Nástroje Coocox

Celkový přehled nástrojů Coocox je zobrazen na obr. 3. Coocox obsahuje CoIDE, CoFlash, CoAssistant, CoLinkEx, CoOS a CoCenter. Coocox je dostupný zdarma na adrese www.coocox.org.

Obr. 3

Obr. 3

CoIDE

CoIDE je hlavním jádrem Coocox a na rozdíl od tradičních embedded vývojových IDE, je jeho přístup založený na komponentách, rutinách a nápovědě. Všechny tyto prvky mohou být jednoduše automaticky aktualizovány prostřednictvím internetu. Ukázka editačního rozhraní CoIDE je na obr. 4. Editační prostředí je složené ze čtyř systémových oken: okno komponent, stromové okno komponent, okno s příklady a okno s nápovědou.

Obr. 4

Obr. 4

Okno komponent: Relativně nezávislý kód, program ovládající zařízení, kdy některé algoritmy a operační systémy mohou být ve všech komponentách. Po volbě procesoru jsou všechny jeho dostupné komponenty uvedeny právě v tomto okně. Do projektu se pak příslušný kód přidá jednoduchým zaškrtnutím dané komponenty. Pokud jsou součástí aplikace již všechny požadované komponenty, stačí provést kontrolu a základní vývoj aplikace je hotový (kromě aplikační vrstvy).

Zjednodušeně řečeno, okno komponent je vlastně dokonalejší okno webového prohlížeče. Jakýkoliv registrovaní uživatelé mohou své vlastní komponenty nahrát na server a tím je sdílet s ostatními uživateli. Vývojáři pak mohou každé jednotlivé komponentě dávat komentáře a hodnotit zdrojové kódy, nahrané jinými uživateli. Získané hodnocení se v okně komponent rovněž zobrazuje a poskytuje dobrou informaci o relevantnosti daného kódu.

Stromové okno komponent: Jednotlivé komponenty se pro lepší přehlednost řadí do stromové struktury. Stromové okno komponent pak přímo odpovídá rozložení celého projektu. Při kontrole některé z komponent se daný soubor zvýrazní rovněž zde, ve stromové struktuře a v okně nápovědy se automaticky zobrazí odpovídající příklad.

Okno s příklady: Při kontrole některého prvku ve Stromovém okně komponent se v tomto okně zobrazuje relevantní příklad. K dispozici jsou pak funkce, jako je odkazování na daný příklad nebo jeho přidání do projektu. Stejně jako v případě okna komponent, vystupuje i okno s příklady jako klasický webový prohlížeč. Každý registrovaný uživatel sem může přidávat své vlastní příklady, které chce sdílet s ostatními, nebo může komentovat a hodnotit příklady jiných uživatelů.

Okno s nápovědou: Okno nápovědy poskytuje řadu důležitých informací, týkajících se aktuálního obsahu. Například při výběru procesoru poskytuje základní technické informace a technickou dokumentaci. Při kontrole komponent poskytuje naopak informace o jeho API a konečně při zobrazení příkladů slouží k zobrazení schéma a informací o vývojové desce.

V budoucnu bude celé CoIDE založené výhradně s použitím webových prvků. Jak je vidět z obr. 5, CoIDE není pouze klasické IDE, ale kompletní platforma pro vývojáře, která umožňuje komunikaci a sdílení informací a znalostí z vývoje embedded aplikací.

Obr. 5

Obr. 5

CoFlash

CoFlash je bezplatný programovací nástroj, využívající jak režim příkazové řádky, tak i propracované GUI. Na rozdíl od jiných nástrojů pro programování obvodů, vychází CoFlash především z uživatelsky definovaných programovacích algoritmů. Zjednodušeně řešeno, všechny obvyklé úkony programování, jako je Init, EraseSector, EraseChip, ProgramPage a UnInit jsou zcela volně konfigurovatelné, s podporou vytváření programovacích šablon. Opět stejně jako v případě komponent a příkladů CoIDE, i CoFlash podporuje sdílení svých programovacích algoritmů a komentování a hodnocení algoritmů od jiných uživatelů.

CoAssistant

CoAssistant je bezplatný a on-line embedded programátor, který je k dispozici na adrese: www.coocox.com:8080/coassistant_en/rap. Jak je dobře vidět z obr. 6, CoAssistant představuje automatický asistenční systém s přehledem registrů a základních informací o zvoleném procesoru. Díky tomu mohou vývojáři snadno konfigurovat související periferie i bez vyhledávání v technické dokumentaci a samozřejmě i zde je možné podělit se o své zkušenosti s periferními prvky nebo registry s ostatními uživateli v podobě komentářů.

Obr. 6

Obr. 6

V budoucnu se uvažuje o integraci aplikace CoAssistant do CoIDE a možnosti automatického generování uživatelského zdrojového kódu podle grafické konfigurace.

CoLinkEx

CoLinkEx je bezplatné a otevřené řešení ICE, podporující JTAG a SW rozhraní pro ladění. V současné době je dostupné pro celou řadu procesorů Cortex M0 a Cortex M3™. Kromě programování a ladění v prostředích CoIDE a CoFlash může být použito také v prostředích MDK a IAR. ColinkEx SCH, PCB, BOMList a firmware je možné stáhnout ze stránky www.coocox.org. Aplikace je zdarma i pro komerční použití.

CoOS

CoOS je bezplatný a otevřený RTOS, navržený speciálně pro procesory řady Cortex™-M. Podporuje základní technologie, jako jsou například preemptivní priority, round-robin, Semaphores, Mutex, Flags, Mailbox a Queue pro komunikaci a synchronizaci. Celý systém je vysoce škálovatelný, s minimálními systémovými nároky jádra – pouze 974 B. Dále nechybí ani podpora přerušení při přepínání úloh, detekce přetečení zásobníku a podpora platforem ICCARM, ARMCC a GCC. Specifikace velikosti jednotlivých úkonů je dostupná v tab. 1 a doba vykonání základních úkonů je dostupná v tab. 2 (údaje v tab. 1 a 2 odpovídají měření na CPU STM32F103RB se systémovými hodinami 72 MHz, spuštění zdrojového kódu z paměti Flash s latencí v hodnotě 2 a povolenou vyrovnávací pamětí).

tabulka 1

Tabulka 1

tabulka

Tabulka 2

CoOS je součástí CoIDE. Pokud potřebujete, je možné zdrojový kód z CoOS použít v daném projektu a to jednoduše zaškrtnutím CoOS komponenty a změnou čísla úlohy, zásobníku, hodnoty systémových hodin a dalších proměnných v konfiguračním souboru OS_Config.h dle konkrétního projektu. Zdrojové kódy CoOS jsou zobrazovány v okně s příklady, což výrazně zjednodušuje práci na projektu.

CoCenter

CoCenter je uživatelské centrum aplikace Coocox, umožňující registraci uživatelů, stahování softwaru, aktualizaci a další funkce. V budoucnu bude pro Coocox dostupný také speciální nástroj pro online komunikaci mezi jednotlivými uživateli. Vývojáři, kteří ve své aplikaci používají stejné MCU, budou automaticky přiřazeni do dané skupiny a budou moci využít on-line komunikaci v reálném čase.

Závěr

Zavedením platformy Coocox je možné vytvořit vznik speciální sociální sítě, určené pro vývojáře embedded aplikací. Výhodou je, že vývojová embedded platforma s technologií Cloud Computingu může nabídkou relevantních zdrojů a informací významně snížit dobu vývoje nového zařízení. Mezi další přednosti pak patří podpora on-line komunikace při řešení technických problémů, sdílení a spolupráce s dalšími vývojáři a efektivní systém pro vzájemnou výměnu informací.

www.farnell.com/cz

www.element14.com

 

Literatura

[1] Cloud Computing: Clash of the clouds. The Economist. 2009-10-15. www.economist.com/displaystory. cfm?story_ id=14637206. Retrieved 2010-11-03.
[2] Cloud Computing Defined. www. cloudcomputingdefined.com. 17 July 2010. Retrieved 201011-03.
[3] A. Acquisti and R. Gross. Imagined communities: Awareness, information sharing, and privacy on the Facebook. In Privacy Enhancing Technologies Workshop, 2006.