支持LVGL的micropython固件编译(一)

news/2024/11/17 5:36:38/

       LVGL是一款嵌入式开发比较常用的开源GUI库,lvgl本身采用c以面向对象的方式开发,这种高级特性可以很好的适应高级语言,所以采用python开发也是不错的选择。现在我们就尝试下使用micropython开发lvgl应用。官方对micropython已经做了移植支持,采用pycparser工具将lvgl  c源码进行封装出一个中间c文件做为mpy模组接口。lvgl官方github上已经做好了带有移植lvlg的micropython例子,我们直接下载下来编译即可使用。

开发环境

软件:Ubuntu 18.04虚拟机

1.安装依赖的环境

sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial
如果已经安装过了,不会再次安装

2.下载源码

github仓库地址:GitHub - lvgl/lv_micropython: Micropython bindings to LVGL for Embedded devices, Unix and JavaScript

网络好的同学可以直接

git clone https://github.com/lvgl/lv_micropython.git

下代码,网不好的话可以科学上网,或者用gitee中转一下的方法拉代码,在个人gitee账号里采用从GitHub导入仓库的方法建立gitee上的仓库,然后在从gitee上拉代码,下面以我的为例。

git clone https://gitee.com/l_y_r/lv_micropython.git

我的gitee仓库可能不会经常同步github仓库,需要最新代码建议自己处理下。

代码下好后编译会发现很多报错,很多依赖库找不到,因为我们还没有更新子模组,很多库都是空文件。更新子模组:

cd lv_micropython
git submodule update --init
cd lv_micropython/lib/lv_bindings/
git submodule update --init

这时候网不好的同学可能会比较痛苦,要更新下载的子模组比较多,因为这些子模组包含了mpy所有端口依赖的子模组,而且依然是从github拉取的。

不过如果你跟我一样只是玩unix端口编译的话,可以选择只更新以下几个子模组:

cd lv_micropython/
git submodule init lib/berkeley-db-1.xx
git submodule init lib/axtls
git submodule init lib/mbedtls
git submodule init lib/micropython-lib
git submodule init lib/lv_bindings
git submodule updatecd lv_micropython/lib/lv_bindings/
git submodule init lvgl
git submodule init pycparser
git submodule updatecd lv_micropython/lib/lv_bindings/driver/png/
git submodule init lodepng
git submodule update

submodule update失败就多试几次,就可以了。

3.编译

编译mpy-cross工具:

cd lv_micropython
make -C mpy-cross

编译unix端口的mpy:

make -C ports/unix/

编译好后测试下

./ports/unix/micropython

结果如下图:

可以发现目前的lv_micropython是采用1.14版本的,执行help('modules')查看支持的模组报错,这是因为我们编出来的standard版本得mpy没有启用help指令,修改源码启用即可。ctrl-D退出mpy的repl。

打开ports\unix\variants\standard\mpconfigvariant.h文件,在下面加入这几句,然后保存。

#define MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE (1)
#define MICROPY_PY_BUILTINS_NEXT2      (1)
#define MICROPY_PY_BUILTINS_RANGE_BINOP (1)
#define MICROPY_PY_BUILTINS_HELP       (1)
#define MICROPY_PY_BUILTINS_HELP_MODULES (1)

重新编译mpy:

cd lv_micropython/ports/unix
make clean
make -j

执行编好的固件看下结果:

help('modules')已经可以使用了,通过查看内置的模组跟标准的mpy对比发现我们这个里面含有SDL,fb, evdev,lodepng, imagetools, lvgl, lv_colors等模组,这些就是lvgl添加的组件。

其中lvgl模组就是mpy版本的GUI库,其他各个模组的用处后面用到的时候在做讲解。

4.Demo测试

lvgl官方提供的测试例子在这个路径下:lib\lv_bindings\examples

可以用编译出来的micropython解释器去执行该目录下的测试脚本。

举个栗子:

打开/lib/lv_bindings/examples/advanced_demo.py文件,在末尾加入以下代码:


