Files
esp32-dev/components/lvgl_README.md
T
2026-08-05 17:25:09 +08:00

8.1 KiB
Raw Blame History

LVGL Reference Index

类别:reference | 芯片:cross-platform | 主题:LVGL 图形库参考索引 Top-level index for all LVGL version references, migration guides, and ESP32 compatibility notes. Structured for AI agent consumption during ESP32 GUI development tasks.


Directory Structure

references/lvgl/
├── README.md                          # This file - top-level index
├── migration/
│   ├── v8-to-v9.md                    # Definitive v8 -> v9 migration guide
│   └── version-matrix.md             # Feature/widget/API matrix across versions
├── v8.2/                              # v8.2 API reference (if populated)
├── v8.3/                              # v8.3 API reference (if populated)
├── v8.4/                              # v8.4 API reference (if populated)
├── v9.0/                              # v9.0 API reference (if populated)
├── v9.1/                              # v9.1 API reference (if populated)
├── v9.2/                              # v9.2 API reference (if populated)
├── v9.3/                              # v9.3 API reference (if populated)
├── v9.4/                              # v9.4 API reference (if populated)
└── v9.5/                              # v9.5 API reference (if populated)

Version Selection Guide

Quick Decision Tree

Starting a new ESP32 GUI project?
├── ESP32-S3 or ESP32-P4 (with PSRAM)?
│   └── Use v9.5 (latest stable, full feature set)
├── ESP32 original with PSRAM?
│   └── Use v9.5 (good fit with PSRAM for buffers)
├── ESP32-C3/C6/H2 (no PSRAM)?
│   └── Use v8.4 (lower memory footprint)
├── Need maximum community examples/tutorials?
│   └── Start with v8.3 (most content available)
└── Need GPU acceleration or vector graphics?
    └── Use v9.5 (only option with draw pipeline + ThorVG)

Migrating an existing project?
├── Currently on v7?
│   └── Migrate directly to v9.5 (skip v8)
├── Currently on v8 and working fine?
│   ├── Need v9 features? → Migrate to v9.5
│   └── No new needs? → Stay on v8.4
└── Currently on v9.0-v9.4?
    └── Upgrade to v9.5 (backward compatible within v9)

Version Timeline

2020    2021        2022        2023        2024                    2025
 |       |           |           |           |                       |
 v7.0   v8.0       v8.3        v8.3.9      v9.0  v9.1  v9.2       v9.5
 May    Jun         Jul         Aug         Jan   Mar   Aug        Feb
        |                                   |                       |
        v7.9                                v8.4                   v9.4
        Jan                                 Mar                    Oct
                                                  |
                                                 v9.3
                                                 Jun

Major Version Eras

  • v7 eraVersions=7.0 - 7.9, Period=May 2020 - Jan 2021, Key Characteristics=Legacy style system, basic layout
  • v8 eraVersions=8.0 - 8.4, Period=Jun 2021 - Mar 2024, Key Characteristics=Flexbox/grid, CSS-like styles, mature ecosystem
  • v9 eraVersions=9.0 - 9.5+, Period=Jan 2024 - present, Key Characteristics=New driver API, draw pipeline, observer, built-in drivers

Migration Guides

Migration Effort Summary

  • v8.3To=v8.4, Breaking Changes=None, Compatibility Layer=N/A, Estimated Effort=Trivial (recompile)
  • v8.xTo=v9.0+, Breaking Changes=Major, Compatibility Layer=lv_api_map_v8.h (partial), Estimated Effort=2-5 days typical
  • v9.xTo=v9.y, Breaking Changes=None, Compatibility Layer=N/A, Estimated Effort=Trivial (recompile)
  • v7.xTo=v9.x, Breaking Changes=Extreme, Compatibility Layer=lv_api_map_v7.h + v8.h, Estimated Effort=5-10 days typical

