vscode搭建LVGL模拟器

vscode搭建LVGL模拟器
THEDI前言
我们在使用LVGL进行UI设计的时候,每次都需要烧录到MCU上才能看到结果,这样效率太低下了,所以这里使用VScode实现在PC上模拟LVGL
以下是基于LVGL v9.x
在windows
下实现的vscode搭建模拟器,老版本的模拟方法略有却别,具体请百度
准备工作
mingw64下载
由于官网更新后,导致官网直接下载的都是源码,现在下载需要前往github获取编译后的bin
github:Releases · niXman/mingw-builds-binaries
下载这个即可
CMake下载
CMake官网:Download CMake
SDL2下载
SDL2,全称为Simple DirectMedia Layer,是一个跨平台的多媒体开发库。SDL2提供了一系列函数,用于访问音频、键盘、鼠标、游戏杆和图形硬件,允许开发者编写一套代码即可在不同平台上运行。它的主要应用之一是游戏开发,许多知名游戏都是基于SDL2构建的。此外,SDL2也用于游戏开发工具、模拟器、样本演示和多媒体应用等。
在这里的LVGL就是使用了SDL2模拟一个显示触摸屏操作。
SDL2 github:Releases · libsdl-org/SDL
我们这里下载2.x版本的即可
lvgl模拟器下载
lvgl的vscode模拟器github:lvgl/lv_port_pc_vscode
下载即可master版本(v9.3)即可:
FreeRTOS下载
点击模拟器仓库中的FreeRTOS子模块,跳转后下载即可
或者访问github链接:FreeRTOS/FreeRTOS-Kernel at 23cfd114d314b0e2dc5e53a3540b0647fc0a1b5b
lvgl源码下载
github:lvgl/lvgl at db62f65c22811acf36b9b83da0228d7389317283
我们这里下载lvgl v9.3:
lvgl驱动下载
lvgl 9.x版本之后,lvgl源码就自带了,不用下载了
新建模拟器项目
在此之前我要说:一定不能有中文文件夹!!!!!!!!!!
最终我们就得到了6个压缩包:
我们将lv_port_pc_vscode_master
压缩包解压后得到模拟器工程,这就是我们的工程文件夹模板
然后我们分别将对应的FreeRTOS、lvgl源码压缩包解压后的文件夹内的所有内容,全部复制到lv_port_pc_vscode_master
对应的FreeRTOS文件夹、lvgl文件夹
然后分别将CMake、mingw64、SDL2解压后的文件夹放到自己想要的位置。
放好后,我们开始添加系统环境变量,分别将这三个文件夹
的bin目录添加到系统环境目录
下
项目构建
vscode插件
在vscode中,插件要下好这几个:
vscode构建
打开我们之前的lv_port_pc_vscode_master
文件夹,点击构建按钮,开始编译
正常来说都能构建成功,构建完成后,会在bin目录下生成main.exe
文件,我们点击它即可启动
然后就会显示默认的lvgl demo
移植SquareLine代码开始模拟
在前面项目的基础上,创建一个user_code
文件夹,然后将SquareLine导出的代码全部拷贝过来
修改ui.h
中包含头文件路径
然后回到main.c
中,添加对应的头文件
和ui_init
代码
在根目录下的CMakeLists.txt
的添加对应的内容,以便我们能使用user_code
中的内容
然后进行编译即可,遇到报错对应解决一下,解决不了问ai或百度!
可能遇到的问题
全量编译
我们遇到只修改main.c的文件后进行编译,非常之久的情况,因为默认的是设置编译生成的bin目录在根目录下,导致每一次修改过后,都会触发全量编译,而lvgl的demo那些很多,所以就会等待很久
解决方法
:
将CMakeLists下的输出可执行文件的路径,改为变为build目录下,而不是根目录下
未定义的SDL_main
编译最后报错:
把main.c
里的main函数名
改为SDL_main
即可
找不到文件sdl2-config.cmake
如果遇到CMake构建时报错找不到这个文件,我们可以再次确认是否SDL添加进环境变量,然后重启一下电脑,看看可以不。
解决方法1
:如果不可以,我们修改CMakeLists.txt中的内容,添加一行SDL2_DIR路径即可(路径为你自己放SDL2的目录下)
解决方法2
:由于这个文件在x86_64_mingw32\lib目录下,所以将其添加到环境变量试一试