Windows a real-time Windows Embedded
Windows pro Embedded zařízení Současnost (2008): Windows Embedded WINDOWS EMBEDDED
Windows Embedded CE
Windows XP Embedded
Windows Embedded for Point of Service
Minulé verze: Windows CE (2.1, 3.0, .NET (4.2), 5.0) Windows NT Embedded Embedded = zařízení, kde je počítač „vestavěn“, slouží jednomu účelu, např. MP3 přehrávač, dopravní signalizace atd., řídící systém v továrně.
Verze Windows Embedded ¾
Windows CE – pro malá zařízení, i méně než 1 MB paměti, bez pevného disku. Skutečně real-time systém, od začátku navržen jako takový (hard real-time).
¾
Windows XP Embedded – jako Windows XP ale s možností volby komponent. Není skutečně real-time systém (soft-realtime).
¾
Windows Embedded for Point of Service – operační systém pro „Point Of Sale“ zařízení.
POS = software a hardware pro prodejní místa, např. pokladna v obchodě, restaurace, hotely…
Windows? Výhody: ¾ Kompatibilita s desktop systémy Windows -> osvědčené vývojové nástroje (Visual Studio), zkušenosti vývojářů ¾ Podpora různého hardware = velké množství ovladačů, viz Windows XP.
Vývoj pro Windows Embedded ¾ Windows CE ani XP Embedded se
neprodává jako samostatný systém, pouze se zařízením, např. průmyslovým počítačem. A) Vývoj kompletního systému pro určité zařízení B) Vývoj aplikace běžící na zakoupeném systému, např. na průmyslovém počítači
A) Vývoj kompletního systému ¾ Operační systém i s aplikacemi „na míru“
pro dané zařízení. ¾ Vytvoří se obraz (image) systému který obsahuje jádro OS, ovladače pro daný hardware i aplikace. ¾ Postup vývoje je různý pro Windows CE a XP Embedded
Vývoj pro Windows CE ¾ ¾ ¾ ¾ ¾ ¾ ¾
Samotný systém i aplikace se vytváří ve Visual Studio s modulem Platform Builder Jako typ projektu vybereme Platform Builder. V něm pak projekt „OS Design“ = návrh systému Výběr platformy (procesor ARM, x86,…) Výběr cílového zařízení (např. PDA, telefon,…). Možnost přidat vlastní aplikace do obrazu systému Vytvoření obrazu systému (build), nahrání do zařízení (deployment)
Vývoj pro Windows XP Embedded …spočívá ve výběru komponent, které chceme zahrnout do systému…
1.
Analyzovat hardware cílového počítače. Pomocí programu Target Analyzer, spustitelného i z bootovacího CD, apod). Výstupem je soubor obsahující informace o HW konfiguraci zařízení (typ síťové karty, grafické karty atd..)
2.
Vytvořit z výsledků analýzy „komponentu“ Nástroj Component Designer. Je možno importovat i ovladače zařízení, které nejsou standardní součástí systému (z CD od výrobce apod., jde o běžné ovladače pro Windows XP).
3.
Vybrat komponenty pro náš systém Nástroj Target Designer - včetně komponenty vytvořené v předchozím kroku, která obsahuje ovladače pro naše zařízení. Celkem k dispozici 12000 komponent, z toho 9000 ovladače, 3000 systém.
4.
Generování obrazu systému (Build) Vytvoří strukturu složek jako běžný Windows XP. Stačí zkopírovat na cílové zařízení.
Srovnejte Desktop verze Windows: ¾ Instalace systému; výhradně pro platformu PC (procesor x86); obrovská sada ovladačů pro všechny podporované zařízení (grafické karty, tiskárny, atd.) + standardní software. Možnost doinstalovat další programy. Embedded systém: ¾ Systém pevně svázán s hardware = obraz systému „šitý na míru“, obsahuje jen ovladače pro konkrétní zařízení. Konfigurace se provádí při vytváření systému, ne při instalaci. ¾ Není potřeba všechny komponenty systému, např. rozhraní pro scanner, služby pro sdílení souborů... Æ úspora místa, prostředků, zvýšení spolehlivosti.
Tvorba aplikací pro Windows Embedded ¾
¾ ¾
¾
Lze využít Windows API (Application Programing Interface) – stejné jako pro běžné „desktop“ systémy Windows. U Windows XP Embedded kompletní Win API Windows CE implementuje omezenou skupinu funkcí Windows API. Navíc má některé specifické funkce, např. CESetThreadPriority. Výhoda: využití zkušeností z vývoje běžných aplikací pro Windows, stejné vývojové prostředí.
Náš cíl Vytváření aplikací provádějících více činností najednou v prostředí Windows (Win API) ¾
Proces ve Windows = program. Např. Internet Explorer.
¾
Jednotkou plánování systému není proces ale tzv. thread (vlákno, prováděcí tok).
¾
Každý proces má jeden nebo více prováděcích toků. Např. IE: jeden thread stahuje data, další reaguje na příkazy uživatele.
¾
Při startu procesu se vytvoří a spustí první prováděcí tok. Proces pak může vytvořit další toky podle potřeby.
Procesy a prováděcí toky Proces, např. Word • Jednotlivé procesy v systému mají oddělené paměťové prostory. Paměťový prostor procesu
Thread 1
Thread 2
Thread 3
• Prováděcí toky v jednom procesu mají společný paměťový prostor Æ globální proměnná je viditelná ve všech prováděcích tocích procesu (prováděcí tok = funkce jazyka C).
Priority ve Windows Priorita je atributem každého prováděcího toku (thread) „Desktop“ verze Windows (včetně XP Embedded): ¾ 32 priorit, 0 nejnižší, 32 nejvyšší. ¾ Proces určuje základní prioritu, priorita prováděcího toku se od ní může lišit pouze o určitou hodnotu (třídy priorit) Windows CE: ¾ 256 priorit, 0 nejvyšší, 255 nejnižší (vyšší číslo =menší priorita). ¾ Priority jsou výhradně vlastnost prováděcího toku. Jeden proces může obsahovat thread s velmi vysokou prioritou a současně thread s velmi nízkou prioritou.
Vytvoření thread ¾
¾
¾ ¾ ¾
Aplikace např. pro řízení technologického procesu = proces Windows. Ten spustí uživatel nebo automaticky při startu systému. My vytvoříme prováděcí toky („thready“) uvnitř tohoto procesu, např. thread pro měření teploty, thread pro komunikaci s uživatelem, atd. Funkce Win API CreateThread(), viz Nápověda Visual Studio. Prováděcí tok (thread) = funkce v jazyku C Funkce main() = základní prováděcí tok procesu
CreateThread - parametry
¾ ¾ ¾ ¾ ¾ ¾ ¾
lpThreadAttributes – parametry zabezpečení, použijeme NULL Æ výchozí. dwStackSize – velikost zásobníku pro thread. 0 Æ výchozí velikost. lpStartAddress – funkce = tělo prováděcího toku. lpParameter – data předávaná do toku. dwCreationFlags – upřesňující parametry pro vytvoření toku, např. lze vytvořit pozastavený (suspended), výchozí je, že tok ihned po vytvoření běží. lpThreadId – Identifikátor vytvořené thread. Funkce vrací handle vytvořené thread nebo NULL pokud selže.
Příklad: CreateThread(NULL, 0, proc_cas, NULL, 0, &id);
První program - stopky Stejný jako program s RTMON, jen místo služeb RTMON využíváme služby Windows. ¾ A tomu co v RTMON bylo „proces“ zde říkáme “prováděcí tok“ (thread). ¾
Windows
Thread 1 hodiny
Thread 2 klávesnice
Periodicky spouštěný proces ¾ ¾
Některé OS neposkytují mechanizmus pro periodicky spouštěné procesy Náhrada: pozastavení procesu na zadanou dobu. Např. proces s periodou 1 sekunda:
while(1) { cas++; ZobrazCas(cas); Sleep(1000); }
// pozastaveni na 1 sekundu
Poznámka: další možností ve Windows je využití časovačů (WaitableTimer)
Poznámka k prioritám ¾ ¾ ¾ ¾
CreateThread nemá parametr pro prioritu Thread dostane výchozí prioritu (THREAD_PRIORITY_NORMAL) Nastavení priority: SetThreadPriority(). POZOR: S výjimkou Windows CE je priorita thread odvozena od priority procesu, do kterého patří (tj. „absolutní“ priorita thread je priorita_procesu +/- zde nastavená priorita). Nelze zvýšit prioritu thread o více než určitou hodnotu nad hodnotu priority procesu.
Konec