Trace辅助工具实现代码分析与实时覆盖率统计

1. 简介
jlink 想必大家都用过,相信登录过 segger 官方网站,下载最新的 jlink 驱动程序的时候,都会看到这样的图片:
在兴叹它那离谱的价格的同时,也会好奇这个东西比手里的x版货都有哪些优势和提升。
以上图片是 segger 官方对 j-trace 的定位:
使用基于 segger 领先的 trace 方案 j-trace pro 实现对代码的收集、验证、分析功能。利用 arm cortex 内核的 trace 功能,在无限时长内,实现对所有指令的跟踪,实现对偶然出现的、难以被复现的 bug 追踪记录。
在完整的 system clock 内实时流式传输 trace。
使用在线代码分析功能来精细优化代码。
指令级别的代码覆盖率检测,为满足安全性规约约束的需求。
无限制的 trace 追踪,实现隔离和识别潜在的代码缺陷。
完整的 j-link 调试功能
可以看出它最大的卖点就在 arm trace 的信号流捕捉和分析,实现代码的精确流程跟踪,有了精确的代码跟踪,就可以借助 ozone 工具提供实时分析代码覆盖率、指令回溯、cpu 资源监控等功能。
这么多优点,配合强大的 ozone 调试平台,code coverage 实时统计,一键生成报表,boom。仿佛那最后的 bug 就可以用它来反复蹂躏、踩在脚底。..感动人心!直到看到售价:
price: €1,980 eur
这个价格可以买一台高配的 macbook 了,但对比其他支持trace接口的调试器来说,性价比出众,例如 trace32。
2. 物理连接
如图所示 segger 的 19 pin trace 接口(1.27mm 牛角),在 jtag 基础上增加了 5 条 trace 线(4 条数据线 + 1 条时钟线,双边沿模式(ddr))。
有一点要注意一下,不要把两个接口都接到板子上:
note: never connect trace cable and jtag cable at the same time because this may lead tounstable debug and trace connections.
注意:不要同时使用 trace 连接线和 jtag 连接线,这将导致 debug 和 trace 的不稳定现象。
参考:《um08001: j-link / j-trace user guide》
3. 打钱
既然本篇目主要介绍 j-trace 的入门教程,自然就需要有这么一台设备支持一下了。
三句话,让老板为我花了1w8,终于拿到它:
你要问盒子里有没有跳线帽,这个真没有:
可以看见这个板子使用了 arm cortex a9 + fpga 的 zynq-7010 作为主控,通过 zynq 专有总线与赛普拉斯 cyusb3011 usb3.1 控制器连接,cyusb3011 内部也具备一颗 arm926 200mhz 的控制核心,用于协调 usb3.1 高速传输协议。
周边还有美满的千兆 phy 收发器,芯成的lpddr2 128mbytes 533mhz,用于高速收发和缓冲 trace packet,对于电脑主机来说尽量配备大内存和独立的 usb3.0 接口。
外围就是一些电平转换电路和电源了,都是 ti 的一些常见型号,总的来看 jtag 和 trace port 的逻辑由 fpga 硬件逻辑实现,当作 j-link 可以用 zui 高速调试,下载效果要好很多。
4. 什么是 trace
在上一节我们简单介绍了 j-trace ,至于为什么三句话说服了老板,我们还是要以专业视角看 trace 的引入能够解决哪些实际的问题。
j-trace 的标准包装很“贴心”地赠送了一张 stm32f407 核心板,它用的不是标准 jtag 接口,而是支持 trace 的接口,我们可以像官网那样去连接和测试 trace 功能:
翻看 stm32f407 的 rm(rm0090.pdf) 手册,找到 debug support 章节,可以看见 芯片内部负责 debug 的系统框图:
可以看见我们主要关注且日常见到的一些片上调试模块:
swj-dp: serial wire / jtag debug port
ahp-ap: ahb access port
itm: instrumentation trace macrocell
fpb: flash patch breakpoint
dwt: data watchpoint trigger
tpui: trace port unit interface
etm: embedded trace macrocell
以及文中提及到,stm32f4xx 系列支持的扩展功能:
flexible debug pinout assignment
mcu debug box (support for low-power modes, control over peripheral clocks, etc.)
归纳一下就是:
swj-dp 这个大家都熟悉,不必介绍,其他的也许使用过,但多数情况下我们不会在意它们的存在。
itm 可以支持 swo 输出调试,挖个坑下回填。
很多定位中低端的mcu就直接丢弃掉 trace port 相关电路单元了,加上对外接调试设备的高要求(贵)以至于很多工程师并不知道 arm cortex 上其实还有 jtag/swd 之外的调试端口。
本文重心围绕指令追踪,我们重点来看 etm:
对于etm,需要了解:
etm 的主要任务是帮助开发者重建程序执行序列,cpu 上所有指令的执行都可以被 etm 追踪到。
数据可由 dwt 或者 itm 单元追踪到。
embedded trace macrocell (etm) 提供结合了 arm 的调试和追踪机制,它可以做到在不干扰 cpu 的情况下获取 cpu 的运行状态,一旦捕捉到,便实时通过特定的 trace 端口向外输出。
具备 etm 模块的 mcu 可以实现详尽的指令执行历史记录,这些记录可以作为重现代码流程和执行时间的依据,使用分析软件实现代码分析,借此找到难以复现的bug。最难能可贵的是,它可以帮助我们找到失控的代码的根源所在。
此外,etm还有更多特性有待进一步了解,比如常见的 etb、filter & package formatter 等细节属性,有待进一步啃手册了。
更多有关 etm 资料,请翻阅《embedded trace macrocell architecture specification》 、《arm coresight architecture specification》 、《armv7-m architecture reference manual》
综上,etm 并不是对外输出的最终形式,在 stm32f4xx rm0090.pdf 中有如下结构:
可见 etm 和 itm 生成 cpu 运行的追踪信息后,由 tpiu 模块执行封包,并使用对外已经连接的序列器输出,由这张图片可以得出以下结论:
终于涉及到物理层连接了,自然就会引出物理连接概念:trace signal timing (追踪信号时序)
上一章节我们知道 etm 信息是可以和 cpu 同频的,以达到最佳的指令追踪覆盖效果,对于 cortex-m 架构,arm 有如下定义:
trace 时钟往往是 1/2 的 cpu 时钟,但是 trace data 线路可以是 ddr (双倍速率-亦称上升下降沿)方式通信,通常 data 线有4条,意味着一个 trace 时钟周期可以输出1个字节的 trace 数据。
trace 硬件接入,笔者经验总结:
如今 mcu 主频也在不断递进,为了保持高速的 trace 也必然对线路阻抗与信号输出能力提出了更苛刻的要求。由于是 ddr 方式地获取追踪数据,所以在 layout 上就需要做好等长,为了保证良好的 trace 稳定性,也应当从 mcu io 翻转输出能力和cpu主频两个角度的上限妥协一个较为稳定的时钟速率。
由于是高速 ddr 信号,时序上要尽量满足以下要求:
trace clk 作为时钟基准,如上图所示 trace data 被时钟上升或下降沿一分为二(50%占空比)是最佳的信号效果,如果 trace data 出现了较多的超前或者滞后,也可以在 ozone 中设置延迟补偿,这里不过多介绍了。
5. 总结
trace 能够帮助解决面向过程测试中,以不干扰cpu正常运行为前提,揭示程序运行踪迹,解决最麻烦的bug。
trace 辅助工具可以实现代码分析与实时覆盖率统计,帮助我们以直观运行视角,揭示代码优化方向。
这套工具除了贵没别的不好,ozone 调试功能强大且好用,它是免费的,只需要有 j-link 就行。


射频集成电路设计中的常见问题及方案解析
VR将告别野蛮期进入洗牌 未来或以内容为主导
出售Agilent86117A电模块
关于平衡放大器的噪声系数的问题
计算机通信的特点
Trace辅助工具实现代码分析与实时覆盖率统计
新鸿基联手Fastems加快实现智能制造,树立行业新标杆
指纹识别芯片大热,费恩格尔三款新品独领风骚
比特币在2年前有机会被控制在中国人手里
中国MEMS惯性传感器市场分析
CPCI总线技术在加固计算机的开发平台中的应用
无线LoRa通信是什么,它都有着哪些特性
5G NR占Q1季度整体RAN市场的20-40%,全年前景预期依然看好
三星、京东方等供应商长阳科技科创板上市申请获受理
支持一键畅连通话的华为AI音箱 2e
基于单片机控制的可编程有源滤波器
英媒:揭秘美国华为禁令背后的女操刀手
新能源汽车座舱竞争核心的三个维度
戴什么耳机跑步不易掉落、不易脱落舒适的蓝牙运动耳机推荐
国产手机市场冷清 争做“中国版苹果”