ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > 【现货发售】STM32MP157移植LVGL

【现货发售】STM32MP157移植LVGL

原创 嵌入式/内核开发 作者:武汉万象奥科 时间:2021-11-09 10:47:17 0 删除 编辑
1   简介

LVGL(Light and Versatile Embedded Graphics Library)是一个免费开源的嵌入式图形库,界面美观, 内存占用低, 支持C和Python等开发方式。早在几年前它就表现得十分惊艳,现如今被越来越多的人喜爱。笔者之前是使用6版本在单片机上面运行,如今都已经更新到7版本多了,人往高处走,终究得跟上最新版本,于是便有了关于LVGL7版本在linux上移植的这件篇笔记。


本次教程使用的开发板是万象奥科近期最新发售的HD-STM32MP157-STY开发板。该开发板使用STM32MP1家族中是目前性能强劲,资源最为丰富的一款处理器STM32MP157DAA,双核ARM Cortex-A7 @800Mhz/单核 Cortex-M4@209MHz ,板载1GB内存以及8G eMMC Flash。开发板具体信息详见文末。


LVGL官网为 ,进入LVGL官网即可看到Github、Release notes、Docs、Forum链接,可按需下载。



2     运行Demo

为了开发方便,LVGL提供了很多仿真工程,可以在Eclipse、CodeBlocks、VisualStudio等各种环境上运行。


笔者这里简单介绍下VisualStudio环境下的操作。


2.1 下载代码


运行如下命令进行代码下载:


git  clone

lvgl/lv_sim_visual_studio.git

cd lv_sim_visual_studio

git submodule update  --init --recursive


下载后得到的文件如下:



双击LVGL.Simulator.sln即可使用VisualStudio打开工程。


2.2 调试


在VisualStudio中选择x64,然后点击“本地Windows调试器”。这时,会自动对代码进行编译。



编译成功后,会自动打开界面,显示LVGL Simulator for Windows Desktop,界面如下:



3      移植

3.1、下载源代码

LVGL的源码存放于github,可通过git进行下载。具体操作如下:


mkdir lvgl

cd  lvgl

#Git lvgl的源码

git  clone  --recursive

littlevgl/

linux_frame_buffer.git

#若是下载速度慢也可以进LVGL官网的GIT仓库下载源码

cd  linux_frame_buffer

#更新一下源码

git  submodule foreach  'git checkout master; git pull'


3.2 安装必要的库


LVGL在Linux下面运行是需要依赖SDL库,首先我们需要进行如下命令安装SDL库;


sudo  apt update

sudo  apt install  -y  build-essential libsdl2-dev

3.3 交叉编译需要的库

3.3.1 交叉编译SDL库

Linux版本LVGL需要依赖SDL库,所以在交叉编译LVGL之前需要先交叉编译SDL库。具体的方法比较多,如:

  1. 纯手动交叉编译。此方法操作比较复杂,不推荐使用。

  2. 主机安装qemu来搭建arm环境,进入arm环境apt得到库(推荐)。

  3. 使用buildroot(推荐)。

本次教程介绍使用buildroot进行安装,具体步骤如下:

3.3.1.1 配置、编译


首先在buildroot源代码目录运行如下命令进行配置:


sudo make  menuconfig



勾选上图所示保存并编译。


3.3.1.2 查找SDL库


配置成功后,编译会得到一个可直接用于开发板的文件系统,这个文件系统中会包含SDL依赖库。可以使用find命令找到这个库:


sudo find / -name libSDL2.a


3.3.2 交叉编译tslib库


LVGL需要用到触摸功能,触摸功能需要使用到tslib库,我们同样使用buildroot编译tslib。


sudo make menuconfig



编译后,会得到tslib相关的库。

3.4 收集得到的库

将编译好的SDL库和tslib库拷贝到LVGL的工程中。

在LVGL工程中新建lib目录,将库文件放置于其中,lib中文件有:

libSDL2.a libts.la libts.so libts.so.o libts.so.0.10.3 pkgconfig ts tslib.h


3.5 修改Makefile文件


接下来需要修改Makefile,加入LDFLAGS和CFLAGS的配置,LDFLAGS一般代表链接可执行程序时的链接选项,CFLAGS指定了头文件查找路径。


LDFLAGS  +=  -L $(LVGL_DIR) /lib

CFLAGS  +=  -I $(LVGL_DIR) /lib

LDFLAGS  +=  -lts -lpthread


注释掉主机环境,添加交叉编译的CFLAGS



3.6 修改显示屏分辨率


在lv_conf.h中,有显示屏分辨率的配置,LV_HOR_RES_MAX和LV_VER_RES_MAX,笔者使用的屏幕分辨率为800480,将这里修改为800480即可。



3.7 编译


make CC=arm-none-linux-gnueabihf-gcc -j8


修改好代码后,使用make进行编译,编译完成会得到一个可执行文件。执行效果如下:





STM32MP1产品靓照



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70009145/viewspace-2841249/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-10-28

  • 博文量
    19
  • 访问量
    5167