ARCHITEKTURA SYSTEMÓW WBUDOWANYCH - LABORATORIUM Ćwiczenie 2. Temat: Instalacja systemu Microsoft Windows i sterowników na platformie Intel Galileo Gen2. 1. Wstęp Na przestrzeni ostatnich lat, ze względu na rozwój tanich, energooszczędnych i coraz bardziej wydajnych mikroprocesorów i mikrokontrolerów struktura oprogramowania systemów wbudowanych zasadniczo się zmienia. Niegdyś oprogramowanie stworzone najczęściej w języku C bądź w asemblerze stanowiło jedyny kod wykonywany przez procesor lub mikrokontroler. W ostatnich latach jest obserwowany gwałtowny rozwój systemów wbudowanych opartych na systemach operacyjnych, często czasu rzeczywistego RTOS (Real-Time Operating System), pod kontrolą, których pracują przygotowane przez programistów programy. Na platformie Intel Galileo Gen2 można obecnie uruchomić takie systemy jak: Linux Yocto, Linux Debian, Windows. To ćwiczenie ma na celu zapoznać studentów z możliwością instalacji w systemach wbudowanych systemu Windows. Firma Microsoft przygotowująca wersje systemu Windows na urządzenia wykorzystujące koncepcję IoT (Internet of Things) zamierza zaistnieć na rynku systemów wbudowanych. Mimo, że system Windows nie jest systemem czasu rzeczywistego i zazwyczaj nie jest używany w systemach wbudowanych to takie jego zastosowanie ma pewne zalety. Najpoważniejszą zaletą takiego rozwiązania jest łatwa dostępność w pełni zintegrowanych środowisk programistycznych (IDE) np. Visual Studio, umożliwiających tworzenie, uruchamianie i debugowanie tworzonego oprogramowania w różnych językach programowania. Ważnym czynnikiem decydującym o wyborze systemu Windows do kontroli systemu wbudowanego jest również możliwość łatwego przeniesienia kodu z komputerów PC (szczególnie w przypadku rodziny procesorów x86). 2. Budowa platformy Intel Galileo Gen2 Intel Galileo jest platformą kompatybilną z Arduino Arduino Uno R3 opartą o procesor klasy x86 Intel Quark X1000 (32-bitowy system klasy Intel Pentium) o prędkości taktowania 400 MHz. Procesor posiada 16 KBytes pamięci cache pierwszego poziomu. Platforma Galileo posiada pamięci 512 KB SRAM, 256MB DRAM DDR3 oraz 8MB pamięci flash na lekką dystrybucję linuxa (Yocto). Bardziej rozbudowane systemy operacyjne takie jak np. Linux Yocto, Linux Debian, Windows można umieścić na karcie microsd. Płyta Galileo posiada również zegar RTC z możliwością podtrzymania ustawień zegara poprzez zewnętrzne napięcie zasilające 3V. Intel Galileo posiada interfejsy komunikacyjne charakterystyczne dla mikrokontrolerów: Magistrala I2C - piny SDA i SCL, Magistrala SPI - domyślnie z prędkością 4 MHz, 1
Szeregowy interfejs UART - z programowalną prędkością (piny RX i TX), 14 pinów cyfrowych GPIO - z czego 6 może zostać wykorzystanych jako źródło sygnału PWM, 6 analogowych wejść - oznaczonych symbolami A0-A5, podłączonych do 12-bitowego przetwornika analogowo-cyfrowego AD7298. Złącze Ethernet Złącze terminala Linux Złącze USB CLIENT Złącze USB HOST Złącze zasilacza Złącze kart SD Złącze zgodne ze standardem modułów (Shield) Arduino Rys.1. Platforma Intel Galileo Gen2. Dzięki temu, że układ wyprowadzeń pinów jest identyczny jak w Arduino R3, platforma Intel Galileo może korzystać z bogatej oferty rynkowej modułów Shield (tzw. Skorupki) przygotowanych dla platformy Arduino. Programowanie portów odbywa się podobnie jak dla pozostałych platform Arduino w śwodowisku Arduino IDE oraz dodatkowo z poziomu zainstalowanego w pamięci flash lub na karcie pamieci Linuksa Yocto, Linuxa Debian lub systemu Microsoft Windows m.in. w językach C/C++, Python oraz Bash. 3. Stanowisko laboratoryjne Stanowisko laboratoryjne składa się z komputera PC, Płyty ewaluacyjnej Intel Galileo Gen2 (Rys.1), zestawu okablowania i podstawowych czujników współpracujących z płytą Intel Galileo- Grove Starter Kit Plus Intel IoT Edition (Rys. 2) oraz czytnika kart pamięci micro SD (Rys.3). Zestaw Grove Starter Kit Plus Intel IoT Edition oprócz okablowania niezbędnego do uruchomienia i korzystania z Intel Galileo Gen2 zawiera: Płytkę przejściową (Base Shield) umożliwiającą dołączenie czujników do Intel Galileo, alfanumeryczny wyświetlacz ciekłokrystaliczny (2 linie po 16 znaków) z podświetleniem RGB, przycisk monostabilny, potencjometr obrotowy, moduł przekaźnika elektromagnetycznego, moduł buzera, moduł mikrofonu pojemnościowego, 2
czujnik natężenia światła, czujnik temperatury (termistor), sensor dotykowy, serwomechanizm, trzy diody elektroluminescencyjne (niebieska, zielona i czerwona) współpracujecie z modułem LED Socket Kit, adapter zasilania bateryjnego. broszura informacyjna. Rys.2. Zestaw czujników i przewodów zestawu Grove Starter Kit Plus Intel IoT Edition Wraz z wymienionymi elementami producent zestawu dołączył również kartę SD (8GB), na którą można skopiować obraz systemu operacyjnego pracującego na Intel Galileo Gen2 za pomocą czytnika kart micro SD. Do wykonania ćwiczenia niezbędny będzie komputer PC z zainstalowanym oprogramowaniem Visual Studio 2013 Express for Windows Desktop wraz z dodatkiem Windows Developer Program for IoT (dostępnym pod adresem: https://connect.microsoft.com/windowsembeddediot/downloads). Wspomniany dodatek instaluje w systemie komputera PC oprogramowanie umożliwiające 3
komunikację środowiska Visual Studio 2013 Express z platformą Intel Galileo za pomocą sieci LAN (Galileo Watcher). Rys.3. Czytnik kart micro SD wykorzystywany na laboratorium 4. Instalacja systemu Windows na platformie Intel Galileo Gen2. Instalację systemu Microsoft Windows na platformie Intel Galileo należy rozpocząć od pobrania (po zarejestrowaniu się w witrynie Microsoft Connect) odpowiedniego oprogramowania ze strony firmy Microsoft: https://connect.microsoft.com/windowsembeddediot/downloads. Do niezbędnego oprogramowania, które podlega systematycznej aktualizacji należą: 1. Obraz systemu Windows w formacie plików WIM (Windows Developer Program For IoT Windows Image): 9600.16384.x86fre.winblue_rtm_iotbuild.150309-310_galileo_v2.wim (z dnia 2015-03-12) 2. Skrypt umożliwiający przygotowanie karty SD z obrazu system Windows (Windows Developer Program For IoT apply-bootmedia.cmd): apply-bootmedia.cmd (z dnia 2015-02-05) Niestety dostarczony przez firmę Microsoft obraz systemu Windows na platformę Galileo nie zawiera sterowników do bezprzewodowej karty sieciowej. Należy je zainstalować samodzielnie przy użyciu narzędzia Deployment Image Servicing and Management tool (DISM). Aby to uczynić należy pobrać z Internetu niezbędne sterowniki. Można je odnaleźć pod adresem: https://downloadcenter.intel.com/download/24575/intel-proset-wireless-software-and-driversfor-it-administrators. 4
Należy pobrać sterowniki do 32-bitowej wersji Systemu Windows 8.1, będzie to, zatem plik: Wireless_17.13.11_De132.zip. Pobrane pliki należy umieścić w folderze SW na dysku E. W przypadku problemów z pobraniem plików należy poprosić prowadzącego zajęcia o wskazanie alternatywnego źródła wymagano oprogramowania. Pobrane pliki warto uporządkować w przejrzystej strukturze folderów: Pliki obrazu -> E:\SW\Image Pliki sterowników -> E:\SW\Drivers Pliki zamontowanego obrazu -> E:\SW\Offline Ostrożnie umieść kartę pamięci micro SD dołączoną do zestawu Grove Starter Kit Plus Intel IoT Edition w czytniku kart pamięci (Rys.3). Sformatuj kartę micro SD używając systemem plików FAT32 (Rys.4). Rys.4. Formatowanie karty micro SD Rys.5. Sposób uruchamiania Wiersza poleceń Po zakończeniu formatowania karty SD uruchom Wiersz Polecenia z uprawnieniami administratora. Tą czynność można wykonać klikając prawym klawiszem na ikonę w dolnym lewym 5
rogu pulpitu Windows 8.1 a następnie wybierając pozycję: Wiersz polecenia (administrator) (Rys.5). Przejdź do folderu SW za pomocą polecenia e: cd SW W wierszu poleceń wydając komendę Dims /Get-WimInfo można uzyskać informacje dotyczące posiadanego obrazu systemu Windows. Dla przykładowo przytoczonej struktury folderów składnia tego polecenia przymnie postać. Dism /Get-WimInfo /WimFile:E:\SW\image\9600.16384.x86fre.winblue_rtm_iotbuild.150309-0310_galileo_v2.wim Wydanie powyższego polecenia powinno skutkować wyświetleniem informacji jak na rysunku 6. Rys.6. Okno zawierające informacje o posiadanym obrazie systemu Windows 8.1. Kolejnym krokiem jest zamontowanie obrazu plików do folderu Offline celem jego modyfikacji w postaci doinstalowania niezbędnych sterowników (np. posiadanej karty sieciowej Intel Centrino Wireless-N 135). Czynność tą można wykonać wydając polecenie: Dism /Mount-Wim /WimFile:E:\SW\image\9600.16384.x86fre.winblue_rtm_iotbuild.150309-0310_galileo_v2.wim /Name:"MODERNCORE_INSTALL" /MountDir:E:\SW\offline O poprawnym wykonaniu tego polecenia poinformuje komunikat jak na rysunku 7. Rys.7. Okno informujące o poprawnym zamontowaniu obrazu Windows 8.1. 6
Po zamontowaniu systemy Windows w folderze E:\SW\Offline pojawi się struktura folderów i pliki jak w każdym systemie Windows (Rys. 8.) Rys.8. Struktura folderów systemu Windows 8.1 na platformę Intel Galileo. Dodawanie sterowników do zamontowanego obrazu systemu Windows można wykonać za pomocą polecenia Dism /Add-Driver dla przyjętej struktury folderów przyjmie ono postać: Dism /Image:E:\SW\offline /Add-Driver /Driver:E:\SW\drivers\nazwa_sterownika.inf gdzie, jako nazwę sterownika należy podać nazwy plików z rozszerzeniem *.inf. W przypadku sterowników karty sieciowej Intel Centrino Wireless-N 135 występują trzy pliki z rozszerzeniem inf. Zatem wygodniej będzie wskazać od razu wszystkie sterowniki z folderu E:\SW\Drivers. Można tego dokonać wydając polecenie: Dism /Image:E:\SW\offline /Add-Driver /Driver:E:\SW\driver\ /Recurse Po wydaniu tego polecenia narzędzie Deployment Image Servicing and Management tool (DISM) samoczynnie wykrywa wszystkie sterowniki znajdujące się we wskazanym w poleceniu folderze i instaluje je w zamontowanym obrazie systemu Windows. O poprawności wykonania tej czynności informuje okno jak na rysunku 9. Rys.9. Okno informujące o poprawnej instalacji sterowników w systemu Windows 8.1 na platformie Intel Galileo. 7
Zamontowany i wzbogacony o odpowiednie sterowniki obraz systemu Windows 8.1 należy odmontować za pomocą polecenia: Dism /Unmount-Wim /MountDir:E:\SW\offline /Commit Działanie to powinno zostać potwierdzone komunikatem jak na rysunku 10. Rys.9. Okno informujące o poprawnej odmontowaniu obrazu systemu Windows 8.1. Aby umieścić przygotowany wcześniej obraz systemy Windows na Karcie SD należy skorzystać z dostarczonego przez firmę Microsoft skryptu apply-bootmedia.cmd. Sprawdź, pod która literą w systemie Windows widziany jest czytnik kart SD. Dokonaj przygotowania bootowalnej karty SD z systemem Windows dla platformy Galileo wydając polecenie: apply-bootmedia.cmd -destination {ścieżka do karty SD} -image {ścieżka do obrazu system Windows w formacie WIM } -hostname {nazw_hosta} -password {hasło} Jako nazwę hosta należy wpisać ciąg znaków unikalny w sieci LAN (np. nazwisko bądź inicjały wykonujących ćwiczenie). Nazwę hosta i hasło należy zanotować w protokole, będzie potrzebne w dalszej części laboratorium. Przykładowe wywołanie skryptu apply-bootmedia.cmd może wyglądać następująco: apply-bootmedia.cmd -destination F: -image D:\SW\image\9600.16384.x86fre.winblue_rtm_iotbuild.150309-0310_galileo_v2.wim hostname Kowalski -password Quark Uwaga 1! Dla ułatwienia wpisywania nazwy pliku *.wim można posłużyć się klawiszem Tab. W zależności od szybkości komputera procedura tworzenia bootowalnej karty SD z system Windows może zająć kilkunastu do kilkudziesięciu minut. Postęp w przygotowaniach karty SD będzie prezentowany w oknie Wiersz polecenia (Rys.10). 8
Rys.10. Postęp procedury przygotowania karty SD z systemem Windows dla platformy Intel Galileo. Po zakończeniu tworzenie bootowalnej karty SD z systemem Windows otrzymamy komunikat jak na rysunku 11. Rys.11. Zakończenie procedury przygotowania karty SD z systemem Windows 8.1. Uwaga 2! W czasie tworzenia bootowalnej karty SD skrypt apply-bootmedia.cmd na komputerze PC zmienia strefę czasową. Upewnij się, że po zakończeniu tej procedury ustawienia czasu systemowego wrócą do pierwotnych. 9
Uwaga 3! Upewnij się czy poprawnie zapisano nazwę hosta i hasło! Umieść przygotowaną kartę SD w gnieździe na płycie Intel Galileo i podłącz do niej przewód sieciowy. Na komputerze PC uruchom aplikację Galileo Watcher, do której skrót powinien znajdować się na pulpicie systemu Windows. Podłącz zasilanie i zaczekaj na uruchomienie systemu Windows 8.1 na platformie Intel Galileo. W czasie uruchamiania powinna migać dioda SD obok złącza USB HOST. Po kilkudziesięciu sekundach aplikacja Galileo Watcher powinna wykryć w sieci lokalnej nowego hosta (nową płytę Intel Galileo) o nazwie podanej w czasie tworzenia bootowalnej karty SD (Rys.12). W oknie wspomnianej aplikacji można odnaleźć miedzy innymi takie informacje jak: Nazwa hosta, Adres Mac karty sieciowej przewodowej i przydzielony adres IP. Rys.12. Główne okno aplikacji Galileo Watcher. Klikając prawym klawiszem na wybraną widzianą w sieci płytę Galileo należy się z nią połączyć za pomocą protokołu Telnet wybierając opcję Telnet Here. Po wpisaniu loginu Administrator oraz hasła podanego w procesie przygotowania karty SD nastąpi zalogowanie do systemu operacyjnego na płycie Galileo (Rys.13). Rys.13. Okno logowania do systemu Windows 8.1 na platformie Intel Galileo. 10
Poprawność zainstalowania sterowników bezprzewodowej karty sieciowe Intel Centrino Wireless-N 135 można sprawdzić wyszukując wszystkie urządzenia pracujące na platformie Galileo wydając polecenie: devcon find * Odnajdując na wyświetlonej liście bezprzewodową kartę sieciową dowiadujemy się, że posiada ona identyfikator sprzętowy jak na rysunku 14. Rys.14. Lista urządzeń pracujących na platformie Intel Galileo pod kontrolą systemu Windows 8.1. Znając identyfikator sprzętowy można uzyskać informacje o statusie zainstalowanego sterownika kart sieciowej wydając polecenie: devcon status *DEV_0892* Komunikat jak na rysunku 15 świadczy o poprawności instalacji sterowników do karty sieciowej. W przeciwnym razie wydanie polecenia: devcon status *DEV_0892* spowodowałoby wyświetlenie komunikatu o błędu 28 oznaczającego brak zainstalowanych sterowników. Rys.15. Status sterowników bezprzewodowej karty sieciowej Intel Centrino Wireless-N 135 Programowania platformy Intel Galileo pracującej pod kontrolą systemu operacyjnego Windows 8.1 dokonuje się za pomocą środowiska Visual Studio Express 2013 for Windows Desktop. Uruchom Visual Studio Express 2013 for Windows Desktop. Z menu wybierz pozycję Plik->Nowy projekt, a następnie w oknie jak na rysunku 16 szablon aplikacji Visual C++, Windows for IoT. Nazwij projekt i kliknij OK. 11
Rys.16. Okno Nowy projekt Visual Studio Express 2013 for Windows Desktop Każdy nowy projekt domyślnie wypełniony jest kodem programu Blink znanego z Arduino IDE. Jego zadaniem jest naprzemienne zapalanie i gaszenie diody L znajdującej się obok złącza USB HOST na płycie Intel Galileo. Rys.17. Okno główne Visual Studio Express 2013 for Windows Desktop 12
Kompilacja i przesłanie aplikacji następuje poprzez kliknięcie w przycisk: Zdalny debuger Windows (Rys.17.). Niekiedy zdarza się, że środowisko nie znajduje bibliotek platformy Arduino i odpowiednich deklaracji funkcji pochodzących z Arduino IDE. Wówczas w menu Narzędzia- >Menadżer pakietów NuGet->Zarządzaj pakietami NuGet dla rozwiązania należy dołączyć do projektu odpowiedni pakiet plików. W tym przypadku będzie to pakiet Microsoft IoT C++ SDK udostępniony 2 grudnia 2014 roku (rys.18.). Data wydania pakietu jest istotna ponieważ poprzednia wersja tego pakietu o nazwie Galileo C++ SDK nie jest już kompatybilna z najnowszą wersja systemu Windows 8.1. Rys.18. Okno dodawania pakietów NuGet Visual Studio Express 2013 for Windows Desktop Po dołączeniu niezbędnych pakietów należy jeszcze zmienić ustawienia właściwości projektu. W polu Właściwości konfiguracji->debugowanie należy zmienić nazwę serwera zdalnego na taką, jaką podano na etapie tworzenia bootowalnej karty SD. Po zmianie właściwości i uruchomieniu kompilacji etap wdrożenia (przesłania projektu do płyty Galileo) rozpoczyna się od podania nazwy użytkownika oraz hasła podanego na etapie tworzenia karty SD. Programowanie pyty Intel Galileo pod kontrolą systemu Windows 8.1 w środowisku Visual Studio Express 2013 for Windows Desktop odbywa się z wykorzystaniem składni języka stosowanego w Arduino IDE. Każda kompilacja nowej aplikacji umieszcza na karcie SD w folderze wskazanym we właściwościach projektu plik wykonywalny EXE (rys.20), który można uruchomić spod poziomu platformy Galileo. Dostęp do tego folderu można uzyskać klikając prawym przyciskiem myszy na płytę Intel Galileo wykrytą w aplikacji Galileo Watcher i wybierając pozycję Open Network Share. 13
Rys.19. Okno właściwości projektu Visual Studio Express 2013 for Windows Desktop Rys.20. Folder zawierający pliki wykonywalne na platformie Intel Galileo pod kontrolą systemu Windows 8.1. Zamknięcie systemu Windows pracującego na płycie Intel Galileo nastąpi po wydaniu w oknie Telnetu polecenia: shutdown /s /t 0 Po ustaniu migania diody SD można odłączyć zasilanie. Odłączanie zasilania bez poprawnego zamknięcia systemu Windows spowoduje znacznie wydłużenie uruchamiania się systemu przy ponownym uruchomieniu, co ma związek z wyszukiwaniem błędów na dysku (karcie SD) podobnie jak dzieje się to w przypadku komputerów PC. 14
5. Zadanie końcowe 1. Wykorzystując czujnik dźwięku oraz przekaźnik z zestawu startowego Grove napisz program realizujący funkcję przełącznika reagującego na klaśniecie dłoni. Liczbę przełączeń przełącznika wyświetlać na ekranie wyświetlacza LCD. 2. Napisz program/algorytm czujnika zmierzchowego(light sensor), którego czułość regulowana będzie za pomocą potencjometru podłączonego do portu A0 płyty przejściowej z zestawu startowego Grove. W czasie wykonywania zadania końcowego można wykorzystać przykładowe programy (tzw. Sketche) dostarczone przez producenta zestawu startowego Grove Starter Kit Plus Intel IoT Edition dla środowiska Arduino IDE. Przydatną może być również strona internetowa: https://msiot.github.io/content/sampleapps.htm 15
LABORATORIUM ARCHITEKTURY SYSTEMÓW WBUDOWANYCH Ćwiczenie 2 Instalacja systemu Microsoft Windows i sterowników na platformie Intel Galileo Gen2. Data: Godzina: Imię i Nazwisko Numer indeksu Grupa dziekańska 16