cbb
|
8d414ae3fb
|
docs: 定名 dcu-ecat-master, 登记 _probe_scan.py
目录名 ecat 过泛(tools/ 下另有 ESP32), 按同级项目 DCU_APP / ESP32_COMM /
spi_link 的风格定名 dcu-ecat-master: dcu 限定归属, ecat-master 表明是
EtherCAT 主站侧工具(区别于从站固件)。远端托管用小写连字符形式。
名字写入 README 标题(对外可见)与 .git/description(本地元数据)。
同时把 _probe_scan.py(扫描响应帧头在 SM1 RAM 的确切偏移)登记进脚本表,
补齐 _probe_wedge2 / _probe_stuck 两行说明。
|
2026-09-03 02:41:19 +08:00 |
|
cbb
|
fc9e8f34e5
|
diag: 加邮箱楔死探针三件套, 移除 _repro_hang.py
_probe_wedge.py 逐环节定位死点: A 写 SM0 的 WKC → B 0x220 bit0 是否置位
→ C SSC 是否清事件并置 SM1 就绪 → D SM1 是否滞留旧响应,
用于区分 ESC 硬件楔死与 SSC 软件死循环。
_probe_wedge2.py 按真实邮箱协议走: 查写邮箱空 → 写满 256B → 验事件/响应。
_probe_stuck.py 验"SM1 响应滞留 → 邮箱死锁"假说: 复现失败 → 手动读走 SM1
清 bit3 → 再读是否恢复。若恢复则主站侧可自愈。
_repro_hang.py 的闪退成因已定位(见 a1ec486, config_map 撞楔死邮箱), 且规避
已内建到 op/start 入口, 该复现脚本失去用途, 删除。
README 同步脚本清单, 并记下 SM = 0x0800 + 8n 这个易错点。
.gitignore 排除 _analyze_log.py(硬编码已失效的临时日志路径)。
|
2026-09-03 02:36:07 +08:00 |
|
cbb
|
a1ec486c74
|
fix(server): 修模块级变量粘连, op/start 入口预清理重枚举
1) g_op_active = Falseg_httpd = None 这行把 None 赋给了 g_op_active 和
笔误变量 Falseg_httpd, 导致 g_httpd 在模块级从未定义, 第 744 行
if g_httpd is not None 在服务启动前命中即 NameError。拆成两行。
语法合法故初次提交未拦住。
2) _require_op_ready 入口无条件预清理(回 INIT + config_init 重枚举):
同一连接反复停止/启动而不重枚举时从站邮箱通路逐轮退化, 第 4 轮
config_map() 内 SOEM CoE 分段读的无边界 memcpy 吃到楔死邮箱异常帧
触发 0xC0000005 闪退。置于入口使所有调用方全覆盖, 单从站成本 ~100ms。
op_start 的重试分支因此简化为直接重跑序列。
3) config_map 失败时附带邮箱 SM 寄存器现场, 便于对照 GD32 串口日志。
地址按 SM = 0x0800 + 8n 修正为 SM0=0x0800 / SM1=0x0808;
原写的 0x0810/0x0818 实为 SM2/SM3(过程数据), 抓的现场会误导判断。
|
2026-09-03 02:35:24 +08:00 |
|
cbb
|
d594b8fd94
|
init: DCU LAN9252 EtherCAT 主站工具集
现有工具纳入版本管理:
- ecat_tool.py: 一体化命令行主站(status/flash/eeprom/sdo/send)
- ecat_server.py + ecat.html/css: 网页/桌面控制台(端口 8090)
- ecat_scan.py / ecat_esc_regs.py / ecat_sniff.py: bring-up 扫描、
网络侧 ESC 寄存器诊断、裸帧抓包对照
- ecat_flash_eeprom.py: 经网线烧写 SII 镜像 + 逐字校验
- *.bat / *.vbs 启动入口
新增 .gitignore(排除 venv/ 与 __pycache__)、.gitattributes(不改写换行符)、
requirements.txt(锁定 pysoem 1.1.13 等依赖)、README.md。
|
2026-09-03 01:56:29 +08:00 |
|