Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

Qt op STM32 MCU's draaien met Embox RTOS: Een praktische prestatiewandeling

Ingebouwde systemen worden steeds vaker verwacht om uitgebreidere functionaliteit te leveren. Linux biedt een enorm ecosysteem aan bibliotheken en tools, maar de hardware-eisen – met name geheugen – drijven kosten en stroomverbruik vaak in de hoogte. Moderne microcontrollers (MCU's), zoals de STM32-serie, bieden voldoende bronnen voor veel slimme toepassingen, terwijl ze goedkoop en energiezuinig blijven.

Achtergrond

Eerder demonstreerden we het Qt-voorbeeld "moveblocks" op een STM32F746-Discovery-board. We breiden dit nu uit naar het "animatedtiles"-voorbeeld, dat interactieve 3D-stijl grafieken biedt en geschikt is voor touchscreens. We wilden beoordelen of de CPU en het geheugen van de MCU soepel rendering kunnen handhaven op een 480×272 of 800×480 display.

De applicatie bouwen

We bouwen het Qt-voorbeeld eerst voor QEMU, een open-source emulator. Het draaien van de app in QEMU verwijdert de noodzaak om vooraf geheugen toe te wijzen, zodat alle afhankelijkheden aanwezig zijn. Eenmaal geverifieerd, voegen we de benodigde componenten toe aan de STM32-configuratiebestanden.

Eerste lancering op het target-board

De applicatie start op de STM32F746G-Discovery, maar alleen de bovenste helft van het scherm wordt gevuld. Debuggen direct op het board is mogelijk, doch een efficiëntere aanpak is het gebruik van de host-omgeving voor initiële debugging.

Debuggen op de host

Om het voorbeeld te draaien en te debuggen, installeer de Qt-bibliotheken en QVFB (Qt Virtual Framebuffer). QVFB voorziet een virtueel display waarnaar Qt kan renderen. Bouw QVFB volgens de officiële instructies.

Start QVFB met de resolutie van het board:

./qvfb -width 480 -height 272 -nocursor

Compileer Qt met het embedded-profiel (geen X11) en schakel onnodige modules uit:

./configure -opensource -confirm-license -debug \
 -embedded -qt-gfx-qvfb -qvfb \
 -no-javascript-jit -no-script -no-scripttools \
 -no-qt3support -no-webkit -nomake demos -nomake examples

Bouw en start animatedtiles met QVFB:

./examples/animation/animatedtiles/animatedtiles -qws -display QVFb:0

De applicatie bezett opnieuw alleen de bovenste helft van het scherm. Inspectie van examples/animation/animatedtiles/main.cpp onthult dat de view in windowed-modus wordt getoond. Het toevoegen van de -fullscreen-vlag lost het probleem op.

Deployen naar STM32F746-Discovery

Na het aanpassen van de broncode, bouwen we de applicatie opnieuw voor Embox en draaien deze in QEMU. Bij het lanceren op het fysieke board treedt een "Out Of Memory"-fout op, wat aangeeft dat de heap onvoldoende is. Om de benodigde grootte te bepalen, gebruiken we Valgrind's Massif-tool.

valgrind --tool=massif --massif-out-file=animatedtiles.massif ./examples/animation/animatedtiles/animatedtiles -qws -fullscreen
ms_print animatedtiles.massif > animatedtiles.out

Massif rapporteert een heap-vereiste van ongeveer 2,7 MB. Het vergroten van de heap naar 3 MB in de Embox-configuratie stelt de demo in staat om full-screen te draaien.

Deployen naar STM32F769I-Discovery

De STM32F769I-Discovery beschikt over een 800×480 display en 16 MB extern SDRAM. Het framebuffer alleen verbruikt al ~0,8 MB (800×480×2 bytes). We hoeven alleen de heap-grootte aan te passen.

Start QVFB voor de grotere resolutie:

./qvfb -width 800 -height 480 -nocursor &

Draai Massif opnieuw:

valgrind --tool=massif --massif-out-file=animatedtiles.massif ./examples/animation/animatedtiles/animatedtiles -qws -fullscreen
ms_print animatedtiles.massif > animatedtiles.out

Massif rapporteert ~6 MB heap. Het configureren van de heap op 6 MB maakt full-screen-bewerking mogelijk op het STM32F769I-board.

Qt op STM32 MCU s draaien met Embox RTOS: Een praktische prestatiewandeling

Bekijk de demo in de onderstaande video of volg de stappen op onze GitHub-wiki om de resultaten te reproduceren.

Notities

  1. https://habr.com/ru/company/embox/blog/459730/ (in het Russisch, ook beschikbaar in het Engels: https://sudonull.com/post/25508-Porting-Qt-to-STM32-Embox-Blog)
  2. https://alexkalmuk.medium.com/a-little-about-graphics-subsystem-internals-on-microcontrollers-d952cfd0966a

Qt op STM32 MCU s draaien met Embox RTOS: Een praktische prestatiewandeling

Anton Bondarev is de oprichter van Embox RTOS. Hij behaalde een master in elektrotechniek aan de Sint-Petersburgse Elektrotechnische Universiteit (LETI) in 2003 en volgde later nabije cursussen in software-engineering aan de Sint-Petersburgse Staatsuniversiteit. Met meer dan 20 jaar ervaring in embedded- en systeemprogrammering, leidt hij het Embox-project.

Qt op STM32 MCU s draaien met Embox RTOS: Een praktische prestatiewandeling

Alexander Kalmuk is medeoprichter van Embox RTOS. Hij heeft een master in wiskunde en software-engineering van de Sint-Petersburgse Staatsuniversiteit (2014) en heeft postgraduaat studie gedaan in regeltechniek. Met meer dan een decennium ervaring in embedded-systemen, is hij een belangrijke bijdrager aan de ontwikkeling van Embox.


Gerelateerde inhoud

  • Linux gebruiken met kritische applicaties: als olie en water mengen?
  • Waarom het Yocto Project voor mijn IoT-project?
  • Anticiperen op behoefte aan Automotive Grade Linux-expertise
  • MCU maakt Linux mogelijk voor industriële IoT
  • Open-source platform richt zich op IoT met embedded Linux
  • Embedded Linux-apparaatstuurprogramma's: hun rol begrijpen
  • OTA-updates voor Embedded Linux, deel 1 – Fundamenten en implementatie
  • Hoe een veilige embedded-webserver te installeren op een $3 WiFi-apparaat
  • Meester de eindeloze softwareontwikkelcyclus van verbonden systemen – of het meester je

Voor meer Embedded, abonneer je op Embedded's wekelijkse e-mailnieuwsbrief.

Ingebed

  1. Sensor Telemetrie 2.0.1 – Geavanceerde Temperatuurbewaking met Azure IoT Hub
  2. Clusterbeheer op PLCnext: Kubernetes Benutten voor Industriële Automatisering
  3. Java 9-apps optimaliseren op PLCnext Control met Jlink
  4. Strekbond uitgelegd: De essentiële metseltechniek
  5. ST lanceert STM32MP1: dual‑core Arm Cortex MP1 met OpenSTLinux en laag‑stroom‑prestaties
  6. ROHM lanceert BD71850MWV PMIC voor NXP i.MX 8M Nano-processors
  7. Waarom Linux De Cloud Aandrijft: Een Uitgebreide Gids
  8. Linux Cloud Hosting vs Windows Cloud Hosting: Wat Past Bij Uw Bedrijf?
  9. Niobium in de tandheelkunde: van implantaten tot stralingsafscherming
  10. Java 10: Prestatieverbetering met Class-Data Sharing (CDS)
  11. Kleurstofclassificatie op Toepassing: Van Reactief tot Disperse – Een Industrieoverzicht