Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Meluncurkan Qt pada Mikrokontroler STM32 dengan Embox RTOS: Panduan Praktis Performa

Sistem tersemat saat ini diharapkan mampu menyediakan fungsi yang lebih kaya. Linux menawarkan ekosistem pustaka dan alat yang luas, namun persyaratan hardwarenya—terutama memori—seringkali meningkatkan biaya dan konsumsi daya. Mikrokontroler modern (MCU), seperti seri STM32, menawarkan sumber daya yang cukup untuk banyak aplikasi cerdas sambil tetap hemat biaya dan efisien energi.

Penggunaan sistem operasi real-time (RTOS) yang dapat menghosting perangkat lunak Linux—misalnya Embox RTOS—memungkinkan pengembang untuk memanfaatkan Linux pada MCU. Dalam artikel ini, kami membahas cara menjalankan aplikasi Qt pada dua papan Cortex-M7 STM32 (STM32F746G-Discovery dan STM32F769I-Discovery) di bawah Embox.

Latar Belakang

Sebelumnya, kami telah mendemonstrasikan contoh Qt “moveblocks” pada papan STM32F746-Discovery. Sekarang kami memperluasnya ke contoh “animatedtiles”, yang menawarkan grafik gaya 3D interaktif dan cocok untuk layar sentuh. Kami ingin menilai apakah CPU dan memori MCU mampu mendukung rendering yang lancar pada layar 480×272 atau 800×480.

Membangun Aplikasi

Pertama, kami membangun contoh Qt untuk QEMU, emulator open-source. Menjalankan aplikasi di QEMU menghilangkan kebutuhan untuk alokasi memori terlebih dahulu, memastikan semua dependensi tersedia. Setelah diverifikasi, kami menambahkan komponen yang diperlukan ke file konfigurasi STM32.

Peluncuran Pertama pada Papan Target

Aplikasi berjalan pada STM32F746G-Discovery, namun hanya setengah layar atas yang terisi. Debugging langsung pada papan memungkinkan, namun pendekatan yang lebih efisien adalah menggunakan lingkungan host untuk debugging awal.

Debugging pada Host

Untuk menjalankan dan men-debug contoh, instal pustaka Qt dan QVFB (Qt Virtual Framebuffer). QVFB menyediakan layar virtual yang dapat dirender oleh Qt. Bangun QVFB sesuai instruksi resmi.

Luncurkan QVFB dengan resolusi papan:

./qvfb -width 480 -height 272 -nocursor

Kompilasi Qt dengan profil embedded (tanpa X11) dan nonaktifkan modul yang tidak diperlukan:

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

Bangun dan luncurkan animatedtiles dengan QVFB:

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

Aplikasi lagi hanya menempati setengah layar atas. Memeriksa examples/animation/animatedtiles/main.cpp menunjukkan bahwa tampilan ditampilkan dalam mode jendela. Menambahkan flag -fullscreen menyelesaikan masalah.

Menyebarkan ke STM32F746-Discovery

Setelah memodifikasi sumber, kami membangun ulang aplikasi untuk Embox dan menjalankannya di QEMU. Saat meluncurkan pada papan fisik, kesalahan “Out Of Memory” menunjukkan heap tidak cukup. Untuk menentukan ukuran yang diperlukan, kami menggunakan alat Massif dari Valgrind.

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

Massif melaporkan kebutuhan heap sekitar 2,7 MB. Meningkatkan heap menjadi 3 MB dalam konfigurasi Embox memungkinkan demo berjalan layar penuh.

Menyebarkan ke STM32F769I-Discovery

STM32F769I-Discovery memiliki layar 800×480 dan 16 MB SDRAM eksternal. Framebuffer saja mengonsumsi sekitar 0,8 MB (800×480×2 byte). Kami hanya perlu menyesuaikan ukuran heap.

Mulai QVFB untuk resolusi yang lebih besar:

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

Jalankan Massif lagi:

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

Massif melaporkan sekitar 6 MB heap. Mengonfigurasi heap menjadi 6 MB memungkinkan operasi layar penuh pada papan STM32F769I.

Meluncurkan Qt pada Mikrokontroler STM32 dengan Embox RTOS: Panduan Praktis Performa

Tonton demo dalam video di bawah atau ikuti langkah-langkah di wiki GitHub kami untuk mereproduksi hasilnya.

Catatan

  1. https://habr.com/ru/company/embox/blog/459730/ (dalam bahasa Rusia, juga tersedia dalam bahasa Inggris: 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

Meluncurkan Qt pada Mikrokontroler STM32 dengan Embox RTOS: Panduan Praktis Performa

Anton Bondarev adalah pendiri Embox RTOS. Ia memperoleh gelar master dalam teknik elektro dari Saint Petersburg Electrotechnical University (LETI) pada 2003 dan kemudian menyelesaikan kursus pascasarjana dalam rekayasa perangkat lunak di Saint-Petersburg State University. Dengan lebih dari 20 tahun pengalaman dalam pemrograman sistem dan tersemat, ia memimpin proyek Embox.

Meluncurkan Qt pada Mikrokontroler STM32 dengan Embox RTOS: Panduan Praktis Performa

Alexander Kalmuk adalah pendiri bersama Embox RTOS. Ia memiliki gelar master dalam matematika dan rekayasa perangkat lunak dari Saint-Petersburg State University (2014) dan telah mengambil studi pascasarjana dalam teori kontrol. Dengan lebih dari satu dekade pemrograman sistem tersemat, ia merupakan kontributor kunci dalam pengembangan Embox.


Konten Terkait

Untuk lebih banyak konten Embedded, berlangganan newsletter harian mingguan Embedded.

Tertanam

  1. Mengapa Linux Menggerakkan Cloud: Panduan Komprehensif
  2. Hosting Cloud Linux versus Windows: Mana yang Tepat untuk Bisnis Anda
  3. Klasifikasi Warna Berdasarkan Aplikasi: Dari Reaktif hingga Disperse—Tinjauan Industri
  4. ST Meluncurkan STM32MP1: Mikroprosesor Dual-Core Arm Cortex MP1 dengan OpenSTLinux dan Performa Hemat Daya
  5. ROHM Meluncur PMIC BD71850MWV untuk Prosessor NXP i.MX 8M Nano
  6. Sensor Telemetry 2.0.1 – Pemantauan Suhu Canggih dengan Azure IoT Hub
  7. Java 10: Meningkatkan Performa dengan Class-Data Sharing (CDS)
  8. Running Bond Dijelaskan: Teknik Penataan Bata Esensial
  9. Manajemen Klaster pada PLCnext: Memanfaatkan Kubernetes untuk Otomasi Industri
  10. Mengoptimalkan Aplikasi Java 9 pada PLCnext Control Menggunakan Jlink