Modularność ponad wszystko

Budowa Windows CE umożliwia przystosowanie systemu do obsługi różnorakich urządzeń - od palmtopów po przemysłowe układy sterujące.

Budowa Windows CE umożliwia przystosowanie systemu do obsługi różnorakich urządzeń - od palmtopów po przemysłowe układy sterujące.

Podstawowym produktem Microsoftu przeznaczonym do pracy w komputerach naręcznych lub tzw. dedykowanych urządzeniach jest Windows CE. Jego główną zaletą jest modularność. Tworząc wersję systemu dostosowaną do obsługi danego urządzenia, można wybierać z ponad kilkuset komponentów, takich jak DirectX, obsługa SmartCard czy nawet podsystem okienkowy. Do "składania" systemu operacyjnego Microsoft udostępnia aplikację Platform Builder 4.0, która pozwala na łatwe wybieranie poszczególnych komponentów i sterowników oraz tworzenie obrazu systemu przeznaczonego do umieszczenia, np. w pamięci Flash. Windows CE obsługuje kilkadziesiąt procesorów (od Hitachi SH3, NEC VR4102, przez serię ARM i MIPS, aż po Intel 486 i Pentium). Ze stron Microsoftu można również pobrać kod źródłowy systemu operacyjnego.

W czasie rzeczywistym

Windows CE jest jedynym systemem czasu rzeczywistego stworzonym przez Microsoft. W tego typu systemach inaczej definiuje się pojęcie poprawności algorytmu. Nie wystarczy, by algorytm dla danych wejściowych spełniających warunki początkowe dawał poprawny wynik, ale także by obliczenia były wykonane w ściśle określonym oknie czasowym. Ma to znaczenie zwłaszcza w sytuacji, gdy Windows CE jest wykorzystywany do sterowania urządzeniami. Mechanizm obsługi przerwań wbudowany w ten system pozwala m.in. dokładnie określić czas, jaki upłynął między zgłoszeniem przerwania o danym priorytecie a uruchomieniem procedury obsługi tego przerwania. Obsługa przerwań została podzielona na dwa etapy: proces zgłoszenia przerwania (ISR) i właściwy wątek obsługi przerwania (IST). Manipulując priorytetami wątków, można zapewnić odpowiedni czas obsługi krytycznych przerwań. Ponadto dość dobrze jest udokumentowany czas wywołania poszczególnych funkcji jądra, a działanie systemu operacyjnego jest przewidywalne. Mimo że jest to system wielozadaniowy, można np. dokładnie obliczyć, ile czasu będzie wykonywana dana procedura.

Microsoft opracował specjalną wersję Windows CE for Automotive, przeznaczoną dla urządzeń instalowanych w samochodach. Ta specyfikacja obejmuje szeroką gamę urządzeń użytkowych: od radioodbiornika samochodowego, przez odtwarzacz CD, przeglądarkę wbudowaną w deskę rozdzielczą, aż po specjalny mechanizm powiadamiania o uszkodzeniach sprzętowych (poziomie oleju itp.).

Programowanie

Do programowania na Windows CE jest przeznaczony pakiet Microsoft Embedded Tools, zawierający narzędzia eVB i eVC ("e" pochodzi w tym wypadku od embedded). eVB to tak naprawdę Visual Basic, tworzący specjalny p-kod, który następnie jest interpretowany przez moduł runtime na Windows CE (dzięki temu aplikacje są bardzo małe). Przeniesienie logiki aplikacji między dużym programem w VB a eVB sprowadza się do przekopiowania fragmentów kodu.

eVC to kompilator C/C++ generujący kod dla każdego z procesorów, na których może działać Windows CE. Język programowania jest taki sam jak w Visual C++ 6.0. Pewne różnice występują w bibliotekach. Ponad 80% klas biblioteki MFC jest takie samo na Windows CE i na Win32. Główne różnice dotyczą wyświetlania, a w przypadku biblioteki ATL - sposobu rejestracji obiektów COM. Pakiet Microsoft Embedded Tools jest dostępny bezpłatnie pod adresemhttp://msdn.microsoft.com (wraz z emulatorami różnych edycji Windows CE).

Wiele rozwiązań tworzonych pod kątem urządzeń Windows CE wykorzystuje przeglądarkę internetową. Windows CE 3.0 zawiera wbudowaną przeglądarkę Internet Explorer, obsługującą JavaScript, DHTML, a także parser XML. Na Windows CE można uruchomić serwer WWW. Pod kontrolą tego systemu może działać również specjalna wersja SQL Server 2000. Może ona funkcjonowć jako pełny SQL-owy motor bazodanowy, ale w typowych zastosowaniach są wykorzystywane wyłącznie moduły do replikacji danych między komputerem naręcznym a dużą bazą danych.

