基于VSCode和MinGW-w64搭建LVGL模拟开发环境

目录

概述

1 运行环境

1.1 版本信息

1.2 软件安装

1.2.1 下载安装VS Code

1.2.1.1 下载软件

1.2.1.1 安装软件

1.2.2 下载安装MinGW-w64

1.2.2.1 下载软件

1.2.2.2 安装软件 

 1.2.3 下载安装SDL

1.2.3.1 下载软件

​1.2.3.2 安装软件

1.2.4 下载安装CMake

1.2.4.1 CMake工具介绍

1.2.4.2 下载CMake

 1.2.4.3 下载CMake

2 LVGL 软件包

2.1 lvgl 下载

2.2.1 lvgl的官方模拟器Proj

2.2.2 LVGL driver

2.2.3  lvgl源代码

2.2 lvgl软件包配置

3 VsCode中的配置

3.1  配置CMake参数

3.2 其他配置

3.2.1 准备SDL2.dll

3.2.2 check运行环境

4 测试

4.1 修改屏幕参数

4.2 测试案例

4.2.1 案例一: lv_demo_widgets

4.2.2 案例二: lv_demo_stress


概述

本文主要介绍使用VSCode和MinGW-w64搭建LVGL模拟开发环境,在使用LVGL进行项目UI设计时,通过编写代码,然后下载到板卡上运行,以查看其运行结果。这种方式虽然能正确反应UI在嵌入式设备上的运行状态,但对于开发过程来说很耗费时间。通过模拟器的形式开发UI能极大的节约时间。

1 运行环境

1.1 版本信息

软件信息版本信息
VS CodeV1.74.2
MinGW-w64MinGW-W64 GCC-8.1.0
Simple Directmedia Layer(SDL)V2.30.3
CMake3.30.0-rc2
LVGLV8.3.0

1.2 软件安装

1.2.1 下载安装VS Code

1.2.1.1 下载软件

登录VS Code网站,选择相应的版本下载软件,链接地址如下:

https://code.visualstudio.com/

1.2.1.1 安装软件

下载完成后,按照常规软件安装方法,安装该软件即可。安装完成后,需要配置如下3个插件,使其支持C/C++功能。

1.2.2 下载安装MinGW-w64

mingw-w64项目是一个完整的运行时环境,用于gcc支持Windows 64位和32位操作系统的本机二进制文件。

特性
1)编译器工具链本地托管
2)支持本地TLS回调
3)支持宽字符启动(-municode)
4)支持32位和64位Windows i386/x64
5)支持Multilib工具链
6)支持先进的gcc/binutils

1.2.2.1 下载软件

登录官方网址,选择相应的版本下载软件:

https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

在该页面的下载栏,选择如下软件:

1.2.2.2 安装软件 

1)解压软件

下载完成后,得到软件包如下:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

其包含如下内容:

直接解压该软件包,笔者建议不要更改目录名称:

2)配置环境路径

解压完成在windows 环境变量中配置其工作路径

 3)验证

打开Windows PowerShell工具,输入命令,如果路径配置成功会看见如下信息:

gcc -v

 1.2.3 下载安装SDL

Simple DirectMedia Layer是一个跨平台开发库,旨在提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。视频播放软件、模拟器和流行游戏(包括Valve的获奖目录和许多Humble Bundle游戏)都使用了它。

1.2.3.1 下载软件

登录官方网址,选择相应的版本下载软件,笔者建议选择最新的v2.30.3 

https://github.com/libsdl-org/SDL/tags

下载选项如下:

 1.2.3.2 安装软件

下载完成后,得到软件包:

其内容如下:

 将如下两个目录复制到mingw64的根目录中

SDL2-2.30.1目录中需要复制到mingw64目录中的文件夹:

1)x86_64-w64-mingw32

2)cmake

1.2.4 下载安装CMake

1.2.4.1 CMake工具介绍

1)单一源代码构建在多个平台上
CMake允许开发人员描述如何用一组输入文件构建简单和非常复杂的软件系统。这可以用于在多个平台上构建软件,从Android到iOS再到高性能计算系统。

2)准确的依赖关系和最小的重建
CMake具有精确的依赖关系,并且只允许对已更改的代码进行最小程度的重建。它还支持Fortran和c++模块。

3)Out-of-source构建
CMake允许源外构建,并提供每个源树拥有多个构建树的能力。

4)Target-centric方法
现代CMake允许将构建指定为一组目标(可执行文件,库,自定义命令)。每个目标定义了它直接依赖的其他目标。然后,CMake以正确的顺序执行构建,并包含可传递的链接目标。

5)使用允许捕获构建环境的缓存进行系统自省
每个CMake构建树都包含一个缓存文件,其中包含作为该构建的一部分设置的变量。这包括通过系统自省找到的所有内容、安装软件的路径和用于构建的标志。Cmake包含几个gui来允许编辑这个缓存文件。

6)多个目标构建系统
CMake支持多种目标构建系统,包括Visual Studio、Xcode、ninja、make和VSCode。它允许项目充分利用其最重要的资源——开发人员。由于CMake支持许多流行的c++ IDE系统以及命令行构建工具,开发人员可以选择他们最高效的构建工具。

