>>> Techniki rozbudowy systemów wbudowanych >>> Biblioteki wspomagające rozbudowę systemów wbudowanych Name: Mariusz Naumowicz Date: 29 maja 2019 [~]$ _ [1/14]
>>> Treści wykładu I 1. HAL 2. libusb 3. V USB 4. lwip 5. uip [~]$ _ [2/14]
>>> HAL Hardware Abstraction Layer (HAL) zapewnia usługę opartą na API dla warstw wyższego rzędu (np.: Application Framework, aplikacja kliencka, itp.), która pozwala wykonywać operacje zorientowane na sprzęt niezależnie od rzeczywistych szczegółów sprzętowych. [1. HAL]$ _ [3/14]
>>> Problemy rozwiązywane przez HAL * Przenoszenie kodu z jednego sprzętu na inny wymaga wielu wyczerpujących operacji wyszukiwania i zastępowania * Każda kombinacja PIM i sprzętu wymaga dedykowanego wydania projektu kodu utrzymanie tego wymaga dużych nakładów * Kod związany z algorytmem jest zmieszany z dostępem sprzętowym bardzo trudno jest ulepszyć algorytm niezależnie od jego zależności sprzętowej. [1. HAL]$ _ [4/14]
>>> Cele projektowe HAL * Warstwa abstrakcji sprzętu powinna umożliwiać klientom generowanie plików warstwy abstrakcji sprzętu specyficznych dla ich płyty sprzętowej przy minimalnym wysiłku, * Wymaganie minimalnego czasu wykonania, * Używanie architektury modułowej * Wykorzystanie MCC do generowania sterowników urządzeń peryferyjnych (jeśli są dostępne). [1. HAL]$ _ [5/14]
>>> libusb libusb to biblioteka C, która zapewnia ogólny dostęp do urządzeń USB. Jest przeznaczony do wykorzystania przez programistów w celu ułatwienia produkcji aplikacji komunikujących się ze sprzętem USB. [2. libusb]$ _ [6/14]
>>> Projekty wykorzystujące libusb * OpenOCD i inne projekty oparte na libftdi * CUPS system drukowania Open Source * UsbPicProg programator Open Source dla PIC * QEMU ogólny i otwarty emulator maszyny i wirtualizator. * OpenKinect biblioteka i aplikacje dla urządzenia Microsoft Xbox Kinect * Dolphin Emulator - Emulator dla konsol do gier wideo Nintendo: GameCube i Wii [2. libusb]$ _ [7/14]
>>> V USB V USB to programowa implementacja urządzenia USB o niskiej prędkości dla mikrokontrolerów AVR firmy Atmel, dzięki czemu możliwe jest zbudowanie sprzętu USB z prawie każdym mikrokontrolerem AVR, nie wymagającym dodatkowego układu. [3. V USB]$ _ [8/14]
>>> Cechy projektu V USB * W pełni zgodne z USB 1.1 urządzenie o niskiej prędkości, z wyjątkiem obsługi błędów komunikacji i specyfikacji elektrycznych. * Przykładowe projekty demonstrujące implementacje sterowników urządzeń i hostów w systemach Linux, Mac OS X i Windows. * Obsługuje wiele punktów końcowych: jeden punkt końcowy sterowania, dwa punkty końcowe przerwania / bulk-in i do 7 punktów końcowych przerwania / bulk-out. (Należy pamiętać, że specyfikacja USB zabrania masowych punktów końcowych dla urządzeń o niskiej prędkości, ale V USB obsługuje je do pewnego stopnia). * Domyślnie przesyła dane o rozmiarach do 254 bajtów, potrafi więcej jako opcja konfiguracji. * Dostarczany z dowolnie używanymi identyfikatorami USB (pary ID dostawcy i ID produktu). * Działa na dowolnym mikrokontrolerze AVR z co najmniej 2 kb pamięci Flash, 128 bajtami pamięci RAM i częstotliwością zegara co najmniej 12 MHz. * Nie jest wymagany UART, timer, jednostka przechwytywania wejścia lub inny specjalny sprzęt (z wyjątkiem jednego przerwania wywoływanego przez krawędź). * Może być taktowany kryształami 12 MHz, 15 MHz, 16 MHz 18 MHz lub 20 MHz lub wewnętrznym oscylatorem RC 12,8 MHz lub 16,5 MHz. * Funkcja wysokiego poziomu jest napisana w języku C i jest dobrze komentowana. * Tylko rozmiar kodu od 1150 do 1400 bajtów. * Można wybrać licencję: Open Source lub komercyjną. [3. V USB]$ _ [9/14]
>>> Typowy obwód projektu wykorzystującego V USB [3. V USB]$ _ [10/14]
>>> lwip - Lekki stos TCP / IP Implementacja protokołu TCP / IP lwip koncentruje się na zmniejszeniu wykorzystania zasobów przy jednoczesnym zachowaniu pełnej skali TCP. To sprawia, że lwip nadaje się do użycia w systemach wbudowanych z dziesiątkami kilobajtów wolnej pamięci RAM i miejscem na około 40 kilobajtów kodu ROM. [4. lwip]$ _ [11/14]
>>> Główne cechy lwip * Protokoły: IP, IPv6, ICMP, ND, MLD, UDP, TCP, IGMP, ARP, PPPoS, PPPoE * klient DHCP, klient DNS (w tym przelicznik nazw hostów mdns), AutoIP / APIPA (Zeroconf), agent SNMP (v1, v2c, v3, prywatna obsługa MIB i kompilator MIB) * Interfejsy API: wyspecjalizowane interfejsy API zwiększające wydajność, opcjonalne gniazdo API Berkeley-alike * Rozszerzone funkcje: przekazywanie IP przez wiele interfejsów sieciowych, kontrola przeciążenia TCP, szacowanie RTT i szybkie odzyskiwanie / szybki retransmisja * Aplikacje dodatkowe: serwer HTTP (S), klient SNTP, klient SMTP (S), ping, serwer nazw NetBIOS, odpowiadający mdns, klient MQTT, serwer TFTP [4. lwip]$ _ [12/14]
>>> uip (micro-ip) uip to najmniejszy na świecie pełny stos TCP / IP. Przeznaczony dla małych systemów opartych na mikrokontrolerach, w których rozmiar kodu i pamięć RAM są mocno ograniczone, uip wymaga tylko 4 5 kilobajtów przestrzeni kodu i kilkuset bajtów pamięci RAM. uip został przeniesiony do szerokiej gamy systemów i trafił do wielu produktów komercyjnych. [5. uip]$ _ [13/14]
>>> References libusb. https://github.com/libusb/libusb/wiki. V-USB. https://www.obdev.at/products/vusb/index.html. Adam Dunkels. lwip. http://savannah.nongnu.org/projects/lwip/. Adam Dunkels. uip (micro-ip). http://dunkels.com/adam/software.html. [5. uip]$ _ [14/14]