一文掌握 LVGL 9 的源碼目錄結(jié)構(gòu)
LVGL (Light and Versatile Graphics Library) 是一款廣泛應(yīng)用于嵌入式 GUI 的輕量級(jí)開(kāi)源圖形庫(kù)。從 v9 起,LVGL 在架構(gòu)上進(jìn)一步模塊化,目錄結(jié)構(gòu)也更加清晰、易于維護(hù)。本文將對(duì) LVGL 9 源碼目錄進(jìn)行逐一講解,幫助你快速理解每個(gè)文件夾的作用與使用場(chǎng)景。
?? 頂層目錄概覽
解壓 LVGL 源碼后,你將看到如下目錄結(jié)構(gòu):
lvgl/ ├── demos/ ├── docs/ ├── env_support/ ├── examples/ ├── scripts/ ├── src/ └── tests/
下面我們對(duì)每個(gè)目錄進(jìn)行詳細(xì)解析:
?? 1. src/
— LVGL 的核心源碼(??重點(diǎn))
說(shuō)明:這是 LVGL 的核心目錄,包含所有控件、繪圖系統(tǒng)、事件系統(tǒng)等源碼。開(kāi)發(fā)者在移植、調(diào)用或定制控件時(shí),主要面對(duì)的就是這個(gè)目錄。
典型子目錄包括:
src/ ├── core/ // 核心對(duì)象系統(tǒng)(對(duì)象創(chuàng)建、布局、事件派發(fā)等) ├── display/ // 顯示驅(qū)動(dòng)接口及屏幕刷新管理 ├── draw/ // 繪圖引擎(支持 CPU/GPU 加速) ├── font/ // 字體管理與解析 ├── hal/ // 硬件抽象層(驅(qū)動(dòng)適配接口) ├── misc/ // 工具模塊(顏色轉(zhuǎn)換、內(nèi)存管理等) ├── themes/ // 主題與樣式系統(tǒng) └── widgets/ // 各種 UI 控件(按鈕、滑塊、標(biāo)簽等)
開(kāi)發(fā)建議:
使用 LVGL 時(shí)大部分 API 都來(lái)自此目錄,因此這是你學(xué)習(xí)和使用的核心。
?? 2. examples/
— API 示例
說(shuō)明:包含模塊化的功能示例,覆蓋幾乎所有控件與功能,官方文檔中的 Demo 示例就是基于此生成的。
- 示例網(wǎng)址:https://docs.lvgl.io/9.1/examples.html
結(jié)構(gòu)示例:
examples/ ├── widgets/ // 控件類示例,如按鈕、列表等 ├── layouts/ // 布局示例,如 flex/grid 等 ├── styles/ // 樣式設(shè)置示例 ├── event/ // 事件綁定和響應(yīng)示例 └── others/
?? 3. demos/
— 綜合演示項(xiàng)目
說(shuō)明:這里是官方提供的“完整應(yīng)用演示”,適合觀察組件組合和多頁(yè)應(yīng)用如何構(gòu)建。
- 可在線體驗(yàn):https://lvgl.io/demos
?? 4. docs/
— 文檔源文件
說(shuō)明:包含 LVGL 官方文檔的 Markdown 源文件,但我們通常不直接閱讀,而是訪問(wèn)官方文檔站點(diǎn):
?? 5. env_support/
— 平臺(tái)/環(huán)境適配支持
說(shuō)明:用于對(duì)接不同的操作系統(tǒng)或平臺(tái),如 RT-Thread、Zephyr、裸機(jī)環(huán)境等。
使用場(chǎng)景:當(dāng)你在移植 LVGL 到某個(gè)平臺(tái)時(shí),可以參考這里的結(jié)構(gòu)編寫(xiě)驅(qū)動(dòng)接口。
?? 6. scripts/
— 輔助腳本
說(shuō)明:包含一些自動(dòng)化腳本,如字體轉(zhuǎn)換、代碼檢查、打包腳本等。
常見(jiàn)用途:
- 字體轉(zhuǎn)碼工具
- 調(diào)試輔助腳本
注意:開(kāi)發(fā)者在正常使用 LVGL 時(shí)基本不會(huì)用到。
?? 7. tests/
— 自動(dòng)化測(cè)試代碼
說(shuō)明:這是用于 LVGL 框架自身的 CI 測(cè)試邏輯。對(duì)于嵌入式開(kāi)發(fā)者來(lái)說(shuō),一般不需要關(guān)心。
? 總結(jié)建議
| 核心源碼、控件、繪圖 | ? 必須 |
| 示例代碼、模塊演示 | ? 推薦 |
| 綜合項(xiàng)目、UI 效果展示 | ? 可選 |
| 平臺(tái)適配參考 | ? 可選 |
| 文檔源文件 | ? 忽略 |
| 構(gòu)建腳本、字體工具等 | ? 忽略 |
| 自動(dòng)化測(cè)試 | ? 忽略 |
?? 開(kāi)發(fā)者建議
- 入門(mén)推薦:從
examples/
入手,快速學(xué)習(xí) API 用法; - 進(jìn)階閱讀:深入
src/
理解 LVGL 控件、布局、事件機(jī)制; - 平臺(tái)移植:參考
env_support/
完善你自己的驅(qū)動(dòng)接口; - UI 調(diào)試:運(yùn)行
demos/
,對(duì)比實(shí)現(xiàn)方式與效果。
本專欄專為嵌入式開(kāi)發(fā)者打造,帶你從零開(kāi)始系統(tǒng)掌握 LVGL 圖形庫(kù)。內(nèi)容涵蓋源碼獲取、目錄結(jié)構(gòu)解析、控件使用、事件系統(tǒng)、主題樣式、屏幕適配到平臺(tái)移植。每一節(jié)圖文并茂,配套實(shí)戰(zhàn)項(xiàng)目與源碼講解,真正做到手把手教學(xué),適合STM32/ESP32 等平臺(tái)用戶入門(mén)與進(jìn)階。跟著學(xué),一步到位玩轉(zhuǎn) LVGL!