当前位置: 首页 > news >正文

基于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

相关文章:

基于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.…...

H5112B 降压恒流芯片12V24V36V48V60V72V100V 1.2ALED 调光无频闪光滑细腻

H5112B多功能LED恒流驱动器是一款具有良好性能与高度集成度的驱动芯片。以下是该产品的主要优点及应用领域的详细分析: 产品优点: 宽电压输入范围:H5112B支持5V至90V的宽电压输入范围,使其能够适应多种不同的电源环境&#xff0…...

真心建议大家冲一冲新兴领域,工资高前景好【大模型NLP开发篇】

前言 从ChatGPT到新近的GPT-4,GPT模型的发展表明,AI正在向着“类⼈化”⽅向迅速发展。 GPT-4具备深度阅读和识图能⼒,能够出⾊地通过专业考试并完成复杂指令,向⼈类引以为傲的“创造⼒”发起挑战。 现有的就业结构即将发⽣重⼤变…...

深度剖析淘宝扭蛋机源码:打造趣味性电商活动的秘诀

在当今电商市场中,如何吸引用户的注意力、提升用户的参与度成为了各大电商平台竞相追求的目标。淘宝扭蛋机作为一种新型的电商活动形式,以其趣味性和互动性深受用户喜爱。本文将深度剖析淘宝扭蛋机源码,探讨其如何打造趣味性与互动性并存的电…...

vue3+优化vue-baidu-map中marker点过多导致的页面卡顿问题

场景: 移动端h5中,当我们需要在地图中展示很多marker点坐标的时候,通常会使用 bm-marker ,去循环生成marker点,在数量不多的情况下是没问题的,但是随着数据量的增加,地图就会变得卡顿,以及渲染延…...

PMS助力制造企业高效运营︱PMO大会

全国PMO专业人士年度盛会 北京易贝恩项目管理科技有限公司副总经理朱洪泽女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“PMS助力制造企业高效运营”。大会将于6月29-30日在北京举办,敬请关注! 议题简要: …...

认识一些分布-关于极值点分布的一些知识

可以参考下面资料: Extreme Value Distribution & the Extreme Value Theory - Statistics How To...

Anaconda环境安装失败的解决方案

链接步骤的补充。 为了运行marlib,需要一个全新的Anaconda环境。但是,不想把文件安装在C盘,会造成空间不足。于是试着在.condarc文件里面改动了路径,具体如图。 上图中,在defaults前面添加了D盘的路径作为安装路径。 …...

mac 本地启动rocketmq

Mac 本地起rocketmq 官网下载:RocketMq官网下载地址 下载后解压 如果电脑配置不高或者不希望rocketmq占用太大内存的,修改配置/bin/runbroker.sh JAVA_OPT"${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"-Xmx4g 初始堆大小 4g -Xms4g 最大…...

数据资产管理的未来趋势:洞察技术前沿,探讨数据资产管理在云计算、大数据、区块链等新技术下的发展趋势

一、引言 随着信息技术的飞速发展,数据已成为企业最重要的资产之一。数据资产管理作为企业核心竞争力的关键组成部分,其发展趋势和技术创新受到了广泛关注。特别是在云计算、大数据、区块链等新技术不断涌现的背景下,数据资产管理面临着前所…...

lwip中server和client的socket、地址和端口号

1、server的socket通过lwip_socket建立: server_sd lwip_socket(AF_INET, SOCK_STREAM, 0);2、client的socket在监听到连接后建立: client_sd lwip_accept(server_sd, (struct sockaddr *)&client_addr_port, (socklen_t *)&size);3、server…...

代码随想录算法训练营Day38|动态规划理论基础、2.斐波那契数、3.爬楼梯、4.使用最小花费爬楼梯

动态规划理论基础 代码随想录 (programmercarl.com) 动态规划(Dynamic Programming,简称DP)是一种算法设计技术,它通过将复杂问题分解为更小的子问题来解决优化问题。动态规划通常用于解决那些具有重叠子问题和最优子结构特性的…...

IIC通信总线

文章目录 1. IIC总线协议1. IIC简介2. IIC时序1. 数据有效性2. 起始信号和终止信号3. 数据格式4. 应答和非应答信号5. 时钟同步6. 写数据和读数据 2. AT24C023. AT24C02读写时序4. AT24C02配置步骤5. 代码部分1. IIC基本信号2. AT24C02驱动代码3. 实验结果分析 1. IIC总线协议 …...

2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)

OpenAi 环境安装 首先确保您的计算机上已经安装了 Python。您可以从 Python 官方网站下载并安装最新版本 Python。安装时,请确保勾选 “Add Python to PATH” (添加环境变量)选项,以便在 cmd 命令行中直接使用 Python。 安装 Op…...

git原理解释,windows 10 / ubuntu 24.04 安装使用 github

