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

小智项目架构分析

小智代码架构

在这里插入图片描述

.github

这就是github项目上拉下来的一些信息 没什么好看的,这跟项目代码无关

.build

编译时生成的文件,没什么可看的,与项目代码无关

.main

主要的代码都在这里面了

.managed_components

这里是小智用到的一些第三方移植库,例如lvgl啊这些,都是第三方库,main文件夹里会引用这些库函数

.scripts

这里面是一些espidf烧录时用到的工具,与烧录相关,与项目代码无关,没什么看点

剩下文件

partitions.csv 这些文件保存了 段的起始地址与大小,太底层了,看看就好
.config文件都是一些配置文件,配置项目是否启用某些功能,其实也不用怎么看,因为esp32idf支持图形化配置功能

main文件夹架构

在这里插入图片描述

assets

这里面保存了一些音频文件,例如系统WiFi连接失败时要播放的音频之类的,以及一些定义好的字符串,总的来说没什么好看的
在这里插入图片描述

audio_codecs

看名字就知道这里里面保存了,音频播放的相关函数,里面有多个文件,可以看到有不同型号的音频解码芯片,最开始的俩个文件就是通用函数

在这里插入图片描述

audio_processing

这个文件夹里存放着,音频处理的文件,就是音频数据如何上传云端,如何从云端接收数据,理解即可,不必深究,也没必要

boards

这是一个比较重要的内容了,开发者主要修改的代码也在这里面,根据你板子的型号选择一个进行开发,
例如我这个是esp-sparkbot,我就在这里面进行开发
在这里插入图片描述
这里面的内容主要有以下几个文件,我们主要改的是最后一个esp_sparkbot_board.cc文件,里面是板子整个运行前所需要的初始化工作,初始化spi,i2c,按钮,屏幕,其他的可能会改的就是config.h,里面定义了硬件的引脚,以及屏幕的一些尺寸大小,主要与硬件相关的宏定义

在这里插入图片描述

display

这里面存储着屏幕的主要函数,前俩个是通用函数,这里面函数就是一些基本的绘图函数,分为lcd和oled俩种屏幕的驱动函数
在这里插入图片描述

iot

这里面存储的板子上硬件设备的控制逻辑,在这里面你可以编写硬件的控制逻辑,例如你要叫小智调大音量,那你就要在things文件夹里面添加调节音量大小的文件,里面有个speaker就是负责调节音量大小的,其他的电池啊背光啊灯啊 这些都可以用,如果硬件有支持都是有效果的。
你添加完了新设备,你要在sample_interface.json里去描述,具体都是照葫芦画瓢。
其他的文件都可以不用管,他们都是服务与things里面的文件,开发者开发时不用去管其余的文件的
在这里插入图片描述

在这里插入图片描述

led

这里面没什么好说的,就是拓展库,可以用可以不用,就是给你写好了一些灯带的控制函数,或者单独一盏灯的控制函数,可以实现一些基础的流水灯类似的操作,没必要

在这里插入图片描述

protocols

协议层,这个就比较高深了,开发者也用不到,主要是服务于小智通信协议的,开发者开发时基本不用看这里,看了也没用,除非你想做个类似小智一样的完整项目。

了

剩余文件

main.cc是程序最开始执行的程序,然后会跳转到application.cc里去执行程序,main里面啥也没写。主要的功能就是在application.cc实现了,里面写了很多初始化要做的工作,例如初始化板子的硬件,配网,ota升级,然后创建了几个freertos任务,其中一个是主循环任务,负责一直处理事件响应。另一个是ota升级检测任务,有新版本就升级,不过这个任务被我屏蔽了,因为升级很耗时间。
因此开发者需要关心的只有application.cc,以及application.h ,其他的不用关心,我修改的程序也主要在这。
CMakeLists.txt 这个有点特殊,其实就是make指令执行时,要怎么去编译整个项目,根据这里面的来,玩过嵌入式Linux的都懂

相关文章:

  • uniapp实现统一添加后端请求Header方法
  • 如何评价 DeepSeek 的 DeepSeek-V3 模型?
  • OpenAvatarChat要解决UnicodeDecodeError
  • 云服务器主动防御策略与自动化防护(下)
  • MySQL最新版9.3.0安装教程
  • 【C++游戏引擎开发】第28篇:OpenGL异步加载纹理技术详解
  • Python分支结构全面解析与实战应用指南
  • n8n部署docker本地化备份和数据持久化和迁移问题
  • 苍穹外卖10
  • C语言-函数的嵌套调用,链式访问,函数的声明和函数的定义
  • pymsql(SQL注入与防SQL注入)
  • AI大模型:(二)2.4 微调自己的模型
  • astrbot_plugin_composting_bucket开源程序是一个用于降低AstrBot的deepseek api调用费用的插件
  • 机器视觉的坐标标定
  • GCN+PyG 的安装与使用
  • Debian10系统安装,磁盘分区和扩容
  • 英语学习4.28
  • CUDA、pytorch、配置环境教程合集
  • Windows避坑部署SkyworkAI/SkyReels-V2昆仑万维电影生成模型
  • 初识Python
  • 习近平:在庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会上的讲话
  • 当AI开始深度思考,人类如何守住自己的慢思考能力?
  • 巴防长称中俄可参与克什米尔恐袭事件国际调查,外交部回应
  • 国家发改委答澎湃:将建立和实施育儿补贴制度,深入实施提振消费专项行动
  • 人社部:对个人加大就业补贴支持,对企业加大扩岗支持
  • 财政部下达农业生产防灾救灾资金3.76亿元,支持黄淮海等地抗旱保春播