21) Serial Wire Viewer(SWV)配置窗口(供参考)
跟踪功能的配置主要是在图中所示的 Trace 选项卡中完成的。μVision 中没有全局的 SWV 选项,对每个工程、以及工程中的每个 target 设置,都需要单独配置 SWV,配置信息存储在工程中。这个窗口有两种方法进入:
A. 在编辑模式中: 选择 Target Options Target Options 或者按 ALT+F7,并选择 Debug 选项卡。点击窗口右侧的 Settings,再选择 Trace 选项卡。启动 μVision 时默认是编辑模式。
B. 在 Debug 模式中: 选择菜单中的 Debug/Debug Settings,再选择 Trace 选项卡。Debug 模式用 Debug 按钮进入。
SWV 配置窗口
1) Core Clock: SWV 的 CPU 时钟频率。在工程的启动代码或者 Abstract.txt 中可以找到 CPU 时钟频率,通常叫 SYSCLK 或主时钟频率。除非使用的是 ULINK pro 调试器,否则这个选项必须填写正确。
2) Trace Enable: 使能 SWV 和 ITM。这个选项只能在编辑模式修改。不会影响 Watch 和 Memory 窗口的更新。
3) Trace Port: 使用 ST-Link 时,这个选项是不可更改的。
4) Timestamps: 使能时间戳,选择预分频器。预分频器默认是1。
5) PC Sampling: 对 PC 指针的采样:
a. Prescaler: 1024*16(默认值)指的是每 16,384 个 PC 指针会显示 1 个,其他的不会采集。
b. Periodic: 使能 PC 指针采样。
c. On Data R/W Sample: 显示造成逻辑分析仪中所列的变量的读写对应的指令地址。这个功能与数据跟踪有关,但与 PC 采样无关。
6) ITM Stimulus Ports: 使能用于在 μVision 中输出数据的类似 printf 的语句的 32 位寄存器。端口 31(a)用于 Keil RTX Viewer,实时内核识别(awareness)窗口;端口 0(b)用于 Debug (printf) Viewer;其他位在 μVision 中没有使用。
Enable: 显示 32 位十六进制数,代表哪些端口是使能的。
Privilege: Privilege 用于 RTOS 指定哪些 ITM 端口可以在用户程序中使用。
7) Trace Events: 使能各种 CPU 计数器。除了 EXCTRC 之外,其他的都是 8 位计数器。每个计数器是累积的,每 256 周期产生计数器溢出事件。Counter 窗口显示计数器的值,Instruction Trace 窗口显示计数器溢出并重新计数产生的事件。
a. CPI: 从第一个指令到每个指令所用的额外周期数,其中包括指令取指拖延(instruction fetch stall)。
b. EXC: CPU 的异常(exception)开销的累积周期数,包括入栈和返回操作,不包括花费在异常处理程序的时间。
c. Sleep: CPU 在睡眠模式的累积周期数,使用 FCLK 时钟。
d. LSU: 从第一个周期开始,花费在 load/store 上的累积周期数。
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.)
f. EXCTRC: 异常跟踪。这一项与上面其他项有所不同,不是一个计数器。这个选项使能 Trace Exceptions 窗口中异常的显示。这个功能通常在调试中使用,用来显示异常。
提示: 计数器在单步执行是也会累加,这提供了很有用的信息。计数器是映射在存储器上的,可以在程序中读取。 |