本项目是 FasterEdge 框架在 ****PY32F003(Cortex-M0+)****平台上的实现。PY32F003 为 32 位 Cortex-M0+ 内核:24MHz、16KB Flash、2KB RAM、无硬件 EEPROM,无网络、无操作系统,因此按 MCU-C51 的无网络精简思路裁剪能力子集,并保留 寄存器 / GPIO / 芯片信息 三个 MCU 专有模块。
- ✅ keil/(Keil MDK,官方) + platformio_ide/(ARM GCC,PlatformIO) 双版本
- ✅ 与主仓库同名同命令,云边协同对等编程
- ✅ HMAC-SHA256 纯 C 零依赖
- ✅ 配置/密钥持久化到片上 Flash 模拟 EEPROM(参考)
- ✅ platformio_ide 版为 Cortex-M0+ 寄存器级实现(RCC / GPIO / USART1 / SysTick)
Ability(8 个)
| 名称 | 类别 | 命令 |
|---|---|---|
BaseAbility |
基础 | list_data_names / list_ability_names |
RoleAbility |
角色 | describe / set_role / get_role |
TimeAbility |
时间 | sync_manual / sync_system / get_time / configure_run(无 NTP) |
OneKeyAbility |
令牌 | issue_token / verify_token / revoke_all / list_tokens / status / rotate(HMAC-SHA256) |
SerialAbility |
串口 | open / close / write / read / is_open / set_config / get_config / list_ports |
ModbusAbility |
Modbus | set_unit_id / get_unit_id / read_holding / read_input / read_coils / read_discrete / write_holding / write_coil(RTU 从站) |
RegAbility |
寄存器(专有) | read <addr> / write <addr>,<value> / bit_set <addr>,<bit> / bit_clear <addr>,<bit> / info |
GpioAbility |
GPIO(专有) | mode <pin>,<input|output|input_pullup> / write <pin>,<0|1> / read <pin> / info |
Data(3 个)
| 名称 | 功能 | 命令 |
|---|---|---|
BaseData |
框架元信息 | logo / info |
ConfigData |
KV 配置(EEPROM 持久化) | get / set / delete / list / snapshot |
ChipData |
芯片信息(专有) | info |
| 能力 | 排除原因 |
|---|---|
| MQTTAbility / NetMapData | PY32F003 无网络协议栈 |
| EdgeRoleAbility | 依赖网络心跳上报 |
| ConfigFileAbility | 与 ConfigData 重复,且无文件系统概念 |
| KeyringData | 与 OneKeyAbility 合并(同一 EEPROM 密钥存储) |
| TimeAbility.sync_ntp | 无网络无法 SNTP 校时 |
MCU-PY32F003/
├── keil/ # Keil MDK 版(uVision 工程)
│ ├── MDK-ARM/ # FasterEdge-MCU-PY32F003.uvproj(ARM Compiler)
│ ├── Core/ # fe.h / fe.c / fe_hmac_sha256.c
│ ├── Inc/ # fe_ability.h / fe_data.h / fe_port.h
│ ├── Ability/ # ability_*.c(8 个)
│ ├── Data/ # data_*.c(3 个)
│ └── User/ # main.c / register.c / fe_port.c(移植层)
└── platformio_ide/ # VS Code + PlatformIO IDE 工程(py32 平台 + ARM GCC)
├── platformio.ini # board = py32f003f4p6
├── include/ # fe.h / fe_ability.h / fe_data.h / fe_port.h / fe_hmac_sha256.h
└── src/ # 裸机 C + 寄存器级 fe_port(Cortex-M0+)
两套均为裸机 C 工具链:
keil/(Keil MDK 官方编译器)与platformio_ide/(ARM GCC,VS Code 插件),能力与命令完全一致。
- keil 版:用 Keil MDK 打开
keil/MDK-ARM/FasterEdge-MCU-PY32F003.uvproj(或按芯片新建 ARM 工程),编译后 SWD 烧录 - platformio_ide 版:VS Code 安装 PlatformIO IDE 插件,打开
platformio_ide/,Build / Upload / Serial Monitor - 在
fe_port.c中按你的 PY32 型号调整 UART/GPIO 引脚(已附寄存器参考)
串口命令示例:
help
ability_BaseAbility list_ability_names
ability_RoleAbility set_role edge
ability_TimeAbility sync_manual 1700000000
ability_OneKeyAbility issue_token sensor01
ability_ModbusAbility set_unit_id 3
ability_ModbusAbility write_holding 0,42
ability_ModbusAbility read_holding 0,4
ability_SerialAbility set_config 0,9600
ability_SerialAbility write hello
data_ConfigData set wifi.ssid=MyNet
data_ConfigData get wifi.ssid
data_BaseData info
| 差异点 | ESP32/ESP8266 | PY32F003 |
|---|---|---|
| 架构 | Xtensa 32 位 | ARM Cortex-M0+ 32 位 |
| RAM / Flash | KB~MB | 2KB SRAM / 16KB Flash |
| 存储 | NVS / Flash | 片上 Flash 模拟 EEPROM(参考) |
| 网络 | 有 | 无(能力子集剔除网络项) |
| 寄存器 | 32 位内存映射 | 32 位外设空间 0x40000000+(RegAbility 宽度 32) |
platformio_ide/ 为 ARM GCC 版 工程(PlatformIO py32 平台),fe_port.c 为 Cortex-M0+ 寄存器级参考实现:
| 功能 | 实现 |
|---|---|
| UART | USART1(RCC + BRR + CTRL/STATR/DATAR) |
| EEPROM | Flash 模拟参考(TODO 已留接口) |
| 时间 | SysTick(1ms) |
| GPIO | GPIOA/B/C(MODER/IDR/ODR/BSRR 风格寄存器) |
| 随机数 | LCG |
cd platformio_ide
pio run # 编译
pio run -t upload # 烧录
pio device monitor # 串口监视(115200)除主仓库对应能力外,本仓库提供 3 个 MCU 专有 模块(寄存器 / GPIO / 芯片信息)。PY32F003 的寄存器为 32 位 Cortex-M0+ 外设空间(0x40000000+),GPIO 为引脚号 0-19:
| 模块 | 类型 | 命令 | 说明 |
|---|---|---|---|
| RegAbility | Ability | read <addr> / write <addr>,<value> / bit_set <addr>,<bit> / bit_clear <addr>,<bit> / info |
ARM 内存映射寄存器(32 位,volatile 指针) |
| GpioAbility | Ability | mode <pin>,<input|output|input_pullup> / write <pin>,<0|1> / read <pin> / info |
GPIO 引脚(pin 0-19,寄存器级) |
| ChipData | Data | info |
PY32F003 型号 / RAM / Flash / 频率 |
示例:
ability_RegAbility read 0x40013800 # 读 USART1 STATR
ability_RegAbility write 0x4001380C,0x0C # 写 USART1 CTRL1
ability_GpioAbility mode 10,output
ability_GpioAbility write 10,1
ability_GpioAbility read 2
data_ChipData info
⚠️ 寄存器操作直接访问硬件,误写可能导致系统异常,仅供调试/底层驱动使用。
- 命令名与主仓库完全一致,与 MCU-C51 / MCU-ESP32 实现同构
Atom模型:单例全局 Atom,data_/ability_前缀路由- 令牌用 HMAC-SHA256(纯 C,无 mbedTLS),密钥 EEPROM 持久化
- Modbus 寄存器表存 RAM,RTU 帧服务入口
modbus_slave_service()已预留
- FasterEdge MCU - ESP32:双核、WiFi/BLE、更多外设
- FasterEdge MCU - ESP8266:WiFi、低功耗
- FasterEdge MCU - C51:8 位 8051,最精简
- FasterEdge MCU - Arduino Uno R3:8 位 AVR(ATmega328P)
- FasterEdge MCU - Arduino Uno R4:32 位 Cortex-M4F(RA4M1)
- FasterEdge:框架主仓库