if __name__ == '__main__':import timewhile True:time.sleep(1)

执行

./micropython ../../lib/lv_bindings/examples/advanced_demo.py

结果如图:

至此我们支持lvgl开发的micropython固件就编译好了,在这种带有桌面GUI的ubuntu系统上,lvgl图形加载是依靠SDL实现的,分析demo代码就能知道SDL模组作为了屏幕显示的驱动,把我们的图形加载到屏幕。micropython这种东西我们肯定是要放在板子上玩的,下一篇继续讲如何给跑linux系统的arm板编译移植。

支持LVGL的micropython固件编译(二)arm板移植


http://www.ppmy.cn/news/244112.html

相关文章

windows10 显卡GTX1050安装tensorflow-gpu教程: win10+CUDA9.0+CUDNN7.1+tensorflow1.9(或者1.10)

windows10 显卡GTX1050安装tensorflow-gpu教程: win10CUDA9.0CUDNN7.1tensorflow1.9(或者1.10) win10 显卡GTX1050安装tensorflow-gpu 最近换了一台拥有GTX1050的机子,所以告别了原来在cpu上跑tensorflow,但是没想到竟然了配置了大半天,中途…

ESP32 使用 LVGL 的简单介绍(ESP32 for Arduino)

买了个小屏幕的开发板,资料等等各种东西都不是很全,最近翻出来计划玩一下。 先对硬件做一简单介绍:采用2.8寸SPI屏幕作为显示;主控为ESP32-WROOM-32。 首先要注意到的是LVGL的库是可以直接在Arduino上面应用的。就是有一点不太好…

win10 + gtx1050 + cuda9.0 + Tensorflow1.8 gpu版本安装

win10 gtx1060 cuda9.0 Tensorflow1.8 gpu版本安装 俺电脑是GTX1050,对应CUDA9.0, 先安装acaconda 再安装cuda9.0,再安装cudnn 再创建虚拟环境 如: conda create -n your_env_name python3.6再安装GPU版本的 tensorflow p…

5G 标准 — R16

目录 文章目录 目录R16R16 引入的三阶段面向基础能力拓展优化LCOC(负载控制和过载控制)面向垂直行业能力增强mMTC一图读懂 3GPP R16R16 在 3GPP TSG 第 88 次会议上,3GPP 宣布与 2020 年 7 月 3 日冻结 5G 第一个演进标准 R16(Release 16)。 R16 标准主要从三个方向对 5…

1060 5G/1065 版显卡安装TensorFlow/CUDA

前提 你的显卡是1060 5G版本,你想尝试一下TensorFlow,还好你遇到我。 我的系统win10 64位 ,python3.6,其他系统记得下载对应版本,我没有一一测试了。 准备工作 假设你已经安装好python3.6 ,且PIP过N个版…

win10+1050Ti+tensorflow-gpu2.2.0+cudatoolkit10.1+cudnn7.6.5配置Tensorflow-gpu框架(无须本地安装cuda+cudnn)

避坑安装Tensorflow-gpu 安装心理路程(吐槽)安装环境选择安装过程详解测试 安装心理路程(吐槽) 历时两天时间,终于将Tensorflow-gpu安装成功, 期间观看不下于50篇的博客,也尝试多种的安装方法,其…

【CUDA for GTX一次点亮】winows10 + GTX1050Ti + tensorflow1.8 + CUDA9.0 + cudnn7.1

按如下步骤,一次安装成功CUDA9.0 for GTX。 搭配GPU,计算速度果然飞速提升。 O. 本人计算机及软件配置: i7-8750H 、GTX1050Ti 、Anaconda3 -64bit (安装时选择了将路径添加到环境变量,也选择了下载并安装VS&#xff…

TFLite文件解析及格式转换

随着深度学习越来越流行,工业生产不光在PC端应用场景丰富,在移动端也越来越凸显出深度学习的重要性及应用价值。由于嵌入式平台受存储、指令集限制,需要提供更小的网络模型,并且某些DSP平台不支持float指令。tensorflow提供TOCO转…