这是一篇 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 上传
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
刚看了一下,STLINK2可以TRACE,但是速度只有2M。
那jlink不是更快了吧
快不少。
比如 NUCLEO 板载的 ST-Link,在串口有数据的情况下,逻辑分析仪有时会不连续。用JLINK的时候逻辑分析仪一直是很好的。
感谢指点!
一周热门 更多>