Dla komputerów naręcznych z Windows CE jest dostępnych wiele różnych języków programowania (np. PocketC), które pozwalają dosyć wygodnie pisać i testować algorytmy. Narzędzia te umożliwiają także dość łatwe przenoszenie fragmentów kodu pomiędzy "dużym" a małym kompilatorem.

Co zmieni Talisker?

Talisker to robocza nazwa kolejnej wersji Windows CE, która jest obecnie dostępna jako beta 2 (także jako emulator na PC). Ma to być pierwsza platforma mobilna, zgodna ze specyfikacją .NET Framework, co pozwoli programiście w dużym stopniu posługiwać się podobnymi mechanizmami do tych, jakich używa tworząc oprogramowanie w Visual Studio .NET. Niemal zupełnie zostanie przebudowane API (jednak generalnie budowa modułowa pozostanie bez zmian) i system będzie wyposażony w rozbudowane mechanizmy komunikacji.

Platforma ma być wyposażona we wbudowaną obsługę Bluetooth, mechanizm automatycznego powiadamiania o utracie/nawiązaniu połączenia z innym urządzeniem przenośnym, pełną obsługę LDAP 3.0, NDIS 5.1, a także obsługę protokołu Remote Desktop Protocol, przeznaczonego do komunikacji z serwerem terminalowym. Dodane zostanie wsparcie dla nowego typu sterowników, np. będzie możliwe, by sterownik urządzenia instalował własny kod w obrębie ISR (a nie tylko procedurę obsługi w IRT). Ponadto będzie ujednolicony mechanizm powiadamiania o tym, że urządzenie zostało odłączone, np. gdy bateria będzie na wyczerpaniu. Microsoft zdecydował się także przenieść na Talisker mechanizm, pozwalający tworzyć z kilku wyświetlaczy jeden, duży ekran.

Raj dla programistów

Rynek aplikacji dla komputerów naręcznych dopiero się tworzy i stanowi duże wyzwanie dla programistów. Podobnie jak przed ponad dziesięcioma laty w przypadku komputerów PC, tak i teraz bardzo ważne jest oszczędne gospodarowanie zasobami palmtopów. Programista musi decydować, czy dane fragmenty kodu mają być optymalizowane pod względem wydajności (i mieć zazwyczaj większy rozmiar) czy pod względem wielkości (i wolniej pracować). Wybór nie jest oczywisty. Dostępne na rynku komputery naręczne (np. Compaq iPaq) mają moc obliczeniową porównywalną z Pentium 150 i zwykle tylko 32 lub 64 MB RAM. Pojawiły się już wprawdzie mechanizmy które pozwalają w sposób "przezroczysty" dla aplikacji symulować pamięć wirtualną na kartach flash czy innych, wolniejszych typach pamięci, ale komplikuje to architekturę aplikacji.

Kolejnym wyzwaniem dla programistów jest zaprojektowanie wygodnego interfejsu użytkownika. Ekran komputerów PocketPC o rozmiarach 320 x 240 pikseli i tak jest duży w porównaniu z obszarem wyświetlania ekranów telefonów komórkowych. Różny jest także sposób wprowadzania informacji: od rysików i ekranów dotykowych, przez klawiatury miniaturowe, aż po np. klawiaturę telefoniczną. O przewadze programu może decydować to, czy będzie wygodny w użyciu, a nie to czy będzie "ładny".

Trzeci problem to synchronizacja danych. Microsoft opracował mechanizm ActiveSync, który pozwala, by aplikacje w odpowiedni sposób rejestrowały się i określały, jakie informacje są wymieniane między zwykłym PC a małym komputerem. Bez trudu można dodawać filtry, które na bieżąco przekształcają, np. formaty plików z danymi. ActiveSync jest bardzo dobrze udokumentowany. Otwartym problemem jest bezpośrednia wymiana informacji między komputerami naręcznymi. Ma ją uprościć kolejna wersja Windows CE, która będzie obsługiwać standard Object Exchange Protocol (OBEX).

Istotnym problemem jest również zapewnienie przenośności aplikacji pomiędzy różnymi komputerami naręcznymi. Nawet w przypadku PocketPC występują duże różnice w architekturze systemowej: starsze modele iPAQ mogą wyświetlać 4096 kolorów, nowsze - 65 535. Inne są rozmiary dostępnej pamięci. W przypadku urządzeń, gdzie zainstalowany jest pewien wybrany zestaw modułów Windows CE, może się okazać, że część API nie jest dostępna.

Otwartą kwestią jest wykorzystanie komputerów naręcznych jako terminali dużych systemów (ERP, aplikacji finansowych czy jako platforma do szybkiego dostępu do raportów tworzonych na innych platformach). Wydaje się, że idea budo-wy uniwersalnych komputerów wyposa- żonych np. w bezprzewodowe interfejsy Bluetooth jest dobrym kierunkiem rozwoju. Pozwala na tworzenie bardziej uniwersalnych rozwiązań. Jednocześnie jest również możliwa budowa znacznie tańszych komputerów naręcznych w przypadku, gdy dokładnie znany jest docelowy obszar ich zastosowań. Co jednak zrobić, gdy wymagania się zmienią?

