logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] ARM i Linux - Proces tworzenia aplikacji na platformy wbudowane z Linuxem

sibislaw 13 Lut 2015 07:48 1638 7
  • #1 14433729
    sibislaw
    Poziom 12  
    Posty: 178
    Pomógł: 2
    Ocena: 62
    WItam. Moje pytanie nie dotyczy konkretnego układu bądź development board'u tylko jest bardziej ogólne. Chciałem się Was spytać, jak sobie radzicie z następującymi problemami w przypadku wykorzystania układu z ARM-em i zainstalowanym linuxem (np. raspberry pi i tym podobne, sabre lite, itd) do sterowania jakimś urządzeniem w systemie wbudowanym. Moje pytanie bierze się stąd że wszędzie jest dużo informacji teoretycznych a brakuje mi wiedzy praktycznej jak to łatwo / efektywnie / szybko zrobić:

    - Czy korzystacie z gotowej dystrybucji czy tworzycie coś samemu (mam na myśli kompilację kernela, dodawanie pakietów samemu itd) ?
    - Jak sobie radzicie z zanikami napięcia? Wiadomo że urządzenie pracujące jako wbudowane może mieć zawsze odłączone napięcie.
    - Czy korzystacie z READ-ONLY filesytstemu żeby osiągnąć poprzednie, i jeśli tak to jak to robicie (chodzi o przerobienie gotowej dystrybucji / dystrybucję live / czy coś własnego)?
    - Czy stworzyliście jakiś własny build system ?
    - W jaki sposób kompilujecie aplikację ? Z jakich korzystacie gotowych narzędzi ?
    - Czy korzystacie z jakichś frameworków ? Jeśli np z Qt jak korzystacie z qmake.
    - Jak przenosicie aplikację na platformę wbudowaną, jak ją tam uruchamiacie ?
    - Jak pilnujecie aktualnej wersji ?

    I ogólnie, proszę o podpowiedz z jakich narzędzi korzystacie do wszystkich podpunktów. Będę z góry wdzięczny za odpowiedź, nawet jak 1 osoba odpowie na 1 pytanie. Jeśli odpowie na więcej to już wogóle będzie super ;-)
  • Pomocny post
    #2 14433789
    DSB
    Poziom 16  
    Posty: 118
    Pomógł: 13
    Ocena: 3
    Cześć.
    1. Przygotowanie własnej dystrybucji ma sens najczęściej gdy tworzysz nową płytkę, lub gdy masz specyficzne wymagania odnośnie oprogramowania, które jest zawarte w linuxie (np. potrzebujesz uruchomienia wyświetlacza graficznego w ciągu 3s od uruchomienia zasilania). W takim wypadku warto przyjrzeć się buildroot i Yocto.
    2. Wszystko zależy od wymagań. Najpowszechniejszym rozwiązaniem jest bateria podtrzymująca działanie urządzenia.
    3.
    4. Co dokładnie rozumiesz przez build system? (Odnosisz się do budowania aplikacji, czy do budowania systemu?)
    5. Wydaje mi się, że aplikację i tak najwygodniej jest budować kross-kompilatorem, tylko biblioteki musisz mieć w wersji dla targetu.
    6. Ponownie - kross-kompilacja. Dużo zależy od platformy i sprzętu. Spotkałem się z rozwiązaniem, gdzie narzędzie robiło pełną kompilację a następnie przenosiło plik wykonywalny na target i go uruchamiało. Myślę, że w ogólnym przypadku da się taki proces oskryptować.

    Narzędzia:
    Ubuntu, Eclipse CDT, gcc, Yocto, buildroot.

    Robisz jakąś aplikację?
    7. Git - moja miłość:-)
  • #3 14433932
    sibislaw
    Poziom 12  
    Posty: 178
    Pomógł: 2
    Ocena: 62
    Dziękuję za obszerną odpowiedź ;-) a z jakiej dystrybucji wbudowanej korzystasz (Ubunut nie jest za duże)? Jak sobie radzisz z czasem wstawiania systemu (aby był jak najkrótszy) i zanikami zasilania ?

    Narazie nie piszę żadnej aplikacji z wykorzystaniem tych technik, ale chciałem się dowiedzieć jak to jest robione przez innych ludzi. Mam w domu raspberry pi i narazie tylko korzystałem z raspbiana i nie cross compilacji a kompilacji na docelowej platformie.

    4. Buildsystem tworzenia gotowego image na platformę docelową (kernel+aplikacje+moja aplikacja skompilowana+wszystkie pliki konf)

    Wolisz yocto czy buildroot ? Co lepiej oceniasz ? Co jest prostsze ?
  • #4 14434696
    DSB
    Poziom 16  
    Posty: 118
    Pomógł: 13
    Ocena: 3
    Ubuntu na hoście! Target jest po to, żeby na nim uruchamiać docelowy system i aplikcję, programowanie na nim to czyste zło:-) Weź pod uwagę, że Raspi jest dość specyficzne - miało być bardzo tanim zamiennikiem dla PC.
    Optymalizacja czasu bootowania systemu to coś, w czym ludzie się specjalizują i z tego co wiem, wymaga dość obszernej wiedzy o procesie uruchamiania linuxa. Z zanikami zasilania trzeba radzić sobie tak, że trzeba ich unikać - podtrzymanie bateryjne zazwyczaj wystarcza.

    Trudno mi powiedzieć, żeby któreś z narzędzi było lepsze ogólnie - może najwyżej lepiej pasować do naszych wymagań. Może lepiej spróbować obu i wtedy wyrobić sobie własne zdanie.
  • #5 14436415
    krru
    Poziom 33  
    Posty: 1819
    Pomógł: 230
    Ocena: 214
    DSB napisał:
    6. Ponownie - kross-kompilacja. Dużo zależy od platformy i sprzętu. Spotkałem się z rozwiązaniem, gdzie narzędzie robiło pełną kompilację a następnie przenosiło plik wykonywalny na target i go uruchamiało. Myślę, że w ogólnym przypadku da się taki proces oskryptować.


    Ja czasami, na czas pisania kodu, konfiguruje target na bootowanie się po sieci (TFTP, NFS itp), wtedy wystarczy skompilować na hoscie i uruchomić na targecie.
  • #6 14442640
    sibislaw
    Poziom 12  
    Posty: 178
    Pomógł: 2
    Ocena: 62
    A możecie opisać jak robicie cross kompilację ? Jak rozwiązujecie sprawę bibliotek (np. Qt) ? Czy korzystacie z Qt ?
  • #7 14446301
    DSB
    Poziom 16  
    Posty: 118
    Pomógł: 13
    Ocena: 3
    Ja ostatnio naciskam "build project" w Eclipse i wszystko robi się automagicznie;-)

    Tak naprawdę to tworzenie aplikacji na Linuxa na ARM nie powinno różnić się od tego samego procesu - dla x86. To co tak na prawdę jest potrzebne, to narzędzie, które zbuduje Ci plik wykonywalny zgodny z docelową architekturą - to można załatwić toolchainem, np. Codesorcery, Linaro albo innym (http://elinux.org/Toolchains).

    Z Qt jeszcze nie korzystałem, mam w planach popełnić coś na raspi z ekranem - ale to na razie plan.
  • #8 17843262
    sibislaw
    Poziom 12  
    Posty: 178
    Pomógł: 2
    Ocena: 62
    Dziękuję za odpowiedzi.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy tworzenia aplikacji na platformach wbudowanych z procesorami ARM i systemem Linux, takimi jak Raspberry Pi. Uczestnicy wymieniają doświadczenia związane z wyborem dystrybucji (np. Buildroot, Yocto), radzeniem sobie z zanikami napięcia (najczęściej poprzez zastosowanie baterii podtrzymującej) oraz optymalizacją czasu uruchamiania systemu. Wskazują na znaczenie cross-kompilacji oraz narzędzi takich jak Eclipse CDT i toolchainy (np. Codesorcery, Linaro) do budowy aplikacji. Poruszają również kwestie związane z bibliotekami, w tym Qt, oraz metodami bootowania systemu przez sieć (TFTP, NFS).
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA