Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_ruleruntimep [2008/04/29 07:57] miw |
pl:miw:miw08_ruleruntimep [2019/06/27 15:50] (aktualna) |
====== Opis ====== | ====== Opis ====== |
| __**Projekt zakończony**__ |
| |
Konrad Rybacki, <konrad.rybacki@wp.pl> | Konrad Rybacki, <konrad.rybacki@wp.pl> |
| |
| |
====== Spotkania ====== | ====== Spotkania ====== |
| [[pl:miw:miw08_ruleruntimep:spotkania]] |
| |
===== 08.03.04 ===== | |
* klasy problemow: wymagania sprzetowe, sychnr prologu z otoczeniem, prolog a rt | |
* runtime? linux/prolog | |
| |
| |
* Wybór kompilatora prologa (SWI, GNU), analiza jakości działania obu kompilatorów - pod względem zużycia zasobów systemu, stabilności oraz możliwych mechanizmów komunikacji z innymi składnikami systemu. | |
* Sposób integracji z systemem - np. jako moduł jądra - wysoka wydajność i uproszczona komunikacja między składnikami systemu, duża podatność na awarie, niska portowalność na inne architektury; w przestrzeni użytkownika - większa stabilność kosztem potencjalnie bardziej złożonej komunikacji i mniejszej wydajności, konieczność opracowania rozbudowanej warstwy komunikacyjnej umożliwiającej integrację z systemem | |
* Analiza alternatywnych środowisk uruchomieniowych - porównanie dostępnych platform bazujących na systemie GNU/Linux z innymi dostępnymi, jak np. NetBSD; należy zwrócić uwagę na wymagania sprzętowe, trudności związane z konfiguracją systemu oraz odtwarzaniem tej konfiguracji w nowych warunkach a także jakość dokumentacji i perspektywy rozwoju danej implementacji. Licencje i dostępność. | |
* Rozważenie wykorzystania istniejącego już oprogramowania (D-Bus, PolicyKit, HAL) do realizacji zadań związanych z dostępem do sterowników oraz zarządzaniem zdarzeniami. Ewentualnie wykorzystanie pewnych wzorców dostępnych w wymienionych implementacjach. | |
* Na podstawie powyższych punktów, określenie minimalnych wymagań sprzętowych umożliwiających działanie w czasie rzeczywistym. | |
| |
===== 080318 ===== | |
* wymagania prologu -> SWI/Yap praca na czymś innym niż ix86? ARM? | |
* minimalne środowisko gnu/linux, ew. netbsd? -> spec | |
* emulacja arm, test dystrybucji linux/netbsd arm-owej na [[http://fabrice.bellard.free.fr/qemu/|QEmu]] | |
* **uwaga!** pytanie co daje [[http://ctp.di.fct.unl.pt/~amd/cxprolog/|cxprolog]] i jaki ma footprint, porównując do powyższych? | |
| |
| |
| |
| |
===== 080408 ===== | |
* opis krosskomp | |
* inst linux/bsd arm na wirtualizatorze | |
* testy wydajności prologu http://www.ncc.up.pt/~vsc/Yap/documentation.html#SEC83 | |
* może warto brać pod uwagę jako platformy | |
* [[http://openmoko.org/|OpenMoko.org]] [[http://openmoko.com/|OpenMoko.com]] | |
* [[http://maemo.org|Maemo]] | |
| |
| |
===== 080415 ===== | |
* spis środowisk + ew. ewalucja: OpenMoko, Android -> argumenty | |
* ew. zasadzki w kompilacji prologu na w.w | |
| |
| |
| |
| |
===== 080422 ===== | |
* próby z swi? | |
* bezp. uzycie debiana arm, ew. armel? | |
* http://en.wikipedia.org/wiki/Maemo | |
* http://www.toradex.com/e/colibri_evalboard.php | |
| |
===== 080429 ===== | |
* propozycja generyczna platformy arm, w kier maemo? | |
* minimalne wymagania sprzętowe? | |
* emulator? | |
* http://www.scratchbox.org/ | |
| |
====== Projekt ====== | ====== Projekt ====== |
| |
| |
====== Sprawozdanie ====== | |
| |
| |
| |
| |
| |
Wsparcie dla środowiska Linuksa: [[http://www.vollmann.ch/en/colibri/info.html]], [[http://wiki.toradex.com/index.php?title=Linux]]. Niestety są to rozwiązania komercyjne. | Wsparcie dla środowiska Linuksa: [[http://www.vollmann.ch/en/colibri/info.html]], [[http://wiki.toradex.com/index.php?title=Linux]]. Niestety są to rozwiązania komercyjne. |
| |
| |
| |
===== 29.04.22 ===== | ===== 29.04.22 ===== |
| |
| |
| |
| ==== EMDebian ==== |
| |
| [[http://rybacki.rootnode.net/debian.pdf]] |
| |
| [[http://wiki.debian.org/Embedded_Debian]] |
| |
| [[http://www.emdebian.org/]] |
| |
| [[http://wiki.debian.org/EmdebianQuickStart]] |
| |
| [[http://wiki.debian.org/EmdebianGuide]] |
| |
| ===== Minimalne środowisko uruchomieniowe ===== |
| |
| Jako platformy uruchomieniowej wydałoby się zasadne użycie systemu GNU/Linux wyposażonego w pakiety: D-Bus, PolicyKit oraz Hal. Pakiety te umożliwiają realizację zagadnień takich jak: komunikacja międzyprocesowa, zarządzanie uprawnieniami oraz interakcja z warstwą sprzętową. Dzięki wysokiemu poziomowi abstrakcji oraz łatwej konfigurowalności mogłby by stanowić wystarczające środowisko - teoretycznie, możliwe do przeniesienia na inne platformy. |
| |
| ===== Scratchbox ===== |
| |
| Środowisko to pozwala na imitację częściowo natywnej kompilacji oprogramowania oraz kompilację skrośną. Wykorzystywany jest emulator QEMU dla architektury ARMEL. |
| |
| ===== SDK maemo ===== |
| |
| SDK maemo pozwala na stworzenie środowiska uruchomieniowego na bazie architektury x86 opartej o system GNU/Linux. Nie jest to emulacja, lecz kompilacja i użycie natywnego dla tej architektury kodu ale z użyciem elemetów dostępnych tylko dla maemo: |
| |
| [[http://maemo.org/development/documentation/tutorials/maemo_4-0_tutorial.html#development]] |
| |
| Takie rozwiązanie znacznie zwiększa wygodę testowania i obsługi aplikacji, jednocześnie nie ograniczając możliwości uruchomienia w środowisku emulatora (QEMU). |
| |
| |
| |
| |
| |
| |
| |
| |
| ====== Sprawozdanie ====== |
| |
| ===== Przegląd architektur sprzętowych ===== |
| |
| Ostatecznie, do dalszych prac, zostały uwzględnione trzy różne rozwiązania sprzętowe oparte o procesor architektury arm/armel. Dwa z nich to klasyczne urządzenia typu smartphone/pda, natomiast w przypadku trzecim jest to płyta ewaluacyjna o szerokim zakresie zastosowań. Właściwości tych urządzeń zostaną rozpatrzone w poniższych punktach: |
| |
| |
| |
| ==== Neo1973 ==== |
| |
| Jest to telefon pracujący w standardzie GSM , wyposażony w zestaw funkcji pozwalających zaliczyć go do klasy urządzeń smartphone. W finalnej wersji (aktualnie jest to sprzęt będący obiektem ciągłego rozwoju) mają się znaleźć: |
| |
| * Procesor: Samsung S3C2442 B54 SoC @ 400Mhz |
| * Interfejs WiFi: Atheros 802.11 b/g |
| * Akcelerator graficzny: SMedia Glamo3362 |
| * Dwa czujniki przyspieszeń (3D) |
| * 256MB pamięci Flash |
| * 128MB pamięci SDRAM |
| * 2MB pamięci Flash NOR |
| * Bateria 1200mAh |
| * Podświetlanie LED |
| * Odbiornik GPS u-blox/Atmel ATR0635 |
| * Interfejs Bluetooth |
| * Host USB z zasilaniem |
| * Czytnik kart microSD |
| * Interfejs JTAG |
| |
| Oprogramowanie na tę architekturę powstaje w środowisku OpenMoko, które zostanie opisane w dalszych akapitach. |
| |
| Platforma ta może być emulowana przez wirtualizator QEMU, jednak wsparcie dla niej jest ciągle w fazie rozwoju (konieczności modyfikacji źródeł QEMU na podstawie odpowiedniego repozytorium). |
| |
| |
| ==== Nokia Internet Tablet ==== |
| |
| Jest to seria urządzeń o funkcjonalności zbliżonej do klasycznych rozwiązań typu PDA (wbrew błędnie powielanym opiniom, urządzenia te nie posiadają funkcji telefonu). Najnowszym modelem z tej serii jest N810: |
| |
| * Procesor: 400 MHz TI OMAP 2420 |
| * 2GB pamięci Flash |
| * 128MB pamięci SDRAM |
| * Klawiatura, ekran dotykowy |
| * Wyświetlacz 800x400 pikseli, 16 bitowa głębia kolorów |
| * Intefejs IEEE 802.11 b/g |
| * Bateria 1500mAh |
| * Czytnik kart miniSD |
| * Interfejs Bluetooth |
| * Interfejs USB |
| * Odbiornik GPS |
| * Kamera |
| * Czujnik światła |
| |
| Platforma rozwojowa - maemo. |
| |
| Architektura ta jest wspierana (częściowo) przez wirtualizator QEMU. |
| |
| |
| |
| ==== Płyta ewaluacyjna Versatile ==== |
| |
| Platforma ta, spośród wybranych, zawiera najszerszy zestaw komponentów - jest to rozwiązanie przeznaczone do w pełni profesjonalnych zastosowań. Istnieje wiele odmian tego urządzenia; jako przykład może zostać przedstawiona [[http://www.arm.com/products/DevTools/VPB926EJ-S.html|płyta]]: |
| |
| * Procesor ARM926EJ-S |
| * Akcelerator Java Jazelle®, dodatki DSP |
| * Koprocesor MOVE™, sprzętowy akcelerator kompresji MPEG |
| * Koprocesor zmiennoprzecinkowy |
| * Kontroler DMA, kontroler przerwań |
| * Interfejs JTAG |
| * 64MB pamięci Flash |
| * 128MB 32 bitowej pamięci SDRAM |
| * 2MB pamięci SRAM |
| * Interfejs ethernet |
| * LCD i ekran dotykowy |
| * Wyjście VGA |
| * 4 porty szeregowe |
| * 1 synchroniczny port szeregowy |
| * 32 zewnętrznych wyprowadzeń i/o |
| * 1 interfejs USB, 2 hosty USB |
| * 2 czytniki SmartCard |
| * Interfejs klawiatury i myszy |
| * Wyjście/wejście audio stereo |
| * Wyświetlacz alfanumeryczny 2x16 LCD |
| * Kontroler PCI |
| |
| Platforma wspierana przez wirtualizator QEMU. |
| |
| ===== Przegląd dostępnych środowisk softwareowych ===== |
| |
| |
| |
| |
| ==== OpenMoko ==== |
| |
| Jest to projekt w stu procentach społecznościowy, a zatem i otwarty/niezależny (GPL). Dystrybucja ta powstaje w oparciu o platformę [[http://oe.linuxtogo.org/]]. |
| |
| Struktura zawartego oprogramowania została przedstawiona na poniższym schemacie: |
| |
| {{:pl:miw:soft_stack_openmoko.jpg|:pl:miw:soft_stack_openmoko.jpg}} |
| |
| * Za komunikację międzyprocesową odpowiedzialny jest demon **D-Bus**. |
| * Obsługa zdarzeń systemowych (np. zmiana stanu baterii, itp.) jest zapewniona przez demona **neod**; jest to rozwiązanie dość nietypowe i wyłamujące się z konwencji (w środowiskach opartych o system Linux tę rolę pełni najczęściej HAL), dodatkowo, prawdopodobnie jest to rozwiązanie tymczasowe: http://svnweb.openmoko.org/trunk/src/target/OM-2007.2/daemons/neod/README?view=auto |
| |
| |
| |
| |
| ==== Maemo ==== |
| |
| |
| |
| Środowisko to powstało w oparciu o dystrybucję linuksa Debian. Ciekawą własnością SDK należącego do tego środowiska jest możliwość stworzenia platformy uruchomieniowej na bazie architektury x86 z wykorzystaniem kompilacji skrośnej oraz częsciowej tylko emulacji (QEMU). To rozwiązanie jest możliwe dzięki zastosowaniu pakietu [[http://www.scratchbox.org/]]: |
| |
| http://maemo.org/development/documentation/tutorials/maemo_4-0_tutorial.html#development |
| |
| Struktura oprogramowania została przedstawiona poniżej: |
| |
| {{:pl:miw:soft_stack_maemo.png|:pl:miw:soft_stack_maemo.png}} |
| |
| Środowisko bazuje na klasycznych rozwiązaniach: warto tu szczególną uwagę zwrócić na wykorzystanie takich pakietów, jak **D-Bus** oraz **HAL** (szczególnie interesujące w kontekście sterowania/obsługi zdarzeń). Szczególnie cenna może być również wirtualizacja systemu plików (**GnomeVFS**), umożliwiająca wykorzystanie wielu dostępnych źródeł danych; narzędzia do obsługi XML; G-Conf (globalne zarządzanie danymi konfiguracyjnymi). |
| |
| |
| |
| ==== Dystrybucja Debiana dla architektury ARM ==== |
| |
| Nie jest to właściwie pełne środowisko jak w przypadkach wyżej opisanych a raczej wydanie samego systemu możliwe do uruchomienia na wybranych paltformach sprzętowych. Szczególnym przypadkiem zastosowania tej dystrybucji, może być wspominana wcześniej płyta ewaluacyjna Versatile PB. |
| |
| Z faktem, iż nie jest to w pełni funkcjonalne środowisko wiąże się konieczność samodzielnego wyposażenia go w odpowiednie oprogramowanie. Problem ten częściowo da się rozwiązać przez wykorzystanie dostępnych wraz z dystrybucją pakietów i/lub kompilacji skrośnej/w środowisku wirtualizatora. Sytuacja taka daje jednak niewątpliwą korzyść w postaci możliwości niemal dowolnej ingerencji w ostateczny kształt rozwiązania. |
| |
| Przykład uruchomienia tej dystrybucji na wirtualizatorze, został przedstawiony tutaj: [[http://www.aurel32.net/info/debian_arm_qemu.php]]. |
| |
| |
| |
| ===== Zagadnienia związane z przenoszeniem ===== |
| |
| Kwestię przenaszalności, w rozważanym tutaj przypadku, można sprowadzić do problemu, czy na danej architekturze da się uruchomić system GNU/Linux. Ewentualne ograniczenia mogą wynikać z wyboru dodatkowego oprogramowania. Zastosowanie popularnych rozwiązań, wymienionych wcześniej (HAL, D-Bus, GnomeVFS, PolicyKit, itd.) daje możliwość oddzielenia warstwy sprzętowej/systemowej od samego środowiska uruchomieniowego prologu. W praktyce oznacza to, że np. migracja między wymienionymi tu platformami będzie ograniczała się najwyżej do instalacji i/lub odpowiedniej konfiguracji wymaganego oprogramowania. |
| |
| ===== Analiza zużycia zasobów przez kompilatory prologu ===== |
| |
| |
| |
| ==== Kompilacja ==== |
| |
| Kompilację przeprowadzono w środowisku: http://www.aurel32.net/info/debian_arm_qemu.php uruchomionym na wirtualizatorze QEMU. Komputer, na którym uruchomiono wirtualizator wyposażony był w procesor Core 2 Duo T5500, 2GB pamięci RAM, system operacyjny FreeBSD. Kompilacja **Yap** zajęła w sumie ok. 40 min. W przypadku **SWI**, proces ten przeciągnął się nieomal do 3 godzin. |
| |
| |
| |
| |
| |
| ==== Zużycie pamięci ==== |
| |
| === SWI === |
| |
| {{:pl:miw:mem_swi.png|:pl:miw:mem_swi.png}} |
| |
| Po uruchomieniu (zajmowanej pamięci rzeczywistej): 2968kB. |
| |
| === Yap === |
| |
| {{:pl:miw:mem_yap.png|:pl:miw:mem_yap.png}} |
| |
| Po uruchomieniu (zajmowanej pamięci rzeczywistej): 3328kB. |
| |
| |
| ==== Zużycie czasu procesora ==== |
| |
| Nie udało się dokładnie zbadać zapotrzebowania na czas procesora w przypadku wymienionych kompilatorów, jednak, zauważono, w środowisku wirtualizatora wyraźnie mniejszą responsywność kompilatora SWI. |
| |
| |
| ===== Kierunki rozwoju pracy ===== |
| |
| * Określenie na jakim poziomie ma przebiegać interakcja prologu z pozostałymi składnikami systemu; na tej podstawie wybór właściwego oprogramowania otaczającego. |
| * Wybór platformy lub wykorzystanie uniwersalnych, przenaszalnych rozwiązań. |
| * Stworzenie środowiska ułatwiającego analizę wymagań/działania kompilatorów prologu pod względem wydajności i niezawodności. |
| |
| |
| ==== Na przyszłość ==== |
| Do sprawdzenia: |
| * [[http://www.ubuntu.com/products/mobile]] |
| * [[http://www.moblin.org/index.php]] |
| * [[https://wiki.ubuntu.com/MobileAndEmbedded]] |
| * [[http://www.linuxdevices.com/news/NS9978560959.html]] |
| * [[http://osnews.pl/ubuntu-mid-edition-804-pierwsza-wersja-deweloperska/]] |
| * [[http://www.linuxdevices.com/news/NS9978560959.html]] |
| * [[http://www.osnews.com/story/19906/Nokia_Now_Controls_Symbian;_Empowers_Symbian_Foundation]] |
| * [[http://lwn.net/Articles/287330/]] |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |