Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

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)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Konrad Rybacki, <​konrad.rybacki@wp.pl>​ Konrad Rybacki, <​konrad.rybacki@wp.pl>​
  
Linia 5: Linia 7:
  
 ====== 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 ====== 
- 
- 
  
  
Linia 193: Linia 142:
  
 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/​]]
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
pl/miw/miw08_ruleruntimep.1209448653.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0