System wbudowany na wiele sposobów

Oprócz Windows CE Microsoft opracował "odchudzoną" wersję Windows NT, dostępną pod nazwą Windows NT Embedded (będzie również oferowana analogiczna wersja Windows XP - obecnie opracowywana jest wersja beta 2).

Podobnie jak w przypadku Windows CE, system ma budowę modułową i licencjobiorca może wybrać, jakie komponenty instaluje w danym urządzeniu. Przykładowo, może zrezygnować z interfejsu użytkownika (wyświetlacza i klawiatury). Jednak w odróżnieniu od Windows CE, NT/XP Embedded obsługują pełne API Win32 nawet wtedy gdy dana funkcja nie może działać, np. funkcje GDI urucha- miane w systemie bez wyświetlacza będą zwracać poprawne wartości. Dla Windows NT dostępne jest narzędzie podobne do Platform Builder, które pozwala składać ostateczny system z modułów.

Ani Windows NT Embedded, ani Windows XP Embedded nie obsługują jednak przerwań z priorytetem i nie są systemami czasu rzeczywistego. Tak więc do sterowania urządzeniami zdecydowanie lepszy jest Windows CE, który ma też znacznie mniejsze wymagania pod względem pamięci.

Konkurencja Windows CE

Palm OS

Podstawowa różnica między Windows CE a Palm OS wynika z budowy systemu operacyjnego. W komputerach typu Palm system operacyjny jest monolityczny: dostosowany tylko do jednej platformy i ma stały zestaw funkcji API (które, co ciekawe, są częściowo ukryte z powodów licencyjnych). Palm OS jest oparty na jądrze firmy Kadak i z tego powodu jego producent nie może udostępniać programistom części funkcji jądra. Chcąc obsłużyć dodatkowe urządzenia czy wręcz zastąpić oryginalne wyposażenie Palma, trzeba nadbudować na istniejącą strukturę systemu nowy element, zachowując również niepotrzebne elementy OS. Kolejne ograniczenie w Palmie ma związek z konstrukcją sprzętu Ń Windows CE ma praktycznie 4 GB przestrzeń adresową (funkcję pamięci "wirtualnej" mogą pełnić karty pamięci flash). Palm OS 3.x ma fizyczne ograniczenie do 12 MB RAM (więcej nie jest w stanie obsłużyć).

Palm OS, w odróżnieniu od Windows CE, jest systemem jednozadaniowym i trudne jest jednoczesne uruchamianie pod jego kontrolą wielu usług. Wymaga to umiejętnego wykonywania operacji na poziomie jądra i często może być przyczyną zawieszenia pracy komputera. W Windows CE można usuwać wadliwie działające wątki/procesy, nie zamykając systemu.

Programowanie na Palm OS wymaga dodatkowych inwestycji. O ile Microsoft zdecydował, że w zasadzie niemal wszystkie narzędzia potrzebne do programowania Windows CE są dostępne bezpłatnie, o tyle aby rozpocząć programowanie dla Palm OS, należy kupić za ok. 500 USD kompilator C/C++ Code Warrior. Możliwe jest również uruchamianie na Palmie aplikacji pisanych w Javie, ale jej maszyna wirtualna zajmuje sporą część i tak małej pamięci urządzenia, większość aplikacji tworzonych jest więc w C.

Epoc

System operacyjny Epoc jest używany w komputerach typu Psion (najnowsze z nich są wyposażane w Symbiant Platform 6.0). Taki sam system operacyjny jest wbudowany w Nokia Communicator.

Podobnie jak Windows CE, jest to 32-bitowy system wielozadaniowy z wywłaszczaniem, obsługujący standard kodowania znaków Unicode. Ciekawą cechą jest wbudowanie w OS mechanizmów ułatwiających eliminowanie przecieków pamięci. Dla programistów dostępne są darmowe pakiety SDK, dostosowane do C/C++ oraz Javy. W przypadku komputerów Psion z Epoc 5 jest oferowana maszyna wirtualna Java, zgodna ze specyfikacją JDK 1.1.4 (nie wiadomo, czy pojawi się wersja J2ME na tę platformę). W przypadku Symbiant OS można wykorzystywać Sun PersonalJava 1.1.1 oraz niektóre elementy JavaPhone 1.0.

Na tę platformę opracowano także język RAD o nazwie OPL. Projektowanie aplikacji i składnia języka są wzorowane na Visual Basic. OPL można dosyć łatwo rozszerzać poprzez wprowadzanie odpowiednich procedur, napisanych w C/C++. Jest wykorzystywany głównie do tworzenia interfejsu użytkownika (a logika aplikacji jest kodowana w C).

Programy można tworzyć od razu na palmtopie, kompilator może bowiem działać na urządzeniu przenośnym.


TOP 200