#01 LVGL是什么
LVGL的作者是來自匈牙利的Gabor Kiss-,LVGL用C語言編寫,以實現最大的兼容性(與C ++兼容),模擬器可在沒有嵌入式硬件的PC上啟動嵌入式GUI設計,同時LVGL作為一個圖形庫,它自帶著接近三十多種小工具可以供開發者使用。這些強大的構建塊按鈕搭配上帶有非常絲滑的動畫以及可以做到平滑滾動的高級圖形,同時兼具著不高的配置要求以及開源屬性,顯著的優勢使得LVGL蔚然成風,成為廣大開發者在選擇GUI時的第一選擇。
主要特性
LVGL主要特性
配置要求
基本上,每個能夠驅動顯示器的現代控制器都適合運行 LVGL。最低要求是:
一塊能驅動顯示屏且Flash大于64KB,RAM大于20KB的單片機都可以支持運行LVGL。這樣也就說明只需要是我們經常用于開發的單片機幾乎都可以支持(16bit及以上)LVGL,LVGL能夠同時被這么多平臺支持的主要原因是LVGL對硬件的要求并不算太高。
系統框架
LVGL本身是一個圖形庫。
我們的應用程序通過調用LVGL庫來創建GUI。它包含一個HAL(硬件抽象層)接口,用于注冊顯示和輸入設備驅動程序。驅動程序除特定的驅動程序外,它還有其他的功能,可驅動顯示器GPU、讀取觸摸板或按鈕的輸入。
MCU有兩種典型的硬件設置。一個帶有內置LCD/TFT驅動器的外圍設備,而另一種是沒有內置LCD/TFT驅動器的外圍設備。相同的是,這兩種情況都需要一個幀緩沖區來存儲屏幕的當前圖像。
集成了TFT/LCD驅動器的MCU如果MCU集成了TFT/LCD驅動器外圍設備,則可以直接通過RGB接口連接顯示器。在這種情況下,幀緩沖區可以位于內部RAM(如果MCU有足夠的RAM)中,也可以位于外部RAM(如果MCU具有存儲器接口)中。
如果MCU沒有集成TFT/LCD驅動程序接口,則必須使用外部顯示控制器(例如、、 )。在這種情況下,MCU可以通過并行端口,SPI或通過I2C與顯示控制器進行通信。幀緩沖區通常位于顯示控制器中,從而為MCU節省了大量RAM。
#02 常見GUI對比
早些年間大部分MCU的資源和處理能力有限,受制于資源以及處理能力的不足,很少有基于MCU通用的GUI。
現如今,隨著MCU技術的發展,MCU性能以及屬性有了很大改變,相較從前,現在MCU資源增加,處理能力增強,市場需求增長,GUI的功能自然也越來越豐富了。
LVGL
LVGL集成了占用小、多平臺使用、移植簡單、操作簡單、開源免費等一系列特點。對于使用者來說,LVGL擁有30多個可以隨時使用的小部件的同時,甚至還可以自定義控件。
LVGL經常被使用在MCU級別的設備上,因其可以在多平臺上移植使用以及在不同顯示器上,以C編寫,對于資源緊張的MCU來說十分適合。
是一款面向嵌入式系統的高級窗口系統和圖形用戶界面支持系統,遵循GPL協議。作為操作系統和應用程序之間的一個中間件, 將底層操作系統和硬件平臺的細節隱藏起來,并為上層的應用程序提供了一致接口。
同時具有多種技術特性,包括可在含有MMU的32位處理器架構之上運行;同時支持低端、高端顯示設備以及具備副屏支持的功能;方便為不同操作系統和環境應運而生的三種運行模式以及內建資源的支持;嵌入式應用程序開發和調試的跨操作系統支持的屬性;完備的多窗口機制和消息傳遞機制。
Qt(Qt for MCUs)
Qt for MCUs是一個完整的圖形框架和工具包,包含在微控制器上設置、開發和部署GUI所需要的一切。您可以在裸機或實時操作系統上運行應用程序。
Qt for MCUs帶有三樣開發工具,包括一個配備了完善的代碼編輯器、版本控制等功能的IDE(Qt );以Qt QML語言編寫的幫助從頭開始或基于咸亨UI空間快速設計和構建應用程序的組件WYS|WYG編輯器(Qt Quick );Qt Quick 圖形框架提供了豐富的 QML API 集,用于構建流暢的 GUI 和渲染引擎。
優點
emWin
emWin支持在任何嵌入式系統上創建高效、高質量的圖形用戶界面,emWin支持資源受限的微控制器的系統,運行令人驚嘆的交互界面。
emWin與單任務和多任務環境兼容,可以使用專有的操作系統,也可以與任何商業RTOS兼容。它以C語言源代碼提供,使其成為嵌入式市場的專業、通用GUIc語言接口與實現 高清,可用于多種不同的場景。
優點
最后上一張對比圖,更直觀:
#03 D1哪吒 & LVGL
輕量的屬性給LVGL帶來了無數粉絲,在使用各種低配置的小型開發板時,大部分開發者都會第一時間想到LVGL,這同時又突出展現出了它的另一個特點易移植。
同樣是開源、精簡、輕量級,RISC-V和LVGL在設計理念上簡直不謀而合,他們或許就代表著未來十年科技發展的主流。
目前,全志基于阿里平頭哥C906核設計的RISC-V芯片已經支持LVGL。秉承著同樣設計理念的兩個網紅黑科技,在全志的芯片上綻放出了奇妙的花火。
在全志在線社區論壇上,有小伙伴發布了一篇將LVGL移植到哪吒D1上的帖子,一時也是引起廣泛討論
原帖&效果視頻見鏈接:
視頻中使用的是D1哪吒開發板,配上一塊帶觸摸的7寸MIPI屏幕。可以看到移植的LVGL DEMO在RISC-V指令集的芯片上絲滑運行,毫無壓力。
原帖&效果視頻見鏈接:
借助芯片的雙屏異顯功能,D1可以一邊用LVGL做UI交互,另一邊又在解碼播放視頻c語言接口與實現 高清,很好的解決追劇星人在追劇時候就難以同時操作的問題,不會占用HDMI屏幕輸出需要太多資源的同時,LVGL也很好的幫助了屏幕內容在mipi上的絲滑輸出,成功實現雙屏異顯。
而要在哪吒上把LVGL玩起來也非常簡單,只需要下載源碼后使用編譯命令編譯源碼:
CC=/xxxx/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc make
然后使用Tina Linux自帶的adb 將demo推到開發板里,就可以玩起來了。如果沒有MIPI屏幕,使用HDMI顯示器+鼠標也是同樣支持的。
*圖片來源網絡,可能已被多次轉發,找到時已難覓出處,侵刪