工具箱¶
TinyToolbox — 边缘设备的平台适配与工具库
TinyToolbox 是 Tiny* 生态的基础层,提供平台适配、硬件抽象和常用工具。目前以 ESP32 为目标,计划支持 STM32。
架构速览¶
-
TIME 时间管理
tiny_time· 运行时间、SNTP 对时、日期时间
tiny_get_running_time()· 自开机微秒级计时
sync_time_with_timezone()· 互联网时间同步(信号量版)
tiny_get_current_datetime()· 可读日期时间
tiny_ntp_set_sync_hook()· NTP 钩子(供 FTSP 集成)
tiny_format_*()· Unix 转换 & 时间格式化
NTP 状态追踪 ·TinyNtpSync_t -
平台适配层
ESP-IDF 集成层
FreeRTOS · esptimer · esplog · 堆管理
自定义驱动桥接 (node_rtc 等)
node_config.h· 节点身份 & WSN 角色 (GATEWAY/LEAFNODE) -
FTSP — WSN 时间同步(通过 tiny_measurement)
基于 ESP-NOW 的泛洪时间同步协议
网关:周期信标广播 + NTP 锚点
叶子节点:线性回归时钟偏差校正
同步可视化:RGB LED 状态灯 (WHITE → GREEN → MARQUEE)
微秒级精度 · 漂移补偿 -
命令解析(计划中)
MQTT 命令解析框架
统一命令分发
定时 & 延时任务触发
快速开始¶
#include "tiny_toolbox.h"
// 获取自开机运行时间(微秒)
TinyTimeMark_t t0 = tiny_get_running_time();
// SNTP 对时(WiFi 连接后调用一次即可)
sync_time_with_timezone("CST-8");
// 获取当前日期时间
TinyDateTime_t now = tiny_get_current_datetime(true);
printf("当前时间: %04d-%02d-%02d %02d:%02d:%02d\n",
now.year, now.month, now.day,
now.hour, now.minute, now.second);
依赖链¶
ESP-IDF (FreeRTOS, esp_timer, esp_log) ──► tiny_toolbox
│
┌─────────┼─────────┐
│ │
平台适配层 工具模块
(ESP-IDF 桥接) (TIME, ...)
│
自定义驱动
(node_rtc, ...)
- 不依赖其他 Tiny* 模块 — toolbox 是最底层
- 平台相关 — 移植到 STM32 等平台需要修改适配层
- 所有上层 Tiny* 模块 (tinymath, tinydsp, tiny_ai) 都依赖 toolbox 提供平台访问能力
代码结构¶
平台移植说明¶
目前以 ESP32 为主
仅在 ESP32 上开发和测试。移植到 STM32 等平台需修改适配层(FreeRTOS → CMSIS-RTOS、esp_timer → HAL timer 等)。
子模块模式
各子模块可独立引入。tiny_toolbox.h 充当目录集成所有子模块——tiny_toolbox.c 是形式上的源文件,无具体功能。