Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_ruleruntimep [2008/05/26 17:19] 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/ | |
===== 080527 ===== | |
* sprawozdanie: wnioski, obserwacje, różnice pomiędzy platformami ARM na przykładzie 2-3, ew. problemy z przenaszalnością, etc., przyszłe kierunki prac co do mgr.,wymagania swi/yap? co do pamięci | |
| |
====== Projekt ====== | ====== Projekt ====== |
| |
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: | 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: |
| |
| |
| |
Oprogramowanie na tę architekturę powstaje w środowisku OpenMoko, które zostanie opisane w dalszych akapitach. | 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). |
| |
| |
Platforma rozwojowa - maemo. | Platforma rozwojowa - maemo. |
| |
| Architektura ta jest wspierana (częściowo) przez wirtualizator QEMU. |
| |
| |
* Kontroler PCI | * Kontroler PCI |
| |
| Platforma wspierana przez wirtualizator QEMU. |
| |
===== Przegląd dostępnych środowisk softwareowych ===== | ===== Przegląd dostępnych środowisk softwareowych ===== |
| |
| |
| |
| |
| |
| ==== 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/]] |
| |
| |