• 正文
    • 前言
    • 準(zhǔn)備工作
    • lvgl快速實(shí)踐
    • 本文相關(guān)資料下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

實(shí)踐分享 | 基于framebuffer的lvgl的移植使用

2021/04/07
799
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

前言

LittlevGL是一個(gè)免費(fèi)的開源圖形庫,提供了創(chuàng)建嵌入式GUI所需的一切,具有易于使用的圖形元素、漂亮的視覺效果和低內(nèi)存占用。

準(zhǔn)備工作

一種方式是像LVGL | lvgl最新版本在STM32上的移植使用這篇文章的方式一樣,從頭一步一步來搭建基于framebuffer的工程,自己編寫Makefile文件。需要下載:

  • lvgllv_driverslv_examples

溫馨提示:這些可以在lvgl官方GitHub找到,也可以按照文末的方式獲取。

然后建立一個(gè)工程,把需要用到的文件復(fù)制到工程里,編寫Makefile文件即可。具體教程可參考這一篇文章:

https://www.icode9.com/content-4-2420.html

除此之外,lvgl官方倉庫也有提供基于Linux frame buffer的移植工程:lv_port_linux_frame_buffer,我們直接下載下來修改一些代碼適配我們的板子就可以。

lvgl快速實(shí)踐

文章篇幅有限,我們就不一步一步演示移植步驟了。我們直接下載lv_port_linux_frame_buffer拿過來進(jìn)行修改即可,就可以快速跑起來。

我們可以使用git clone --recurse-submodules命令下載,也可以直接下載。關(guān)于git clone --recurse-submodules命令的介紹可查閱:LVGL | 基于vs2019的lvgl模擬器使用這篇文章。我們選擇直接下載,下載得到的lv_port_linux_frame_buffer內(nèi)容為:

此時(shí),lvgl、lv_examples、lv_drivers這三個(gè)文件夾內(nèi)的內(nèi)容是空的,我們需要下載相關(guān)資源放進(jìn)去。比如:

接下來可以修改工程了,需要修改的地方也很簡單,但前提是我們的設(shè)備已經(jīng)有顯示驅(qū)動與觸摸屏驅(qū)動。

1、修改編譯器

首先需要修改Makefile,因?yàn)槲覀冃枰诎遄由吓?,所以需要使?a class="article-link" target="_blank" href="/baike/1572802.html">交叉編譯器:

 

2、修改分辨率

修改lv_conf.h文件里的LV_HOR_RES_MAX、LV_VER_RES_MAX宏為實(shí)際屏幕大小,如:

 

3、使能fb設(shè)備

修改lv_drv_conf.h文件里的USE_FBDEV宏來使能Linux frame buffer device (/dev/fbx),如:

關(guān)于frame buffer的介紹可看如下推文:

Linux系統(tǒng)開發(fā)之Framebuffer應(yīng)用編程

4、使能輸入設(shè)備

修改lv_drv_conf.h文件里的USE_EVDEV宏來使能輸入事件設(shè)備,如:

其中,你的板子的輸入事件可能不是event1,根據(jù)實(shí)際進(jìn)行修改。可以使用cat命令來測試一下你板子的觸摸屏輸入對應(yīng)的是哪一個(gè)event,如:

此時(shí),觸摸一下屏幕,則終端會有信息(亂碼信息)輸出,則說明當(dāng)前板子的觸摸輸入對應(yīng)的就是這個(gè)event。

5、添加輸入初始化

main.c初始化并注冊一個(gè)輸入設(shè)備,如:

 

6、添加lvgl心跳

main.c添加lv_tick_inc函數(shù)的調(diào)用,如:

然后就可以跑跑一些實(shí)例demo了,有些demo需要使能lv_conf.h文件里的一些配置,否則編譯會報(bào)錯(cuò),根據(jù)編譯報(bào)錯(cuò)信息修改相關(guān)配置項(xiàng)即可。

編譯成功之后,會在lv_port_linux_frame_buffer工程主目錄生成一個(gè)名為demo的可執(zhí)行文件。

傳到板子里運(yùn)行:

本文相關(guān)資料下載

本篇文章需要用到的資料及能跑的demo我已經(jīng)打包好了:

 

前往公眾號【嵌入式大雜燴】后臺回復(fù)關(guān)鍵詞:基于framebuffer的lvgl的移植使用,即可獲取下載鏈接。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

本公眾號專注于嵌入式技術(shù),包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時(shí),公眾號內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進(jìn)步!