STM32F4 使用 Keil MDK 逻辑分析仪参与硬件调试的教程

2019-12-10 18:17发布

这是一篇 STM32F4 处理器使用 Keil MDK 中的逻辑分析仪参与硬件调试的实验教程,节选自 ARM Keil Application Note 230 的前半部分。
这个功能其实一直就有,但感觉能搜到的资料比较少(倒是做软件仿真的资料比较多),所以在这里分享一下。

原文前半部分还包括断点、观察点等常规调试实验,完整翻译在[这个链接里]缓慢更新,排版可能比这个帖子好一点。
原文废话特多,我翻译着都觉得累。

原文使用的是 STM32F4-Discovery 开发板,我这里都改用 NUCLEO-F401RE 实现了。Discovery 板卡在新版本的 Pack Installer 中已没有 Blinky 例程支持,可以用 CMSIS-RTOS Blinky 来做,变量定义的位置等会有变化。
这篇教程针对 MDK 5.10 及更新版本。MDK 4 有另一篇教程对应。

教程使用C:MDK做为例程目录,并以默认 MDK 安装路径为例:C:Keil_v5。
这个实验可以用评估版本(MDK-Lite)来完成,不需要购买授权。
不需要额外的调试器,只需准备 NUCLEO-F401RE 开发板、USB 线,以及在电脑上安装 MDK 5.10+ 就可以了。

6) μVision Software Pack 的下载和安装步骤

1) 启动 μVision 并打开 Pack Installer

1. 将电脑连接到外网上,下载 Software Pack 需要外网连接。

2. 点击桌面上的图标启动 μVision。

3. 点击工具栏上的按钮 LAWaveform.png (15.49 KB, 下载次数: 0) 下载附件 2015-12-18 15:47 上传

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
74条回答
TBG1
1楼-- · 2019-12-14 04:38
K.O.Carnivist 发表于 2015-12-21 23:26
更新第21章:

21) Serial Wire Viewer(SWV)配置窗口(供参考)

e. Fold: Folded 指令的累积数量。这个结果来自那些已经从流水线上移除(flush)了无用指令,从而导致零执行周期的预测分支指令。(译者注:我架构学的烂,这句不太会翻:These results from a predicted branch instruction where usused instructions are removed (flushed) from the pipeline giving a zero cycle execution time.)

处理器为了加快处理速度,一般采用流水线(pipeline)技术。以CM0/3为例,就采用三级流水线:取指令,译码,执行。同时,由于存储器慢, 所以就必须采用CACHE技术,就是把要执行的指令,预先存储到速度和处理器一样快的SRAM中去。

但是程序中,有很多跳转指令。如果跳转指令跳出CACHE的范围,那么CACHE内所有存储指令就要作废,处理器需要从慢速内存中取指令,译码,然后执行, 非常耗费时间。这大大拖慢了程序执行速度。解决这个问题的技术,就是分支预测(branch prediction)技术, 说白了,就是遇见了跳转指令,就接着把跳转指令跳转后的指令都取进CACHE中去。

但是呢,大部分跳转指令,是条件跳转指令,意味着它有两个分支,指令预取会把这两个分支的指令都取进来,但是总有一个分支是用不到的,是要舍弃的。所以这么说:These results from a predicted branch instruction where usused instructions are removed (flushed) from the pipeline giving a zero cycle execution time
TBG1
2楼-- · 2019-12-14 06:12
myxiaonia 发表于 2015-12-28 07:51
Trace Events 这个是st-link这种也能用的吗  还是说需要带trace的调试器

刚看了一下,STLINK2可以TRACE,但是速度只有2M。
myxiaonia
3楼-- · 2019-12-14 07:15
TBG1 发表于 2015-12-28 10:06
刚看了一下,STLINK2可以TRACE,但是速度只有2M。

那jlink不是更快了吧
TBG1
4楼-- · 2019-12-14 09:51
 精彩回答 2  元偷偷看……
K.O.Carnivist
5楼-- · 2019-12-14 11:03
myxiaonia 发表于 2015-12-29 07:39
那jlink不是更快了吧

快不少。
比如 NUCLEO 板载的 ST-Link,在串口有数据的情况下,逻辑分析仪有时会不连续。用JLINK的时候逻辑分析仪一直是很好的。
K.O.Carnivist
6楼-- · 2019-12-14 12:22
TBG1 发表于 2015-12-28 10:05
e. Fold: Folded 指令的累积数量。这个结果来自那些已经从流水线上移除(flush)了无用指令,从而导致零 ...

感谢指点!

一周热门 更多>