OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 44|回复: 0

【分享】折腾了一个通用的调试小工具(F407跑通,可移植到其他MCU)

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-10-26
在线时间
1 小时
发表于 昨天 18:59 | 显示全部楼层 |阅读模式

起因很简单
从事电力电子软件相关工作,相关的物理量、软件中的过程变量变化速度比较快,算法调试也需要经常改参数,也要看看控制性能怎么样,因此对调试工具的要求还比较多。老办法是写QT上位机,或者用VOFA+改下位机打印格式。
写QT:一两天搭界面定协议,换项目又重写,烦。
用VOFA+:得按它格式改下位机代码,固件升级变量多了,格式又得跟着变。
我就想:能不能让上位机“自动认识”下位机有哪些变量? 换项目时,上位机不动,只换个描述文件就行。
于是做了这个叫 Connecting 的小框架,核心思路是“设备自描述”——工程中集成connecting中间库,注册相关驱动,编译后从ELF文件里抽出变量信息,生成一个DCM描述文件,上位机读它就知道所有变量类型、地址,然后就可以自助定义界面,根据需要采集状态和波形。
用探索者F407跑通了一个Demo
手头正好有正点原子探索者F407,就拿它做了第一个裸机示例。工程在仓库的 demos/demo-stm32f407-alientek-discovery-baremetal 下。
跑通流程很简单:

  • 把中间件(middleware)加到工程里,初始化几行代码就行。
  • 编译,生成ELF文件。
  • 用配套的Python工具从ELF里提取变量信息,生成一个 .dcm 文件。
  • 打开PC上位机,导入 .dcm,所有变量自动列出来,勾选想看的就能画波形。
固件升级或新增变量怎么办? 重新编译 → 重新提取DCM → 上位机重新导入。上位机代码完全不用动,也不用对着地址表一个个改。
这个框架并不绑定F407,移植到其他MCU很简单
虽然Demo用的是F407,但中间件的设计跟MCU型号无关,它只依赖最底层的串口或UDP发送函数。
只要你用的MCU能跑C语言、有串口或网络,理论上都能用:

  • STM32全系列(F1/F4/H7等)
  • GD32、APM32等国产M3/M4
  • ESP32(乐鑫)
  • TI C2000(DSP)
  • 甚至其他ARM或RISC-V平台
移植要做什么? 只需要实现几个底层回调函数(比如发送一个字节、发送一个包),中间件自身不关心硬件细节。仓库里已经准备了STM32的参考移植,后续还会加更多。
另外,DCM提取工具支持 ELF/ MAP / DWARF 等多种调试信息格式,不需要为每个平台单独写解析器。
目前的状态和不足
项目还在持续折腾中,肯定有不少坑:

  • Python提取工具依赖本地环境,后续考虑做成独立exe。
  • 上位机功能还算基础,高级图表和数据分析还在加。
  • 文档写得比较糙,移植说明正在补。
但核心链路已经通了:F407上跑通了,C2000上也验证了基本功能,说明设计是跨平台的。
发帖目的
不是推销,是想看看大家有没有类似的痛点,或者有没有更好的思路。我自己也是边用边改,欢迎大伙儿试用、吐槽、提Issue。
如果你手头有其他板子,想移植试试,可以看仓库里的 docs/porting.md(正在完善),也可以直接在这帖子下问我,我尽量解答。
仓库地址
F407 demo路径:demos/demo-stm32f407-alientek-discovery-baremetal

已经上传Hex 和DCM   ,如果您手上有相关板卡,5分钟即可体验“想看什么就看什么”的酣畅淋漓。
最后
做这个的初衷很简单——省掉重复写上位机的时间,把精力留在调算法上。如果你也讨厌每次改个变量就要同步改上位机代码,或许这个思路值得一试。
欢迎拍砖,欢迎PR。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-9-9 15:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表