7)跨平台打包系统
CMake包含CPack系统,它允许创建Linux、Windows和Mac的跨平台安装程序。

8)全跨平台安装系统
CMake包含一个完整的跨平台安装系统。使用同一组命令可以在Linux、Windows和Mac上安装软件包。

9)跨平台测试系统
CMake包括一个完整的跨平台测试系统。测试可以在项目的CMake源代码中指定,并在构建完成后运行。然后使用CTest来运行测试。结果可以发送到CDash,并且它们可以并行运行。

10)自定义命令
除了构建标准库和可执行文件外,CMake还允许在构建时运行任意命令。这允许代码生成工具的跨平台集成。

11)配置头文件
CMake允许项目为构建配置头文件。

12)导出/导入目标器
CMake可以从构建中导出和导入目标,以允许软件被重用。

13)集成调试器
CMake实现了调试适配器协议,以使用第三方工具交互调试项目的CMake代码。

1.2.4.2 下载CMake

登录官网下载软件

https://cmake.org/download/

 选择如下版本,下载该软件

 1.2.4.3 下载CMake

下载完成后,安装该软件,安装完成后,会在环境变量中看见其工作路径

2 LVGL 软件包

2.1 lvgl 下载

2.2.1 lvgl的官方模拟器Proj

登录github,下载该软件包:

https://github.com/lvgl/lv_port_pc_eclipse/tree/release/v8.3

选择下载版本

2.2.2 LVGL driver

登录github,下载该软件包:

https://github.com/lvgl/lv_drivers/releases/tag/v8.3.0

选择下载版本

2.2.3  lvgl源代码

登录github,下载该软件包:

https://github.com/lvgl/lvgl/tree/release/v8.3

选择下载版本

2.2 lvgl软件包配置

下载完成lvgl相关的软件包后,得到如下3个安装包,现在需要费别解压这3个软件包

1)解压:lv_port_pc_eclipse-release-v8.3.zip

直接解压该软件包,建议不需要更改任何目录名称

2)解压:lv_drivers-release-v8.3.zip 至 lv_port_pc_eclipse-release-v8.3

3)解压:lvgl-release-v8.3.zip 至 lv_port_pc_eclipse-release-v8.3

3 VsCode中的配置

3.1  配置CMake参数

1)使用vscode打开lv_port_pc_eclipse-release-v8.3工作空间

 2)配置CMakeLists.txt

在该文件中配置如下代码:

file(COPY SDL2.dll DESTINATION ../bin)

3.2 其他配置

3.2.1 准备SDL2.dll

将D:\tools\mingw64\x86_64-w64-mingw32\bin目录下的SDL2.dll 复制到 lv_port_pc_eclipse-release-v8.3 工作空间中

3.2.2 check运行环境

查看运行环境,重点查看编译器编信息

4 测试

4.1 修改屏幕参数

为了方便观察屏幕显示信息,建议调整屏幕大小,在lv_port_pc_eclipse-release-v8.3\lv_drv_conf.h 文件中可以更该参数

4.2 测试案例

4.2.1 案例一: lv_demo_widgets

调试代码信息:

运行代码后,可以看见如下UI

4.2.2 案例二: lv_demo_stress

调试代码信息:

 运行代码后,可以看见如下UI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/710763.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ARM 安全系列介绍 3.7 -- SM4 对称加密算】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | GCC | CSH | Armv8/v9 系统异常分析】 文章目录 SM4 加密算法简介SM4 工作模式算法步骤加密举例注意事项 Principle of SM4 encryption algorithm SM4 加密算法简介 SM4是一种分组…

Ubuntu20.04-ROS:Noetic安装

根据Ubuntu系统来选择对应的ros版本,在Ubuntu20.04上安装ROS-Noetic为例说明下如何安装ros 一 设置ROS源 / 终端输入 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.lis…

PyQt5学习系列之新项目创建并使用widget

PyQt5学习系列之新项目创建并使用widget 前言报错新建项目程序完整程序总结 前言 新建项目,再使用ui转py,无论怎么样都打不开py文件,直接报错。 报错 Connected to pydev debugger (build 233.11799.298)新建项目程序 # Press ShiftF10 to…

河南资信评价资质申报日期一览

河南资信评价资质申报日期一览如下: 一、申报批次与截止日期 第一批次 开始时间:根据历年经验,第一批次的申报通常在上半年进行,但具体开始时间需以河南省工程咨询协会发布的官方公告为准。截止时间:第一批次的截止日…

基于SSM+Jsp的在线教育资源管理系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

活动集锦 | 英码科技积极参与行业盛会,AI赋能城市数字化转型

在当今数字经济时代,城市全域数字化转型已经成为提升城市管理效能、优化资源配置、推动经济发展的重要手段。英码科技始终致力于为企业打造高效、低成本的行业应用方案,助力企业实现数字化转型。近日,英码科技受邀参加了多场行业展示活动&…

