Ebullient第一阶段开发小结

news2024/11/19 2:38:23

一. 简介

距离Ebullient硬件发布已有一段时间,小一个月吧,在这段时间内在努力的编写代码,现在终于完成了第一阶段的功能设计,算是一个小型的样机吧,基本的代码框架基本确定了,相信后续的会快一点(希望如此吧),下面就给大家介绍一下整体的软件框架与具体功能的介绍吧。

二. 软件框架

  1. 第一点就是核的使用,主控是ESP32S3双核,所以本次将两个核都使用起来了,一个核用来跑界面,另外一个核用来跑驱动相关的代码,两个核之间的通讯使用全局变量,一个核只置位变量,另外一个核只复位变量,尽量的保证变量的值不出错。使用全局变量可能不妥的地方,后期可能会根据需要换成消息队列、信号量等等RTOS中进程间通讯的方法。

请添加图片描述

  1. 第二点就是LVGL的页面管理,在整个设计的过程中,会涉及到非常多的界面,如果在开始的时候就对它们进行初始化,内存肯定是吃不消的,只有加载对应的页面的时候,才对其进行初始化;还有界面之间的切换,如何优雅便捷的进行切换也是一个难点。

    页面管理的的过程大概如下,将新页面的初始化函数,以及页面ID等等相关的数据添加到页面堆里面,如果页面管理通过页面ID来进行当前页面的显示,最简单的管理过程就是这样的。本次实现的页面管理在之前发布过的一个页面管理的代码上进行了修改和完成,使其更加完善。

    每个页面都添加了一些新的属性: 父页面ID,子页面ID,回调函数设置函数指针。父页面ID和子页面ID可以让界面间的切换更加优雅高效。而回调函数设置函数指针(后续可能会添加界面销毁的函数指针),类似于C++类的析构和构造函数,更加优雅高效的初始化、复位变量和释放资源。

请添加图片描述

  1. 第三点就是LVGL界面与功能函数。这将其分成了两个.c文件进行编写,一个只用于对界面进行初始化,另外一个用来响应界面相关的动作;这样在后续的界面优化与功能优化会简单很多。

以上,就是当前的一个软件架构了,感兴趣的话可以访问Gitee仓库自行下载: https://gitee.com/whpUp/ebullient

三. 软件功能

FPGA之旅 出品

在硬件发布的时候,已经明确了三大基本功能,所以本次阶段性总结也是围绕这点:

  1. 音乐播放:可以通过读取TF卡中的WAV音乐文件进行音乐的播放,暂停,快进,上一曲和下一曲等基本功能,另外还通过DSP库提供的FFT函数进行音乐的频谱分析,在界面上绘制音乐的频谱图。
  2. 通讯: 完成了WIFI连接和TCP服务器的连接,WIFI和TCP的信息存储在TF卡中,方便修改(蓝牙和WIFI类似,放在后面做);完成了NRF2.4GL01底层驱动,可以完成与其进行数据的读写。本次只实现了通讯的可行性,确保了三种方式的正确性,还未完成具体的通讯协议,将在下一阶段中完成。
  3. OTA升级: 完成了从TF卡中加载固件进行升级,验证了OTA升级的可行性,下一阶段再扩展到WIFI,蓝牙和NRF2.4GL01无线通讯进行升级。

以上就是这三个主要功能完成的一个基本情况,还有许多不完善的情况,需要在下一阶段进一步的完善。

最后就是一个演示视频啦:
跳转链接(公众号)

需要实物的也可以私聊哦,感兴趣的话可以访问Gitee仓库自行下载: https://gitee.com/whpUp/ebullient

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

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

相关文章

基于grpc从零开始搭建一个准生产分布式应用(7) - 01 - 附:GRPC拦截器源码

开始前必读:​​基于grpc从零开始搭建一个准生产分布式应用(0) - quickStart​​ 一、源码目录结构 二、GRPC拦截器源码 2.1、com.zd.baseframework.core.core.common.interceptor package com.zd.baseframework.core.core.common.interceptor;import com.zd.ba…

OpenShift 4 - 管理和使用 OpenShift AI 运行环境

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 OpenShift 4.14 RHODS 2.50 的环境中验证 文章目录 启停 Notebook Server启动停止 Notebook 镜像Notebook Image 和 ImageStream使用定制的 Notebook Image 定制服务器的运行配置应用和项目用户和访问权…

嵌入式软件测试(黑盒测试)---三年嵌入式软件测试的理解

文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌…

【java IO】|java NIO总结

在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。也就是说,当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连…

解决win10下强制设置web浏览器为microsoft edge的方法

目录 问题场景实现方法禁止edge默认选项设置默认浏览器 反思 问题场景 因为一些特殊的原因,我需要第二个浏览器,我的第一个浏览器是google的chrome浏览器,所以我选择的是windows的默认浏览器,就是microsoft edge浏览器&#xff0…

