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

[Linux embedded] Profesjonalna aplikacja na Linuxie Embedded

bartosz.tarnowski 30 Lis 2017 21:17 2532 30
Najlepsze odpowiedzi LABEL_AI_GENERATED

Jakiego sprzętu i platformy software’owej użyć pod Linux Embedded, żeby zrobić profesjonalnie wyglądającą aplikację z menu, odtwarzaniem filmów i obsługą ekranu dotykowego oraz dodatkowych peryferiów?

Najbardziej sensowny wybór to Qt z QML na Linux Embedded, bo daje wydajne, ładne GUI, obsługę OpenGL i dobre możliwości tworzenia menu oraz multimediów, a do tego działa z różnymi platformami sprzętowymi [#16859785][#16859907] Jeśli zależy Ci na sprzęcie, wybieraj płytkę z akceleracją graficzną; jako sensowną rodzinę układów polecano NXP/Freescale i.MX ze względu na dobre wsparcie i publiczną dokumentację [#16859785][#16860258] W Qt możesz korzystać z LGPL przez dynamiczne biblioteki .so i nie musisz od razu kupować licencji, o ile nie modyfikujesz samego Qt; przy chęci wsparcia komercyjnego istnieje też plan startupowy [#16859907][#16860319][#16863949] Ponieważ opisujesz tryb jak w bankomacie, warto myśleć o aplikacji kiosk/full-screen bez wyjścia do systemu [#16873817][#16874476] Alternatywnie wspomniano też o libavg, ale to framework bardziej multimedialny niż klasyczne GUI — ma np. VideoNode, lecz brakuje w nim wielu standardowych kontrolek, takich jak przyciski i pola tekstowe [#16867050][#16869482]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
  • #1 16859763
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    Dziś następujące zapytanko:

    Jaki sprzęt i platforma softwearowa pod linuxa aby stworzyć profesjonalnie wyglądającą aplikację?

    Aplikacją ma zawierać średnio zaawansowane menu i ma móc możliwość wyświetlania filmików w czasie braku interakcji z użytkownikiem.
    Interakcja poprzez ekran i do tego niewielka współpraca z dodatkowym sprzętem przez peryferia.
  • #2 16859779
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16859785
    mongoł2000
    Poziom 18  
    Posty: 623
    Pomógł: 15
    Ocena: 175
    Jak dla mnie QT framework :
    - masz QML - bardzo wydajne i ładnie wyglądające grafiki (wymagany OpenGL)
    - licencja dla StartUpów około 100 USD/mc
    - dużo dokumentacji
    - łatwy do nauki
    - framework kontroluje najważniejszy sprzęt (to zależy od platformy - czasem wymagane są dodatkowe biblioteki)

    Co do sprzętu, to raczej $ tu ma znaczenie. Fajnie mieć akcelerację graficzną w takiej aplikacji. Jak nie ma ograniczenia co do budżetu to wybrałbym coś z Freescale (iMX).
  • #4 16859839
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    Czyli python i inne kwiatki raczej odpadają?
    Czy QT jest wart tej ceny?
    Czy może jest jeszcze coś innego wartego polecenia?
  • #5 16859907
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Z Qt można korzystać za darmo, jeśli tylko aplikacja będzie używała samego Qt za pomocą dynamicznych bibliotek (.so) do których nie wprowadziłeś żadnych zmian. Chyba że coś się zmieniło.

    W Pythonie nie ma żadnego "natywnego" frameworka graficznego, praktycznie wszystkie są wrapperami na coś innego (np. na Qt czy na GTK+). Oczywiście jeśli Python Ci pasuje, to oczywiście można go użyć, ale trzeba pamiętać, że napisanie zabezpieczonej aplikacji w Pythonie (tzn. takiej której ktoś nie jest w stanie łatwo "zdekompilować" do pełnego kodu źródłowego) nie jest trywialne. No i jest jeszcze kwestia wydajności takiej aplikacji - natywna prędkość to raczej nie będzie...

    Ewentualnie można postawić na nowoczesność w każdym calu i technologie webowe, czyli użyć Electron.
  • #6 16860140
    Konto nie istnieje
    Konto nie istnieje  
  • #7 16860258
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    Piotrus_999 napisał:
    Freddie Chopin napisał:
    Z Qt można korzystać za darmo, jeśli tylko aplikacja będzie używała samego Qt za pomocą dynamicznych bibliotek (.so)
    Chyba tak (w sensie że się zmieniło) bo free jest tylko przy projektach typu open source.


    Chyba jednak nie. Jest tak jak napisał FCh.

    Wracając do tematu. Mając linuxa embedded na platformie z rozsądnymi zasobami sprzętowymi można wybrać w zasadzie dowolną technologię do aplikacji. Ja używałem QT jednak widziałem projekty gdzie aplikacja była w JS. Tak naprawdę to programowanie niewiele różni się od pisania na PC więc kryteria wyboru nie powinny być różne od normalnego PCtowego linuxa.

    Jak ktoś planuje robić własny hardware to również polecam procesory z rodziny iMX od NXP(Freescale). Mają dobrą (i dostępną publicznie) dokumentację i całkiem niezłe wsparcie w kernelu.
  • #8 16860319
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Piotrus_999 napisał:
    Chyba tak (w sensie że się zmieniło) bo free jest tylko przy projektach typu open source.

    https://www1.qt.io/licensing-comparison/

    "Possible to keep your application private with dynamic linking" - opcja dostępna w licencji LGPL.

    Niemniej jednak jeśli kogoś średnio interesują meandry licencji LGPL i burzliwa historia samego Qt, to warto nadmienić, że Electron ma licencję MIT.
  • #10 16863078
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1464
    Freddie Chopin napisał:
    W Pythonie nie ma żadnego "natywnego" frameworka graficznego, praktycznie wszystkie są wrapperami na coś innego (np. na Qt czy na GTK+). Oczywiście jeśli Python Ci pasuje...


    Stosunkowo najbardziej "natywny" w Pythonie był przynajmniej w pewnym czasie Tk (drugi braciszek z "nierozłącznej pary" Tcl/Tk). Dobrze pasuje/pasował do filozofii skryptowej, w bardzo małej ilości kodu się uzyskiwało okna z automatycznymi layoutami.
  • #12 16863772
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    mongoł2000 napisał:
    Jak dla mnie QT framework :
    ....
    - licencja dla StartUpów około 100 USD/mc


    Jak to jest w praktyce?
    Czy taką licencję można wykupić na czas określony np 4 miesiące?
    A dla ścisłości to wykupując licencję na cały rok wychodzi 79$/mc
  • #13 16863813
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16863944
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    wiadomo kasiure trzeba szanować,
    interesuje mnie opcja stworzenia projektu w wersji free, wykupienie po pewnym czasie licencji i przeniesienie projektu do wersji licencjonowanej i zakończenie w nim projektu.

    Czy poza oficjalnymi zasobami dokumentacji znacie jakieś dobre tutoriale dla QT na systemy embedded?
  • #15 16863949
    mongoł2000
    Poziom 18  
    Posty: 623
    Pomógł: 15
    Ocena: 175
    Albo miesiąc albo rocznie:
    https://www1.qt.io/start-up-plan/

    Zgadzam się z Piotrus_999 - najpierw możesz potrenować ten framework jeśli jeszcze go nie znasz. QML nieco irytuje słabą dokumentacją, ale daje całkiem fajne efekty. Robiąc takie rzeczy na Linux z QT potrzebujesz na pewno C/C++ oraz znajomość bash. Jak coś to zawsze można się ratować forum dla iMX'a.

    Cytat:
    Czy poza oficjalnymi zasobami dokumentacji znacie jakieś dobre tutoriale dla QT na systemy embedded?


    Taka aplikacja to nie jest embedded Qt, więc informacje które znajdziesz w sieci dotyczące qt dla desktop, będą dla Ciebie właściwe. Nie korzystasz z Qt dla embedded, bo to kosztuje znacznie więcej i chyba za free nie jest dostępne :) Korzystasz z Linuxa, więc piszesz aplikację desktopową w Twoim przypadku. Równie dobrze możesz aplikację napisać na Windows, a potem przenieść kod na Linuxa (cross kompilacja lub po prostu przenieść kod i skompilować na docelowej maszynie).
  • #16 16865023
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    W grę wchodzi croos kompilacja, jestem uzależniony kilkoma programami od Windowsa.
    Oczywiście bym mógł tworzyć projekt już na docelowej platformie ale po doświadczeniach z Raspberry nie wydaje mi się to zbyt wygodne.
  • #18 16869088
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    Wygodnie się pracuje tym libavg?
    Jest wszystko co trzeba i jest z czego wybierać?
    nie brakuje czasem komponentów?
  • #19 16869482
    sawitar
    Poziom 18  
    Posty: 228
    Pomógł: 20
    Ocena: 19
    Hmm,
    W libavg brak jest większości komponentów znanych z desktopow (takich jak przyciski, pola tekstowe itp), są za to komponenty jak ImageNode czy VideoNode. libavg wspiera tez dotyk (ale z tego akurat nie miałem szansy jeszcze korzystać).
    Moja aplikacje są embedded i więcej mi nie potrzeba.

    Wszystko zależy co to za aplikacja ma być.
  • #20 16872001
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    To w libavg nie ma możliwości utworzenia nawet prostego menu przyciskowego?
  • #21 16872233
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1464
    bartosz.tarnowski napisał:
    To w libavg nie ma możliwości utworzenia nawet prostego menu przyciskowego?

    Osobiście nie znam, ale wiele "środowisk graficznych" z segmentu "embedded" ma wąski zamiar twórców. Np grafika w sensie multimedialnym, inżynierskim (wykresy) a GUI to mocno się różniące grupy zastosowań.
    Pamiętam jakiś elektrodowy kolega zamierzał robić GUI w Open GL (chyba - coś z tego segmentu: grafika w sensie wykresów inżynierskich) argumentował 'bo to znam".
    Zapamiętałem, bo specjalnie przestudiowałem Doxygen API, były wyłącznie pełne i puste prostokąty i "surowe" czytanie klawiszy.

    jak się niewłaściwie wybierze, to boli.
  • #22 16873692
    sawitar
    Poziom 18  
    Posty: 228
    Pomógł: 20
    Ocena: 19
    bartosz.tarnowski napisał:
    To w libavg nie ma możliwości utworzenia nawet prostego menu przyciskowego?

    Nie w sensie klasycznego przycisku znanego z aplikacji desktopowych.

    Nie wiemy jak chcesz aby twoja aplikacja wyglądała? Czy ma być obsługiwana przy pomocy klawiatury, dotyku czy jeszcze w jakiś inny sposób? W jakim środowisku ma pracować? Czy to ma być aplikacja full screen, czy ma używać X-ów?

    Embedded LInux to dośc szerokie pojęcie :-)
  • #23 16873817
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    Tryb Full Screen bez okienka.
    ekran dotykowy
    dla użytkownika bez opcji wyjścia do systemu
    trochę zewnętrznego sprzętu podłączonego przez UART i GPIO
    Powiedzmy że coś takiego jak w bankomatach.
  • #24 16873858
    Konto nie istnieje
    Konto nie istnieje  
  • #25 16873866
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    A w praktyce jak to wygląda?
    Jak z licencją i z dostępnością dokumentacji?
  • Pomocny post
    #26 16873877
    Konto nie istnieje
    Konto nie istnieje  
  • #27 16873898
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    pod linuxem tez pracuje skoro produkt Microsoftowy?
    Cross kompilacja tez jest mozliwa ?
  • #28 16873906
    Konto nie istnieje
    Konto nie istnieje  
  • #29 16873929
    bartosz.tarnowski
    Poziom 17  
    Posty: 418
    Pomógł: 26
    Ocena: 30
    Tak zgadza się, nie mam dziś na to czasu bo męczę kilka spraw na raz.
    Może wieczorkiem na spokojnie zagłębie się w szczegóły.
    Dzięki za wskazanie tego produktu nie wiedziałem że jest coś takiego.
  • Pomocny post
    #30 16874476
    michcior
    Poziom 30  
    Posty: 1132
    Pomógł: 159
    Ocena: 462
    bartosz.tarnowski napisał:
    pod linuxem tez pracuje skoro produkt Microsoftowy?


    Jeśli nie piszesz aplikacji, która ma chodzić na wielu platformach, to to jest przerost formy nad treścią. Poza tym, .NET i linux to brzmi jak prośba o kłopoty.

    bartosz.tarnowski napisał:
    Powiedzmy że coś takiego jak w bankomatach.

    Czyli robisz klasyczny "KIOSK" i pod taką nazwą szukaj rozwiązań, ustawień, tricków itd.

    Jak stawiam kioski na przeglądarce, wykorzystując ich tryb "kiosk", na malinkach jest "kweb", czasami wykorzystuję komponent WebKit w QT w pythonie, czasami chromium jeśli trzeba nieco żwawiej.

    Zwykle serwer to WebPy, rzadziej ligthttp, nigdy Apache - to kloc na serwery webowe a nie kioski. Kiedyś pisywałem pluginy do przeglądarek ale odkąd pogrzebali NPAPI to już mi się nie chce, WebPy jest w zupełności wystarczający.

    Aplikacja to czysty (0 HTML) SVG + JS + CSS(kompilator less). W grafice wektorowej SVG można robić śliczne rzeczy, szybko i wygodnie. Niestety nie biega to tak płynnie jak natywny kod ale też jest nieźle. Animacje/transakcje CSS wystarczają do efektownych animacji, cienie, przeźroczystości i jest ładnie. Przyciski się tworzy samemu.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy wyboru sprzętu i platformy oprogramowania do stworzenia profesjonalnej aplikacji na systemie Linux Embedded. Uczestnicy sugerują użycie frameworka Qt, który oferuje QML do tworzenia estetycznych interfejsów graficznych, oraz możliwość korzystania z dynamicznych bibliotek bez opłat w przypadku projektów open source. Wskazują również na znaczenie akceleracji graficznej oraz na procesory z rodziny iMX od NXP (Freescale) jako odpowiedni wybór sprzętowy. Alternatywnie, rozważane są technologie webowe, takie jak Electron, oraz użycie Pythona z biblioteką libavg, chociaż ta ostatnia ma ograniczone komponenty GUI. Uczestnicy podkreślają, że wybór technologii powinien być dostosowany do specyfikacji aplikacji, w tym interakcji z użytkownikiem i współpracy z peryferiami.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA