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

news2024/10/7 7:23:42

目录

概述

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


软件下载地址:

和lvglUI开发仿真相关的软件资源-CSDN文库

概述

本文主要介绍使用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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务链路追踪ELK

微服务链路追踪&ELK 链路追踪概述链路追踪sluthzipkinelk日志管理平台 一 链路追踪 1 概述 1.1 为什么需要链路追踪 ​ 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0…

紫光展锐5G处理器T750__国产手机芯片5G方案

展锐T750核心板采用6nm EUV制程工艺,CPU架构采用了八核设计,其中包括两个主频为2.0GHz的Arm Cortex-A76性能核心和六个主频为1.8GHz的A55小核。这种组合使得T750具备卓越的处理能力,并能在节能的同时提供出色的性能表现。该核心模块还搭载了M…

Kafka 如何保证消息顺序及其实现示例

Kafka 如何保证消息顺序及其实现示例 Kafka 保证消息顺序的机制主要依赖于分区(Partition)的概念。在 Kafka 中,消息的顺序保证是以分区为单位的。下面是 Kafka 如何保证消息顺序的详细解释: ⭕分区内消息顺序 顺序写入&#…

基于JSP技术的定西扶贫惠农推介系统

开头语:你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:JSP 数据库:MySQL 技术:B/S架构、JSP技术 工具:Eclipse、MySQL、Tomcat 系统展示 首…

并查集C++

并查集的原理 并查集(Union-Find Set)。可以把每个连通分量看成一个集合,该集合包含了连通分量中的所有点。这些点两两连通(连通性),而具体的连通方式无关紧要,就好比集合中的元素没有先后顺序之…

AI 客服定制:LangChain集成订单能力

为了提高AI客服的问题解决能力,我们引入了LangChain自定义能力,并集成了订单能力。这使得AI客服可以根据用户提出的问题,自动调用订单接口,获取订单信息,并结合文本知识库内容进行回答。这种能力的应用,使得…

java:spring使用【XXXPostProcessor】添加bean定义,修改bean定义、代理bean

# 项目代码资源&#xff1a; 可能还在审核中&#xff0c;请等待。。。 https://download.csdn.net/download/chenhz2284/89433361 # 项目代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start…

【pytest官方文档学习】覆盖全局变量的示例代码在8.2.x版本运行报错

我们经常会在conftest.py中定义一些fixture提供给测试方法使用&#xff0c;但是在有些测试中&#xff0c;我们用不上或者需要对其结果进行处理后再用&#xff0c;这时候&#xff0c;就需要我们对fixture进行覆盖或重写。 在学习pytest-8.2.x官方文档看到了它给出的覆盖全局fixt…

【多线程】如何使用jconsole工具查看Java线程的详细信息?

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 先运行java程序&#xff01;2. 在jdk目录下的bin文件夹中找到jconsole.exe3. 新建连接4. 观察线程状态5. …

【Python安装教程】2024年最新版Python环境搭建及模块安装,保姆教程,手把手操作,不信你还不会!

前言 Python 可应用于多个平台&#xff0c;如 Windows 、 Linux 和 MacOS 。 如何检测电脑是否安装了Python&#xff1f; 按键盘winR键&#xff0c;打开运行框。输入CMD&#xff0c;回车确定。输入where Python后回车&#xff0c;如有安装则会显示Python的安装位置。如未安装…

Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】

Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客 Java web应用性能分析之【java进程问题分析定位】-CSDN博客 Java web应用性能分析之【…

利用鱼骨图进行项目问题复盘与改进

一、引言 在项目管理中&#xff0c;问题复盘是一个至关重要的环节。它不仅能帮助我们识别项目执行过程中出现的问题&#xff0c;还能促使我们深入探究问题的根本原因&#xff0c;从而采取有效的改进措施。在这个过程中&#xff0c;鱼骨图作为一种强大的工具&#xff0c;为我们…

Android 13.0 Launcher3单层模式workspace中app列表页排序功能实现

1.概述 在13.0的定制化开发中,对于Launcher3的功能定制也是好多的,而对于单层app列表页来说排序功能的开发,也是常有的功能这就需要了解加载app数据的流程,然后根据需要进行排序就可以了,接下来就来实现这个功能 如图: 2. Launcher3单层模式workspace中app列表页排序功能…

Linux-Tomcat服务配置到系统服务

目录 前言一、系统环境二、配置步骤step1 了解环境的安装路径step2 配置生成tomcat.pid文件step3 配置tomcat.service文件 三、测试systemctl命令管理Tomcat服务3.1 systemctl命令启动Tomcat服务3.2 systemctl命令查看Tomcat服务3.3 systemctl命令关闭Tomcat服务3.4 systemctl命…

【计算机网络仿真实验-实验2.4、2.5】静态路由、动态路由(RIP)

实验2.4 静态路由 1. 实验拓扑图 注意&#xff1a;有些同学不知道两个路由器之间如何用串行DCE(红线)相接&#xff0c;只需要为路由器分别增加新的HWIC-2T接口卡就好了 不知道如何添加物理接口的&#xff0c;可以查看本人计算机网络专栏中【计算机网络仿真实验——实验准备】…

JDK8-17新特性

一、JDK8新特性:Lambda表达式 1.Lambda表达式及其使用举例 Lambda是一个匿名函数&#xff0c;我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格&#xff0c;使Java的语言表达能力…

Elasticsearch 认证模拟题 - 21

一、题目 写一个查询&#xff0c;要求查询 kibana_sample_data_ecommerce 索引&#xff0c;且 day_of_week、customer_gender、currency、type 这 4 个字段中至少两个以上。 1.1 考点 Boolean 1.2 答案 GET kibana_sample_data_ecommerce/_search {"query": {&q…

湘潭大学软件工程数据库2(题型,复习资源和计划)

文章目录 选择题关系范式事务分析E-R 图sql作业题答案链接&#xff08;仅限有官方答案的版本&#xff09;结语 现在实验全部做完了&#xff0c;实验和作业占比是百分之 40 &#xff0c;通过上图可以看出来&#xff0c;重点是 sql 语言 所以接下来主要就是学习 sql 语句怎么书写…

AirPlay技术规范及认证资讯

AirPlay是Apple开发的一种无线技术&#xff0c;允许用户将音频、视频或图片从iOS设备、Mac电脑或其他支持AirPlay的设备无线传输到支持AirPlay的接收器设备上&#xff0c;例如智能电视或音响系统。这项技术基于Wi-Fi网络&#xff0c;提供了一种便捷的方式来共享媒体内容。AirPl…

GitLab教程(二):快速上手Git

文章目录 1.将远端代码克隆到本地2.修改本地代码并提交到远程仓库3.Git命令总结git clonegit statusgit addgit commitgit pushgit log 首先&#xff0c;我在Gitlab上创建了一个远程仓库&#xff0c;用于演示使用Gitlab进行版本管理的完整流程&#xff1a; 1.将远端代码克隆到本…