MYSQL中使用IN,在xml文件中怎么写?

MYSQL: Spring中: mysql中IN后边的集合,在后端中使用集合代替,其他的没有什么注意的,还需要了解foreach 语法即可。

AI抠图软件哪个好用?推荐这三款抠图工具给你

AI抠图软件哪个好用?你是否听说过AI抠图这个操作呢?简单来说,抠图就是一种对图像进行处理的技术,它的目的是将图片中的某些区域去除或者替换。比如,如果你有一张背景很杂乱的图片,你想把背景去掉&#xff0…

【Python炫酷系列】一闪一闪亮星星,漫天都是小星星(完整代码)

文章目录 环境需求完整代码详细分析系列文章环境需求 python3.11.4及以上版本PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.…

产品需求分析师的职责内容(合集)

产品需求分析师的职责内容1 职责: 1、根据公司战略规划,负责妇产科相关平台产品的中长期规划; 2、组织需求调研、收集、分析、整理、提炼、用户的需求,分析形成可行性研究报告; 3、深入挖掘产品需求,管理用户及公司内部业务需求&a…

深度卷积神经网络的剪枝方法

深度学习领域的一种剪枝技术是“网络瘦身(Network Slimming)”,这是一种旨在深度卷积神经网络(CNN)中实现通道级稀疏性的简单方案。该技术利用批量归一化中的放缩层来有效识别并修剪网络中不重要的通道。本文将详细介绍…

查看CPU的型号方法很多,而且步骤简单

每台计算机至少包含一个处理器,也称为CPU或中央处理单元。你电脑的CPU可能是由英特尔或AMD制造的。以下是如何查看你的CPU以及它的速度。 在设置应用程序中查找你的CPU 要在Windows 10或Windows 11设置应用程序中查找此信息,请导航到“设置”>“系统…

黑盒测试中关键截图如何打点

黑盒测试中关键截图如何打点Android黑盒测试过程中如何进行有效的打点是我们经常遇到的问题,我们一般会在脚本内部进行数据打点,也可以使用其他进程录屏或截图。那我们如何选取合适的方式进行打点记录呢?下图是对常用打点方式的统计&#xff…

全链路压力测试:解析其主要特点

随着信息技术的飞速发展和云计算的普及,全链路压力测试作为一种关键的质量保障手段,在软件开发和系统部署中扮演着至关重要的角色。全链路压力测试以模拟真实生产环境的压力和负载,对整个业务流程进行全面测试,具有以下主要特点&a…

openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表

文章目录 openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表164.1 操作场景164.2 查询错误信息164.3 处理数据导入错误 openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-…

鸿蒙(HarmonyOS)应用开发—— video组件实操

video 组件 harmonyOS 系统提供了基础的video。下面就直接上代码 原始video 新建项目 customVideo项目 本地视频 网络地址,就不用说明,只需要把地址换成网络地址即可 在resource 文件夹下的rawfile文件夹下 添加视频 在index.ets Video({src:$rawf…

C++数据结构——二叉搜索树详解

目录 一,关于二叉搜索树 1.1 概念 1.2 基本结构 二,二叉搜索树接口实现 2.1 插入 2.2 查找 2.3 打印 2.4* 删除 三,二叉搜索树接口递归实现 3.1 查找 3.2 插入 3.3 删除 四,二叉搜索树的默认成员函数 五,…

一篇文章带你了解各个程序员接单平台,让你选择不再迷茫!!!

相信现在很多程序员都已经走上了或者准备走上网上接单这条路,但是目前市面上的接单平台可谓五花八门,对于各个平台的优缺点,不同的程序员该如何选择适合自己的接单平台,你又是否了解呢? 接下来就让小编用一篇文章来为…

定位咨询:企业市场竞争中的定海神针

什么是定位咨询?定位咨询能给企业带来什么帮助?在现代市场的激烈竞争中,定位咨询不仅是企业区分自己的重要工具,更是它们赢得市场份额的关键。以下是定位咨询的定义和几个核心方面,笔者将列举具体案例说明其重要性和实用性。 定位咨询的简单…

python接口自动化测试--requests使用和基本方法封装

之前学习了使用jmeterant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对“接口”以及“接口测试”有了一个基础了解,最近找了一些用python做接口测试的资料,一方面为了学习下如何使用python进行接口测试(如何做出一个…

券商期权手续费现在最低多少钱一张?怎么调低最方便

券商期权手续费是指您在证券公司开设期权账户并进行期权交易时,需要向券商支付的费用。券商期权手续费主要包括以下三个部分: 中国结算费用:这是中国证券登记结算有限责任公司向期权交易者收取的费用,固定为每张合约0.3元&#x…