ESP32 Compatibility Summary

  • ESP32 (original)PSRAM=None, Recommended LVGL=v8.4, Rationale=RAM too limited for v9
  • ESP32 (original)PSRAM=4MB+, Recommended LVGL=v9.5, Rationale=PSRAM compensates for v9 RAM usage
  • ESP32-S2PSRAM=None, Recommended LVGL=v8.4, Rationale=320KB RAM, too tight for v9
  • ESP32-S2PSRAM=2MB+, Recommended LVGL=v9.5, Rationale=Viable with PSRAM
  • ESP32-S3PSRAM=2-8MB, Recommended LVGL=v9.5, Rationale=Ideal target for v9
  • ESP32-C3PSRAM=None, Recommended LVGL=v8.4, Rationale=No PSRAM, 400KB RAM
  • ESP32-C5PSRAM=None, Recommended LVGL=v8.4, Rationale=Limited RAM, no PSRAM
  • ESP32-C6PSRAM=None, Recommended LVGL=v8.4 or v9.5, Rationale=512KB RAM, monitor usage
  • ESP32-H2PSRAM=None, Recommended LVGL=v8.4, Rationale=320KB RAM, BLE-focused chip
  • ESP32-P4PSRAM=Up to 32MB, Recommended LVGL=v9.5, Rationale=Best ESP32 for GUI workloads

ESP-IDF Version Compatibility

  • v8.3/v8.4ESP-IDF 4.4=Yes, ESP-IDF 5.0=Yes, ESP-IDF 5.1=Yes, ESP-IDF 5.2+=Yes
  • v9.0-v9.2ESP-IDF 4.4=Yes, ESP-IDF 5.0=Yes, ESP-IDF 5.1=Yes, ESP-IDF 5.2+=Yes
  • v9.3-v9.5ESP-IDF 4.4=No, ESP-IDF 5.0=Yes, ESP-IDF 5.1=Yes, ESP-IDF 5.2+=Yes

Integration Methods for ESP32

  1. ESP Component Registry (recommended for ESP-IDF): Add lvgl/lvgl to idf_component.yml
  2. esp_lvgl_port: Official ESP-IDF LVGL port with driver integration (supports v8 and v9)
  3. PlatformIO: Add to platformio.ini lib_deps
  4. Arduino Library Manager: Search "lvgl" in Library Manager
  5. Git submodule: Manual integration into project

Version Folder Contents

Each version folder (v8.2/, v8.3/, etc.) is intended to contain:

  • API reference summaries for that specific version
  • Widget documentation snapshots
  • Configuration templates (lv_conf.h defaults)
  • ESP32-specific notes and tested configurations
  • Known issues and workarounds

Currently Populated

  • v8.2/Status=Empty, Contents=Placeholder
  • v8.3/Status=Empty, Contents=Placeholder
  • v8.4/Status=Empty, Contents=Placeholder
  • v9.0/Status=Empty, Contents=Placeholder
  • v9.1/Status=Empty, Contents=Placeholder
  • v9.2/Status=Empty, Contents=Placeholder
  • v9.3/Status=Empty, Contents=Placeholder
  • v9.4/Status=Empty, Contents=Placeholder
  • v9.5/Status=Empty, Contents=Placeholder

Key Differences Between Major Versions (Summary)

v8 Highlights

  • Flexbox and grid layout support
  • CSS-like cascading style system with local styles per widget
  • lv_disp_drv_t / lv_indev_drv_t struct-based driver model
  • lv_meter widget for gauge displays
  • lv_msg messaging system
  • lv_coord_t coordinate type
  • Buffer sizes in pixels
  • Abbreviated API names (btn, img, disp, scr)

v9 Highlights

  • New display/indev API: opaque types with setter functions
  • Draw pipeline architecture (task-based, GPU-extensible)
  • Parallel rendering support
  • Observer pattern replacing lv_msg
  • Built-in drivers (SDL, Linux FB, TFT_eSPI, ST7789, ILI9341)
  • lv_scale widget (replaces lv_meter ticks)
  • ThorVG vector graphics on Canvas
  • Full-word API names (button, image, display, screen)
  • lv_color_t always RGB888 internally
  • Buffer sizes in bytes
  • Kconfig full support
  • Built-in OS abstraction (pthread, FreeRTOS)
  • Runtime color format adjustment
  • lv_coord_t removed (use int32_t)

External Resources