市面上有許多嵌入式GUI庫(kù)可供選擇,包括開(kāi)源GUI庫(kù)和閉源GUI庫(kù),開(kāi)源GUI庫(kù):LVGL,EmWin等;閉源GUI庫(kù):TouchGFX,柿餅GUI等。
本次開(kāi)發(fā)教程的測(cè)試板卡來(lái)自創(chuàng)龍科技的TLT113-EVM國(guó)產(chǎn)工業(yè)評(píng)估板,基于全志科技T113-i雙核ARM Cortex-A7 + 玄鐵C906 RISC-V + HiFi4 DSP異構(gòu)多核處理器設(shè)計(jì),ARM Cortex-A7處理器單元主頻高達(dá)1.2GHz。
評(píng)估板由核心板和評(píng)估底板組成,核心板CPU、ROM、RAM、電源、晶振等所有元器件均采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率100%。同時(shí),評(píng)估底板大部分元器件亦采用國(guó)產(chǎn)工業(yè)級(jí)方案。核心板經(jīng)過(guò)專業(yè)的PCB Layout和高低溫測(cè)試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
T113-i國(guó)產(chǎn)工業(yè)評(píng)估板硬件資源圖解
此外,T113-i國(guó)產(chǎn)工業(yè)開(kāi)發(fā)板的接口資源豐富,能夠支持引出雙路網(wǎng)口、雙路CAN、雙路USB、雙路RS485、RS232等通信接口,同時(shí)引出LVDS LCD、TFT LCD、MIPI LCD、HDMI OUT、CVBS IN/OUT、LINE IN、MIC IN、H/P OUT等音視頻多媒體接口,板載WIFI、4G(選配)模塊,支持1080P@60fps JPEG/MJPEG視頻硬件編碼,支持4K@30fps H.265、4K@24fps H.264視頻硬件解碼,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。
可長(zhǎng)按二維碼識(shí)別下載
本篇文章主要描述如何將LVGL8.1移植到創(chuàng)龍科技的T113-i開(kāi)發(fā)板上。
LVGL
-
LVGL,全名“Littlev Graphics Library”,是一個(gè)開(kāi)源的圖形庫(kù),主要用于在嵌入式系統(tǒng)上創(chuàng)建圖形用戶界面(GUI)。它是用C語(yǔ)言編寫的,旨在高效和可定制,因此在各種微控制器平臺(tái)和顯示硬件上開(kāi)發(fā)用戶界面時(shí)備受歡迎。
-
LVGL的特性
- 輕量級(jí):LVGL旨在輕量且高效,適用于資源受限的嵌入式系統(tǒng),這些系統(tǒng)具有有限的內(nèi)存和處理能力。
- 高度可定制:LVGL允許開(kāi)發(fā)人員根據(jù)項(xiàng)目要求定制GUI元素的外觀和行為。
- 小部件庫(kù):它提供了各種預(yù)設(shè)計(jì)的圖形小部件,如按鈕、標(biāo)簽、滑塊、列表等,以簡(jiǎn)化交互式用戶界面的創(chuàng)建。
- 事件驅(qū)動(dòng):LVGL是事件驅(qū)動(dòng)的,這意味著它會(huì)響應(yīng)用戶輸入和其他事件以觸發(fā)操作或狀態(tài)更改。
- 硬件支持:LVGL支持各種顯示和輸入硬件,包括不同類型的顯示器(TFT、OLED等)和輸入設(shè)備(觸摸屏、按鈕等)。
- 積極的社區(qū):LVGL有一個(gè)積極而支持性的社區(qū),為其開(kāi)發(fā)提供了資源并提供開(kāi)發(fā)人員幫助。
- 跨平臺(tái):LVGL可以在各種微控制器平臺(tái)上使用,適用于各種嵌入式系統(tǒng)。
- LVGL的開(kāi)源鏈接:https://github.com/lvgl
LVGL移植
下載源碼倉(cāng)庫(kù)
- lvgl代碼下載鏈接:https://github.com/lvgl/lvgl/archive/refs/tags/v8.1.0.tar.gz
- lv_demos代碼下載鏈接:https://github.com/lvgl/lv_demos/archive/refs/tags/v8.1.0.tar.gz
- lv_drivers代碼卸載鏈接:https://github.com/lvgl/lv_drivers/archive/refs/tags/v8.1.0.tar.gz
- lv_port_linux_frame_buffer代碼卸載鏈接:https://github.com/lvgl/lv_port_linux_frame_buffer.git,通過(guò)git clone下載,然后切換到v8.2分支
將所有代碼寫在下來(lái)之后,代碼目錄如下:
源碼文件移植
- 創(chuàng)建目錄:lvgl,用于存放我們工程源碼
- 將lvgl源碼復(fù)制進(jìn)lvgl目錄下
- 將lv_drivers源碼復(fù)制進(jìn)lvgl目錄下
- 將lv_demos源碼復(fù)制進(jìn)lvgl目錄下
- 從lvgl中復(fù)制lv_conf_template.h到lvgl,并重命名為lv_conf.h
- 從lv_drivers中復(fù)制lv_drv_conf_template.h到lvgl,并重命名為lv_drv_conf.h
- 從lv_demo中復(fù)制lv_demo_conf_template.h到lvgl,并重命名為lv_demo_conf.h
- 從lv_port_linux_frame_buffer中復(fù)制main.c和Makefile到lvgl下
將文件移植完之后,代碼目錄如下:
修改配置文件
- 修改lv_conf.h,此文件為lvgl的配置文件
- 使能lv_conf.h頭文件,將#if 0修改為#if 1
- 根據(jù)驅(qū)動(dòng)(可在設(shè)備樹(shù)中查看)選擇像素點(diǎn)對(duì)應(yīng)像素格式的大小,否則顯示可能亂碼
- 修改顯存大小
- 查看log,使能LV_USE_LOG,設(shè)置打印的log等級(jí)并選擇打印Log的接口
- 測(cè)試的樣例中用到不同字號(hào)的字體,需要使能用到的字體
- 修改lv_drv_conf.h,此文件為驅(qū)動(dòng)配置文件
- 使能修改lv_drv_conf.h頭文件,將#if 0修改為#if 1
- 使能LCD顯示:使能USE_FBDEV,路徑設(shè)置成/dev/fb0,根據(jù)板子LCD的實(shí)際情況設(shè)置
- 使能鼠標(biāo)或者觸摸屏
- 修改lv_demo_conf.h,此文件為測(cè)試用例配置文件
- 使能修改lv_demo_conf.h頭文件,將#if 0修改為#if 1
- 使能LV_USE_DEMO_WIDGETS測(cè)試用例
- 修改main.c文件,此文件為lvgl程序的主程序
- 修改lvgl的demos頭文件
- 修改lvgl顯示的分比率,我是采用HDMI屏幕,分辨率為:1920 * 1080
- 修改鼠標(biāo)的配置,我的鼠標(biāo)的設(shè)備節(jié)點(diǎn)為:/dev/input/event5
- 修改Makefile文件,此文件為構(gòu)建工程腳本
- 修改構(gòu)建工具鏈路徑,需要選擇T113-i的交叉工具鏈,工具鏈路徑為:xxx/T113-i_v1.0/out/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
- 由于工具鏈不支持編譯選項(xiàng)-Wshift-negative-value,直接傷處對(duì)應(yīng)編譯選項(xiàng)。
- 因?yàn)闆](méi)有鼠標(biāo)的圖標(biāo)文件,所以把鼠標(biāo)圖標(biāo)的配置注釋掉
- 增加測(cè)試樣例的編譯,包含其構(gòu)建腳本
LVGL編譯驗(yàn)證
- 編譯,在lvgl工程目錄下進(jìn)行構(gòu)建,執(zhí)行make命令
- 編譯完之后,會(huì)在當(dāng)前目錄下生成demo可執(zhí)行文件
- 驗(yàn)證,我們將可執(zhí)行文件demo拷貝到板子上
- 在板子運(yùn)行LVGL實(shí)例
- 運(yùn)行結(jié)果:
總結(jié)
- lvgl在Linux上的移植是比較簡(jiǎn)單快捷的;只需要修改幾個(gè)配置文件,即可在目標(biāo)上運(yùn)行,對(duì)我們部署UI非常方便。
- lvgl在T113-i上運(yùn)行整體效果還可以,流暢度整體滿意,適合做一些項(xiàng)目的落地。
- lvgl的是跨平臺(tái)的,所以寫一個(gè)應(yīng)用可以多端部署,避免了重復(fù)開(kāi)發(fā)的過(guò)程。
關(guān)于創(chuàng)龍科技
創(chuàng)龍科技(Tronlong)始創(chuàng)于2013年,是國(guó)內(nèi)領(lǐng)先的嵌入式產(chǎn)品平臺(tái)提供商,業(yè)務(wù)主要涵蓋工業(yè)核心板、工業(yè)評(píng)估板、工業(yè)單板機(jī)、項(xiàng)目服務(wù),總部位于廣州科學(xué)城,下設(shè)獨(dú)立運(yùn)營(yíng)的教儀事業(yè)部,在北京、天津、上海、南京、深圳、西安、成都等地設(shè)有業(yè)務(wù)及技術(shù)服務(wù)中心。
創(chuàng)龍科技10多年來(lái)一直專注于ARM、FPGA、DSP異構(gòu)多核技術(shù)開(kāi)發(fā),堅(jiān)持“國(guó)產(chǎn) + 進(jìn)口”雙引擎產(chǎn)品戰(zhàn)略,是全志、瑞芯微金牌合作伙伴,以及TI、NXP、Xilinx、紫光同創(chuàng)中國(guó)官方合作伙伴,為實(shí)時(shí)系統(tǒng)、現(xiàn)場(chǎng)總線、物聯(lián)網(wǎng)、人工智能等技術(shù)提供應(yīng)用平臺(tái),產(chǎn)品廣泛應(yīng)用于工業(yè)自動(dòng)化、能源電力、儀器儀表、醫(yī)療、通信、安防等行業(yè)。
? ? ?
審核編輯 黃宇
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5121瀏覽量
98183 -
LVGL
+關(guān)注
關(guān)注
1文章
91瀏覽量
3078 -
全志T113
+關(guān)注
關(guān)注
0文章
54瀏覽量
400
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論