CatST Software:编译器、仿真器与上位机工具链¶
本文档定义实现 CatST 所需的上位机工具链。整机上位机可以包含更多设备管理功能,但 CatST 独立集合至少需要本文定义的编辑、检查、仿真、生成、构建、下载和监控能力。现场工作流不使用 J-Link,所有维护动作通过串口维护协议完成。
1. 工具链目标¶
CatST 工具链负责:
推荐技术栈:
2. 工程结构¶
推荐工程目录:
ProjectName/
├── project.json
├── logic.catst
├── target.profile.json
├── generated/
│ ├── UserLogic.c
│ ├── UserLogic.h
│ └── UserConfig.h
├── build/
│ ├── app.elf
│ ├── app.bin
│ ├── app.map
│ └── app.crc
└── logs/
project.json 至少保存:
target.profile.json 保存剪裁后的资源范围,编译器和补全都必须使用该文件。
3. 编译流程¶
CatST 文本
↓
Lexer
↓
Parser
↓
AST
↓
语义检查
↓
安全检查
↓
资源预算检查
↓
AST 仿真,可选
↓
C 代码生成
↓
ARM GCC 编译
↓
app.bin + CRC
每一步都必须产生结构化诊断,UI 只负责展示,不应在 UI 中重复实现规则。
4. 编辑器与语言服务¶
编辑器应支持:
- 文本编辑。
- 语法高亮。
- 行号。
- 关键字补全。
- 变量和别名补全。
- 内置函数和功能块补全。
- 错误波浪线。
- 错误列表跳转。
- 悬停说明。
- 快速修复建议。
补全来源:
禁止在 UI 中硬编码变量区上限。
5. 诊断模型¶
诊断字段:
示例:
E2004 logic.catst:3:5 赋值应使用 :=,不能使用 =
E3002 logic.catst:8:1 Y12 不存在,当前 Profile 仅支持 Y0~Y7
E4001 logic.catst:10:1 不支持 WHILE,无界循环会导致扫描周期不可控
W5003 logic.catst:20:1 资源预算接近 F103_LITE 上限
6. 仿真器¶
第一版采用 AST 解释仿真:
仿真器必须支持:
- 设置 X/M/D 初值。
- 设置扫描周期和模拟时间。
- 单步扫描。
- 连续扫描。
- 查看 Y/R/M/D/T/C/S/E。
- 查看定时器 ET 和计数器 CV。
- 导出扫描轨迹。
- 与生成 C 的 PC 版 Runtime 结果对比。
仿真器的 TON/TOF/TP、CTU/CTD、R_TRIG/F_TRIG 语义必须与固件 Runtime 共用测试用例。
7. C 代码生成¶
生成规则:
- 只生成
UserLogic_Init()和UserLogic_Scan()相关文件。 - 不生成任意 include。
- 不生成用户 C 片段。
- 不生成直接 HAL/GPIO/UART/Flash 访问。
- 不生成动态内存。
- 整数运算使用安全 helper。
- 输出文件头部包含来源、版本、Profile 和自动生成警告。
建议头部:
/* Auto generated by CatST toolchain. Do not edit manually. */
/* Source: logic.catst */
/* Profile: F407_STANDARD */
8. ARM GCC 构建¶
构建流程:
生成 UserLogic.c
↓
复制到固件工程 User 区
↓
调用构建脚本
↓
生成 app.elf
↓
生成 app.bin
↓
解析 app.map
↓
检查 Flash/RAM
↓
计算 CRC32
↓
生成下载包
必须展示:
9. 下载与在线监控¶
下载器流程:
下载器必须明确区分:
| 阶段 | 工具 |
|---|---|
| 空白芯片 Bootloader 固化 | 生产烧录工具、SWD 或 STM32 ROM Bootloader |
| 现场 CatST 程序迭代 | CatST Studio 串口下载 |
| Bootloader 恢复下载 | CatST Studio 或维护工具串口连接 |
现场界面不暴露 J-Link/SWD 作为常规操作。
在线监控内容:
在线写变量必须遵守 MemoryMap.md 权限规则。
10. Profile 与剪裁¶
工具链必须允许不同目标配置声明:
剪裁后:
- 编辑器补全只显示可用资源。
- 编译器对不可用资源报错。
- 仿真器按同一 Profile 初始化。
- 构建器按同一 Profile 检查 Flash/RAM。