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 time). Windows XP Embedded jako Windows XP ale s možností volby komponent. Není skutečně real-time systém (soft-realtime 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( 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( build), nahrání do zařízení (deployment( 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( 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 Paměťový prostor procesu Thread 1 Thread 2 Thread 3 Jednotlivé procesy v systému mají oddělené paměťové prostory. 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 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( 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 t prováděcího toku. lpparameter data předp edávaná do toku. dwcreationflags upřes esňující parametry pro vytvořen ení toku, např.. lze vytvořit pozastavený (suspended),( výchozí je, že e tok ihned po vytvořen 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 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 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