git的原理 git是赫赫有名的Linux之父Linus Torvalds从2005年起开发的文件版本管理系统,掌控Linux内核这样一个最为重量级的世界产品的Linus为什么要开发这个东西呢?因为Linux系统由全世界的程序员协作维护,对源代码文件的版本控制管理的需求…...

requests post json/data;requests response 接收不同数据

1、requests post json/data 在Python的requests库中,当你发送POST请求时,可以选择使用json参数或data参数来传递数据。这两者之间的主要区别在于它们如何被序列化和发送到服务器。 json参数: 当你使用json参数时,requests库会自…...

【qt】平面CAD(计算机辅助设计 )项目 上

CAD 一.前言二.界面设计三.提升类四.接受槽函数五.实现图形action1.矩形2.椭圆3.圆形4.三角形5.梯形6.直线7.文本 六.总结 一.前言 用我们上节课刚刚学过的GraphicsView架构来绘制一个可以交互的CAD项目! 效果图: 二.界面设计 添加2个工具栏 需要蔬菜的dd我! 添加action: …...

C++中bool类型的使用细节

C中bool类型的使用细节 ANSIISO C标准添加了一种名叫bool的新类型(对 C来说是新的)。它的名称来源于英国数学家 George Boole,是他开发了逻辑律的数学表示法。在计算中,布尔变量的值可以是true或false。过去,C和C一样,也没有布尔…...

Java 面向对象 -- Java 语言的封装、继承、多态、内部类和 Object 类

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 007 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…...

【C++】和【预训练模型】实现【机器学习】【图像分类】的终极指南

目录 💗1. 准备工作和环境配置💕 💖安装OpenCV💕 💖安装Dlib💕 下载并编译TensorFlow C API💕 💗2. 下载和配置预训练模型💕 💖2.1 下载预训练的ResNet…...

HTML5 Web SQL数据库:浏览器中的轻量级数据库解决方案

在HTML5时代,Web开发迎来了一系列创新特性,其中之一便是Web SQL数据库。尽管Web SQL标准已被W3C废弃,转而推荐IndexedDB作为替代,但了解Web SQL对于学习Web存储技术的演进历程仍有其价值。本文将详细介绍Web SQL数据库的基本概念、…...

C++ const关键字有多种用法举例

C const关键字有多种用法 可以用来修饰变量、指针、函数参数、成员函数等。可以看到const在C中有多种用法,主要用于保证数据的不可变性,增强代码的安全性和可读性。在实际编程中,根据需要选择适当的const用法,可以有效避免意外修…...

Makefile-快速掌握

引用 本文完全参照大佬的文档写的,写这篇文章只是为了梳理一下知识 https://github.com/marmotedu/geekbang-go/blob/master/makefile/Makefile%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md 介绍 Makefile是一个工程文件的编译规则,描述了整个工程的编译…...

定个小目标之刷LeetCode热题(20)

这题与上一题有一点不同,上一题是判断链表是否存在环,这题是寻找入环的第一个节点,有一个规则是这样的,在存在环的情况下,运用快慢指针判断是否有环结束时,把快指针指向头结点,慢指针不变&#…...

短剧分销小程序:影视产业链中的新兴力量

一、引言 在数字化浪潮的推动下,影视产业正迎来一场深刻的变革。短剧分销小程序作为这场变革中的新兴力量,正以其独特的魅力和价值,逐渐在影视产业链中崭露头角。本文将探讨短剧分销小程序在影视产业链中的新兴地位、其带来的变革以及未来的…...

使用fvm切换flutter版本

切换flutter版本 下载fvm 1、dart pub global activate fvm dart下载fvm 2、warning中获取下载本地的地址 3、添加用户变量path: 下载地址 终端查看fvm版本 fvm --version 4、指定fvm文件缓存地址 fvm config --cache-path C:\src\fvm(自定义地址&…...

python通过selenium实现自动登录及轻松过滑块验证、点选验证码(2024-06-14)

一、chromedriver配置环境搭建 请确保下载的驱动程序与你的Chrome浏览器版本匹配,以确保正常运行。 1、Chrome版本号 chrome的地址栏输入chrome://version,自然就得到125.0.6422.142 版本 125.0.6422.142(正式版本) (…...

【C++】开源项目收集

C 是一种强大的、静态类型的通用编程语言,它的开源生态系统非常丰富,拥有众多高质量的项目。以下是一些知名的C开源项目: Boost: 这是一个庞大的库集合,提供了大量的实用工具和组件,如文件系统、网络编程、智能指针等&…...

爬虫相关面试题

一,如何抓取一个网站? 1,去百度和谷歌搜一下这个网站有没有分享要爬取数据的API 2, 看看电脑网页有没有所需要的数据,写代码测试调查好不好拿,如果好拿直接开始爬取 3,看看有没有电脑能打开的手机网页&a…...

Spring Cloud Netflix 之 Ribbon

前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言前言1、负载均衡1.1、服务端负载均衡1.2、客户端负载均衡 2、Ribbon实现服务…...