一,前言
因为看到了threadx的traceX,我特别喜欢这样的图像图像工具来分析os。所以我思考了下它的原理,就联想到之前玩过了segger RTT移植到单片机后,通过segger logger等上位机就可以交互数据。这样的上下位机一体系统正是我感兴趣的,所以我想自己做一个。调研了下RTT是用环形队列的上下行和segger上位机交互的,网上也有自制RTT上位机(包括c#,python,QT等等),主要用了jlinkarm.dll库。那么我现在一直用trace32,能否找到一个库来做上位机呢?
二,调研
一切从help开始,之前我就看到2021年的trace32工具就支持python了,但是控制原理没了解过,所以只要找对help资料,这些内容就瞬间解决了。搜索方法就是直接在安装包中搜索py后缀,立刻就定位到demo和help资料啦~
说明python控制trace32是可行的,而原理是利用以太网主机服务器交互,不是直接给trace32底层的lib库。这样的控制思路就和我之前用gdb和gdb server调试linux驱动一样(就是把一行函数和参数传给对方,对方获取后,就调用函数,然后把返回值再传回)。
三,验证试验
所有的理解都需要进行闭环验证,否则理解错误,方向就错误了。
a. 不安装包,仅调用dll方式控制trace32是可行的,但是读写数组比较麻烦,而且这样的api不友好。
Trace32的配置:User Port要选yes
在调试界面启动后,运行我修改后的t32api.py
Python输出值正确
b. 使用trace32提供的python lib库安装包后,api就变的很简单。读写内存地址或变量也容易,可读性高。
一条命令就连接上了。
help中的基本函数也都试用过,与预期相符。
四,小结
好玩,从jlink的rtos工具链联想到自制trace32的扩展自动化工具链,感觉我又发现了一片蓝海,掌握的方法越多,到用的时候可选的路也越宽。最重要的是又找到了创造方面工具的灵感咯~
网友评论