快速开始¶
TinySHM 的算法库与应用工程分开组织。先选择要构建的工程,再检查它的 main/AIoTNode.cpp:包含某个模块、定义某个测试函数,并不代表启动时会执行它。
1. 选择工程¶
| 目标 | 起点 | 需要确认 |
|---|---|---|
| 理解基础框架 | CODE/AIoTNode-TinySHM | 初始化顺序与所选采集模式 |
| 数据注册与流程编排 | CODE/AIoTNode-TinySHM-Bench-Orch | 工具回调是否已接到真实算法 |
| 多节点同步 | CODE/AIoTNode-TinySHM-WSN | NODE_ROLE、网关和叶子节点配置 |
| 流式采集演示 | DEMO/AIoTNode-TinySHM-LiveStreaming | 传感器、网络、采样与发送设置 |
| 复核论文试验 | THESIS-TEST/TESTBED-OK | 启动入口、参数、实际日志对应的版本 |
更多变体见工程与版本。算法说明通常以 Core 工程的实现为依据,Bench/Orch 以 Bench-Orch 工程为依据。试验工程可能有额外方法或不同参数。
2. 构建并运行¶
在已经配置好 ESP-IDF 的终端中执行;先阅读开发环境。下例从仓库根目录构建 Core:
YOUR_SERIAL_PORT 替换成设备的串口。首次更换芯片目标才需要 idf.py set-target esp32s3;该操作会重新生成配置,已有自定义 sdkconfig 时应先备份。用 idf.py menuconfig 检查网络、组件与硬件相关配置。工程中的依赖声明、组件目录及 sdkconfig 共同决定实际构建,不能只凭文档中的 IDE 截图判断环境。
3. 追踪一次实际执行¶
- 从
main/AIoTNode.cpp的app_main()开始,确认 BSP、传感器和网络初始化是否能执行到。 - 检查被调用的示例,以及示例后的循环或提前返回。有些试验入口会一直运行测试,后续采集逻辑不会进入。
- 对采集模块,按“初始化配置 → 绑定已初始化的传感器句柄 → 启动”调用。在线、离线和实时模式应分别配置,避免并发争用同一传感器。见采集概览。
- 对算法测试,先核对输入长度、布局、采样率、工作区与错误码,再对照原始输出。
4. 阅读验证记录¶
| 层次 | 回答的问题 |
|---|---|
| 设计说明 | 算法解决什么问题,主要假设是什么? |
| API 与实现 | 数据怎么组织,谁负责内存,失败如何返回? |
| 测试源码 | 输入与通过条件是什么? |
| 历史输出 | 当时实际打印了什么? |
| 结果解读 | 能支持什么结论,还缺哪些验证? |
FFT 测试提供完整示范。历史记录未写明的设备、固件版本或日期,会明确标为未记录;源码中的日期不作为运行日期。重新验证时记录工程路径、Git 提交、硬件、构建配置、输入与完整串口输出。