C语言 | Leetcode C语言题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; void myResverse(char* s,int start,int end){while(start<end){char temp s[start];s[start] s[end];s[end] temp;start;end--;} } char* reverseWords(char* s) {int start 0;int end strlen(s)-1;myResverse(s,start,end);if(s[…

Flutter全面支持六大平台的开发,那鸿蒙呢?

Hi,大家好&#xff0c;今天带大家了解一下flutter3的新特性&#xff0c;flutter已经实现了对六大平台的支持&#xff0c;flutter进一步进化&#xff0c;对于鸿蒙系统目前没有明确的支持&#xff0c;不过相信不久的将来一定会支持的。 一、futter3的新特性 Flutter 3 在发布后…

20240613解决飞凌的OK3588-C的核心板的适配以太网RTL8211F-CG

20240613解决飞凌的OK3588-C的核心板的适配以太网RTL8211F-CG 2024/6/13 16:58 缘起&#xff1a;对于飞凌的OK3588-C的核心板&#xff0c;参照飞凌的底板/开发板。 ETH0空接&#xff0c;ETH1由RTL8211FSI-CG【20&#xffe5;】更换为RTL8211F-CG【4&#xffe5;】。 都是千兆网…

高精度减法的实现

这是C算法基础-基础算法专栏的第八篇文章&#xff0c;专栏详情请见此处。 引入 上次我们学习了高精度加法的实现&#xff0c;这次我们要学习高精度减法的实现。 高精度减法与高精度加法的定义、前置过程都是大致相同的&#xff0c;如果想了解具体内容&#xff0c;可以移步至我的…

RFID技术助力资产信息数字化转型

在当前快速发展的信息化时代&#xff0c;资产信息的数字化转型对企业管理和运营具有重要意义。RFID技术作为一种先进的物联网技术&#xff0c;通过将资产信息全面数字化&#xff0c;实现高效、准确的管理和追踪&#xff0c;极大地提升了企业的运营效率和管理水平。 首先&#x…

自学C语言-9

** 第9章 函数 ** 大型程序一般会被分为若干个程序模块&#xff0c;每个模块实现一个特定功能 。C语言中&#xff0c;由函数实现子程序&#xff0c;由子程序实现模块功能。本章致力于使读者了解函数的概念&#xff0c;掌握函数的定义及调用方式&#xff1b;了解内部函数和外部…

2024 跨境电商线下大会+Shopee专题峰会将在广州举办

随着全球化的不断深入&#xff0c;美妆市场和跨境电商行业正迎来前所未有的发展机遇。 在这个充满活力的领域&#xff0c;创新和跨界合作已成为推动行业发展的关键动力。 定于7月4日上午10:00 在广州空港博览中心举办的2024 跨境电商线下大会暨Shopee广州首届(美妆)峰会则是一…

Bigtable: A Distributed Storage System for Structured Data

2003年USENIX&#xff0c;出自谷歌&#xff0c;开启分布式大数据时代的三篇论文之一&#xff0c;底层依赖 GFS 存储&#xff0c;上层供 MapReduce 查询使用 Abstract 是一种分布式结构化数据存储管理系统&#xff0c;存储量级是PB级别。存储的数据类型和延时要求差异都很大。…

Java版+ SaaS应用+接口技术RESTful API 技术开发的智慧医院HIS系统源码 专注医院管理系统研发 支持二开

Java版 SaaS应用接口技术RESTful API WebSocket WebService技术开发的智慧医院HIS系统源码 专注医院管理系统研发 支持二开 医院住院管理系统&#xff08;Hospital Information System简称HIS&#xff09;是一门医学、信息、管理、计算机等多种学科为一体的边缘科学&#xff…

文件系统小册(FusePosixK8s csi)【3 K8s csi】

文件系统小册&#xff08;Fuse&Posix&K8s csi&#xff09;【3 K8s csi】 往期文章&#xff1a; 文件系统小册&#xff08;Fuse&Posix&K8s csi&#xff09;【1 Fuse】文件系统小册&#xff08;Fuse&Posix&K8s csi&#xff09;【2 Posix标准】 0 核心知识…

算法007:三数之和

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/3sum/ 这个题相较于前几个题来说比较难&#xff0c;思想是前面一个题目…

c++使用nlohmann读取json文件

下载&#xff1a; GitHub - nlohmann/json: JSON for Modern C 解压&#xff1a; 包含头文件&#xff1a; 要包含的头文件和要使用的命名空间&#xff1a; #include <nlohmann/json.hpp>using json nlohmann::json; 测试文件&#xff1a; 代码&#xff1a; #include…

从零开始学习Java多维数组,一文教会你。

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

【three.js】旋转、缩放、平移几何体

目录 一、缩放 二、平移 三、旋转 四、居中 附源码 BufferGeometry通过.scale()、.translate()、.rotateX()、.rotateY()等方法可以对几何体本身进行缩放、平移、旋转,这些方法本质上都是改变几何体的顶点数据。 我们先创建一个平面物体,样子是这样的。 一、缩放 // 几何…