LVGL: Pustaka Grafik Ringan yang Memacu Paparan Terbenam Tanpa Pecutan GPU

BigGo Editorial Team
LVGL: Pustaka Grafik Ringan yang Memacu Paparan Terbenam Tanpa Pecutan GPU

Dunia sistem terbenam sering memerlukan antara muka pengguna grafik yang boleh berjalan pada peranti dengan kekangan sumber yang ketara. LVGL (Light and Versatile Graphics Library) telah muncul sebagai penyelesaian popular untuk pembangun yang bekerja dengan pengawal mikro dan paparan kecil, menawarkan cara untuk mencipta antara muka pengguna moden tanpa memerlukan GPU yang berkuasa atau sistem operasi.

Pemprosesan Perisian untuk Peranti dengan Kekangan Sumber

LVGL direka khusus untuk pengawal mikro dan peranti berkuasa rendah dengan keperluan memori yang minimum - hanya memerlukan 32KB RAM dan 128KB memori kilat, ditambah dengan ruang tambahan untuk pemprosesan dan penimbal bingkai. Ini menjadikannya sesuai untuk peranti seperti pengawal mikro ESP32 yang disambungkan ke paparan kecil seperti ILI9341 atau SSD1306. Berbeza dengan rangka kerja GUI desktop, LVGL beroperasi secara langsung dengan penimbal piksel, membolehkannya berfungsi pada sistem di mana anda hanya perlu menetapkan warna piksel atau melukis primitif asas.

Aplikasi terbenam akan ingin melakukan sesuatu yang lain untuk ~90% masa CPU yang tinggal setiap saat yang tidak digunakan untuk pemprosesan perisian GUI.

Penanda aras prestasi pada pengawal mikro popular seperti ESP32-S2 menunjukkan masa pemprosesan antara 50-100ms untuk pelbagai operasi termasuk memutar beberapa bitmap. Tahap prestasi ini lebih daripada mencukupi untuk kebanyakan aplikasi terbenam di mana kemas kini antara muka pengguna mungkin hanya perlu berlaku pada 1 bingkai sesaat, dengan CPU menggunakan sebahagian besar masanya untuk tugas lain.

Keperluan Sistem LVGL

  • RAM: Minimum 32KB
  • Memori kilat: Minimum 128KB
  • Ruang tambahan diperlukan untuk penimbal rendering dan penimbal bingkai
  • Serasi dengan mikropengawal seperti ESP32, STM32, Raspberry Pi Pico

Jenis Paparan Popular yang Digunakan dengan LVGL

  • Paparan ILI9341
  • Paparan SSD1306
  • Skrin OLED kecil
  • Paparan E-paper

Perpustakaan GUI Terbenam Alternatif

  • TouchGFX - Pesaing utama kepada LVGL
  • Adafruit GFX - Untuk paparan monokrom dengan sumber yang sangat terhad
  • Dear ImGui - Untuk sistem dengan sokongan GPU (kes penggunaan berbeza)

Alat Pembangunan LVGL

  • SquareLine Studio - Editor UI khusus untuk LVGL
  • GUI Guider (NXP) - Alternatif editor UI
  • EEZ Studio - Pilihan editor UI sumber terbuka

Pembangunan Merentas Platform dan Alat

Walaupun terutamanya mensasarkan sistem terbenam, keserbabolehan LVGL membolehkan pembangun mencipta pengalaman pengguna yang konsisten merentasi platform yang berbeza. Pustaka ini boleh berjalan dalam penimbal bingkai pada Linux atau melalui emulasi, membolehkan antara muka yang sama digunakan pada kedua-dua peranti fizikal (seperti paparan termostat) dan apabila mengaksesnya dari jauh melalui antara muka web yang dikompil dengan Emscripten.

Beberapa alat wujud untuk memudahkan pembangunan antara muka dengan LVGL. SquareLine Studio berfungsi sebagai editor khusus untuk antara muka LVGL, walaupun sesetengah pembangun menyatakan mereka lebih suka plugin VSCode berbanding aplikasi tersendiri. Pilihan alternatif yang disebut oleh komuniti termasuk GUI Guider dari NXP dan EEZ Studio sumber terbuka, yang dianggap lebih mudah digunakan oleh sesetengah pengguna.

Integrasi MicroPython dan Pustaka Alternatif

LVGL menawarkan sokongan MicroPython, walaupun ahli komuniti menasihati agar tidak menggunakan port rasmi. Sebaliknya, mereka mengesyorkan implementasi alternatif di github.com/lvgl-micropython/lvgl_micropython untuk fungsi yang lebih baik, termasuk sokongan untuk fon tersuai. Integrasi ini membolehkan pembangun Python menggunakan keupayaan LVGL tanpa menulis kod C.

Apabila mempertimbangkan alternatif dalam ruang GUI terbenam, TouchGFX kelihatan sebagai pesaing utama kepada LVGL. Untuk paparan monokrom dengan kekangan sumber yang ekstrem, pilihan seperti pustaka Adafruit GFX mungkin lebih sesuai. Perlu diingat bahawa LVGL menduduki ruang yang berbeza daripada pustaka GUI mod segera seperti Dear ImGui, yang terutamanya direka untuk sistem dengan GPU berkemampuan 3D berbanding pengawal mikro.

Pecutan Perkakasan dan Pembangunan Masa Depan

Walaupun LVGL terutamanya menggunakan pemprosesan perisian, ia boleh memanfaatkan pecutan perkakasan khusus pada platform tertentu. Sesetengah pengawal mikro mempunyai enjin Blitter atau pemproses piksel khusus (seperti Pixel Pipeline-Processor dari NXP) yang boleh mengendalikan operasi seperti penskalaan, putaran, pengadunan alfa, dan penyalinan piksel. Dokumentasi LVGL menyebut pelbagai Unit Lukisan termasuk sokongan GPU, integrasi SDL (yang boleh menggunakan OpenGL), dan kerja yang sedang dijalankan untuk sokongan OpenGL ES secara langsung.

Pustaka ini terus berkembang dengan pembangunan aktif dan sokongan komuniti yang kuat. Dokumentasi yang komprehensif, contoh, dan API yang mudah telah menjadikannya kegemaran di kalangan pembangun yang bekerja dengan sistem terbenam yang memerlukan antara muka pengguna yang intuitif tanpa beban rangka kerja grafik yang lebih kompleks.

Bagi pembangun yang ingin memulakan dengan LVGL, pustaka ini menawarkan dokumentasi dan contoh yang luas, termasuk sampel kod dalam kedua-dua C dan MicroPython. Komuniti sekitar LVGL adalah aktif dan menyokong, dengan forum tersedia untuk penyelesaian masalah dan perkongsian pengetahuan.

Rujukan: LVGL Light and Versatile Graphics Library