stm32mp157教程案例 STM32MP157移植LVGL

发布者:大酉幽华1最新更新时间:2024-01-08 来源: elecfans关键字:移植 手机看文章 扫描二维码
随时随地手机看文章

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官网为https://lvgl.io/,进入LVGL官网即可看到Github、Release notes、Docs、Forum链接,可按需下载。



2 运行Demo

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


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


2.1 下载代码


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


git clone https://github.com/

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进行下载。具体操作如下:


mkdirlvgl

cd lvgl

#Git lvgl的源码

git clone --recursive

https://github.com/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库。具体的方法比较多,如:

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

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

使用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产品靓照


关键字:移植 引用地址:stm32mp157教程案例 STM32MP157移植LVGL

上一篇:STM32的中断及是如何使用
下一篇:STM32单片机小Tips(6):玩转IAR,开发STM32

推荐阅读最新更新时间:2024-11-17 04:03

ARM的嵌入式Linux移植体验之应用实例
应用实例的编写实际上已经不属于Linux操作系统移植的范畴,但是为了保证本系列文章的完整性,这里提供一系列针对嵌入式Linux开发应用程序的实例。 编写Linux应用程序要用到如下工具: (1)编译器:GCC GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc 。 我们应该使用arm-linux-gcc。 (2)调试器:GDB gdb是一个用来调试C和C++程序的强力调试器,我们能通过它进行一系列调试工作,包括设置断点、观查变量、单步等。 我们应该使用arm-linux-gdb。 (3)Make GNUMake的主要工作是读进一个文本文件,称为makefile。这个文件记
[单片机]
015_STM32程序移植之_NRF24L01模块
引脚接线图如下所示 STM32引脚 NRF24L01引脚 功能 GND GND 3.3V 3.3V PB8 CE PB9 CSN PB13 SCK PB15 MOSI PB14 MISO PB12 IRQ STM32引脚 CH340引脚 GND GND 3.3V 3.3V TXD RXD RXD TXD NRF24L01分为主从,就是一个发送一个接受,两个的接线图都是按照上面的来进行接线 移植程序 移植成功发送程序之后进行复制成为接受程序,并更改main.C就行了 将
[单片机]
opencv移植到tq2440
一、编译环境及库文件 linux环境:ubuntu-10.10 交叉编译:4.3.3 arm板子:tq2440 libz: zlib-1.2.7 libjpeg: jpegsrc.v7 libpng: libpng-1.5.10 libyasm: yasm-1.2.0 opencv: opencv-1.0.0 libx264: x264-snapshot-20120608-2245 libxvid: xvidcore-1.3.2 lffmpeg: ffmpeg-0.10.3 二、opencv-2.4.1的移植过程 1、libz的交叉编译: #CC=arm-linux-gcc ./co
[单片机]
OpenWrt移植到龙芯 龙芯智能路由在路上
  龙芯俱乐部与OpenWrt中文网OpenWrt-DreamBox开发中心合作,成功将OpenWrt移植到逸珑8089龙芯2F笔记本电脑上。据介绍:Loongson2F可以运行OpenWrt,既可以在x86电脑上编译在龙芯本上运行的OpenWrt,也可以在MIPS的龙芯本龙芯电脑上编译,可以做龙芯智能路由器,智能家居之类的应用。龙芯俱乐部将在下半年的“龙芯开源技术应用竞赛”中推广基于OpenWrt系统的龙芯智能路由器应用于智能家居。    据了解,OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。同时,它还提供
[网络通信]
Windows下u-boot-2011.03在Mini2440移植详解(4)
增加Nand Flash的支持 参考网址: http://blog.csdn.net/zhaocj/article/details/6678866 http://blog.csdn.net/zhaocj/article/details/6709948 Nand flash的移植,网上说的很多。作者参考的是上面的两个网址,关于ECC的内容还没有校验。 网址http://my.oschina.net/fzliu/blog/33642,http://blog.chinaunix.net/uid-14833587-id-76512.html和http://blog.sina.com.cn/s/blog_640029b3
[单片机]
Windows下u-boot-2011.03在Mini2440<font color='red'>移植</font>详解(4)
FreeRTOS移植+点亮OLED任务线程
准备工作: 先下载了官方提供的手册、DEMO、固件包,并通读了一下(注意,MDK版本要求比较高!为了找个能用的Keil折腾了很久): 制作裸机点灯代码 前面已经有‘探路者’把这部分做完了,我就不再叙述了,不过还是要自己动手移植一下,这样可以了解片子与f103等常用的芯片的区别。 添加FreeRTOS部分 这是第一次真正意义上自己独立移植了一次FreeRTOS^_^,没有遇到太多的障碍: 使用的FreeRTOS版本是正点原子f103光盘里面的,9.0版本 解压缩后,只需要复制FreeRTOS,而用不到*-Plus: FreeRTOS中,也有很多用不到的文件,请参考正点原子开源的FreeRTOS移植教程。 需要注意的地方是
[单片机]
FreeRTOS<font color='red'>移植</font>+点亮OLED任务线程
stm32f429 移植RT_Thread
RTT作为一个中国的开源实时操作系统,经过国内一些专业人士的充实,现在其已经支持大部分MCU以及X86当然现在用的很火的STM32也不例外;RTT最大的特点就是线程数不限,支持以线程为基本调度单位的多任务系统。调度算法是基于优先级的全抢占式线程调度,支持256个线程优先级(亦可配置成32个线程优先级),0优先级代表 最高优先级,255优先级留给空闲线程使用;相同优先级上支持多个线程,这些相同优先级的线程采用可设置时间片长度的时间片轮转调度;调度器寻找下一个最 高优先级就绪线程的时间是恒定的(O(1))。系统不限制线程数量的多少,只与物理平台的具体内存相关。 现在2014.2月,RTT已经更新到1.2.0版本,当然现在STM32也出
[单片机]
stm32f429 <font color='red'>移植</font>RT_Thread
【GD32 MCU 移植教程】2、从 GD32F303 移植到 GD32F503
1. 前言 GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序从 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。 2. 引脚兼容性 GD32F303 与 GD32E503 在相同封装下是 Pin To Pin 兼容的。但由于 GD32E503 较 GD32F303多了 SHRTIMER、SQPI 功能,所以两者引脚定义有细微差别,如下表所示: 表 1 GD32F303 系列和 GD32E503 系列引脚区别 3. 内部资源兼容性 下表给出了 GD32F303 与 GD32F503 的资源对比总览(
[单片机]
【GD32 MCU <font color='red'>移植</font>教程】2、从 GD32F303 <font color='red'>移植</font>到 GD32F503
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved