打印
[其他ST产品]

STM32 使用 Keil MDK 中的软件逻辑分析仪参与硬件调试

[复制链接]
1740|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大鹏2365|  楼主 | 2022-3-31 20:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这篇**翻译自 ARM Keil Application Note 230 (1.2版)的前半部分。
其中包括 STM32F4 处理器在 Keil MDK 中进行断点调试、变量实时观察,及逻辑分析仪参与硬件调试的实验。
原文使用的是 STM32F4-Discovery 开发板,我这里都改用 NUCLEO-F401RE 实现了。Discovery 板卡在新版本的 Pack Installer 中已没有 Blinky 例程支持,可以用 CMSIS-RTOS Blinky 来做,变量定义的位置等会有变化。

使用特权

评论回复
沙发
大鹏2365|  楼主 | 2022-3-31 20:08 | 只看该作者
1) Keil 评估软件:MDK 4.7x 和 MDK 5
MDK 5 以 Software Pack 的形式分发特定于处理器的软件、例程和中间件(middleware)。安装 MDK 5 之后,需要从网络上下载这些 Pack。这些 Pack 也可以手动导入。

MDK 4.7x 目前也是可用的。这个版本的 MDK 会包含程序运行所需要的所有文件,不使用 MDK 5 的 Software Pack。这篇文档的 MDK 4 版本可以在这个链接找到:。

Keil 网站上有 MDK 5 的 Legacy 支持软件,安装之后可以在 MDK 5 中使用 MDK 4 的工程,而不需要任何的 Software Pack。

我们建议使用 MDK 5.10 Software Pack,本文会持续跟进新的版本(译者注:并没有>_<,我在用5.17,如有区别会注明)。

Keil 针对各种 STM32 处理器有许多类似的实验手册,比如 CAN 的使用。详见/st。

这篇文档针对 MDK 5.10 及更新版本。

使用特权

评论回复
板凳
大鹏2365|  楼主 | 2022-3-31 20:09 | 只看该作者
2) 下载和安装 Keil 软件
从 Keil 网站上下载 MDK 5.10 或更新的版本:/mdk5/install Download MDK-Core

将 MDK 安装到默认路径。安装到其他路径也是可以的,本教程会以默认路径为例:
C:\Keil_v5


本教程使用
C:\MDK\
做为例程目录,建议同样使用这个默认路径。

如果 MDK 安装在其他路径,实验中需要做对应的路径修改。

(译者注:原文没有5,P.S. 上面这一段真贫)

Keil 网站上可以找到 DSP5 例程。

这个实验可以用评估版本(MDK-Lite)来完成,不需要购买授权。

不需要额外的调试器,只需准备 NUCLEO-F401RE 开发板、USB 线,以及在电脑上安装 MDK 5.10 就可以了(译者注:原文使用的是 STM32F4-Discovery 开发板)。

使用特权

评论回复
地板
大鹏2365|  楼主 | 2022-3-31 20:10 | 只看该作者
3) 板载 ST-Link V2 调试器
这篇教程仅适用于板载的 ST-Link V2 调试器,后文将给出 ST-Link V2 的配置说明,及 ST-Link V2 驱动程序的测试。

使用特权

评论回复
5
大鹏2365|  楼主 | 2022-3-31 20:10 | 只看该作者
4) 例程
MDK 5 Software Pack 里面有 Blinky 和 RTX_Blinky 例程,我们会用到其中的 Blinky。另外在本文最新版的网站上可以找到增强版的 RTX_Blinky5 和 DSP 例程(DSP5):。

使用特权

评论回复
6
大鹏2365|  楼主 | 2022-3-31 20:11 | 只看该作者
5) MDK 5 入门
《Getting Started MDK 5》是一部很有用的手册,可以在 Keil 网站上找到:/mdk5/。

使用特权

评论回复
7
大鹏2365|  楼主 | 2022-3-31 20:12 | 只看该作者
6) μVision Software Pack 的下载和安装步骤
1) 启动 μVision 并打开 Pack Installer
在 MDK 刚安装完成的时候,如果电脑连接到了外网上,μVision 和 Software Pack 会自动启动。其他情况下,需要按照这里的步骤1)和2)来做。

(译者注:由于软件版本和板卡的区别,这一部分和原文略有不同。)

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

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

点击工具栏上的按钮 Pack Installer 按钮 打开 Pack Installer。如果出现 Pack Installer 欢迎界面,阅读之后关闭它。

这里应该出现下面这个窗口。在 Board 选项卡中,选择 NUCLEO-F401RE,右侧 Packs 选项卡中的列表会自动筛选。
Pack Installer

也可以在 Search 栏输入 NUCLEO 进行筛选。

注意:窗口右下角应该显示“ONLINE”。如果显示的是“OFFLINE”,请检查外网连接之后再继续下面的步骤。

如果在 Pack Installer 启动的时候没有连接到外网,列表中将不会显示内容。这时候需要在连接到网络后,点击菜单 Packs/Check for Updates 或者工具栏中的 Check for Updates 刷新一下。

使用特权

评论回复
8
大鹏2365|  楼主 | 2022-3-31 20:12 | 只看该作者
2) 安装 STM32F4 Software Pack
点击 Packs 选项卡,可以看到 ARM::CMSIS Software Pack 是默认安装好的。

选择 Keil::STM32F4xx_DFP 和 Keil::STM32NUCLEO_BSP 并点击 Install,这两个 Software Pack 会下载并安装在默认文件夹
C:\Keil_v5\ARM\Pack\Keil
中。下载估计需要两三分钟的时间。

下载完成后,应显示“Up to date”状态:Up to Date。

使用特权

评论回复
9
大鹏2365|  楼主 | 2022-3-31 20:13 | 只看该作者
3) 安装 Blinky MDK 例程
选择 Examples 选项卡,出现如下窗口:
Examples

选择 Blinky (NUCLEO-F401RE)。

点击 Copy Copy。

Copy Example 窗口如图所示。选择 Use Pack Folder Structure,取消选择 Launch μVision。
Copy Example

输入
C:\MDK
,点击 OK 完成 Blinky 工程的复制。

Blinky 工程已经复制到
C:\MDK\Boards\ST\NUCLEO-F401RE
了。

不需要复制 CMSIS-RTOS Blinky 程序,我们会有一个更有意思的4线程版本。

提示:复制例程时,一开始的默认路径是
C:\Users\< user >\Documents
,这篇教程使用
C:\MDK\
做为默认路径。实际上可以选择任意路径。

关闭 Pack Installer。以后随时可以通过点击图标 Pack Installer 按钮 来打开。

提示:Update 按钮说明 Software Pack 有更新可以下载 Update。

提示:如果找到目录
C:\Keil_v5\ARM\Pack\Keil\STM32NUCLEO_BSP\1.4.0\Boards\ST\NUCLEO-F401RE
,可以发现里面也有一个 Blinky。这个版本是只读的,做为备份用。请使用从 Pack Installer 的 Examples 选项卡复制出来的工程,本教程中存放在
C:\MDK

使用特权

评论回复
10
大鹏2365|  楼主 | 2022-3-31 20:17 | 只看该作者
4) 从 Keil.com 上安装 RTX_Blinky5 和 DSP5 例程
从 上获得例程的 zip 文件。

解压缩到
C:\MDK\Boards\ST\STM32F4-Discovery\
。(译者注:这个程序是对 Discovery 开发板的。)

使用特权

评论回复
11
大鹏2365|  楼主 | 2022-3-31 20:19 | 只看该作者
7) 测试 ST-Link V2 的连接
用 USB 线将 NUCLEO 开发板连接到电脑上。

如果 ST-Link USB 驱动程序安装正确,应该可以听到正常的 USB 设备连接的系统声音。否则需要根据下一章的指示,手动安装驱动程序。

两个红色 LED 应该点亮:LD1 (COM)和 LD3(PWR)。

启动 μVision Keil图标 并选择 Project/Open Project。

选择 Blinky 工程
C:\MDK\Boards\ST\NUCLEO-F401RE\Blinky\Blinky.uvprojx


在这个地方选择 STM32F401 Flash:Project Option。

点击 Target Options Target Options 或者按 ALT+F7,并选择 Debug 选项卡:
Debugger Selection

点击 Settings,会出现窗口。如果显示出了 IDCODE 和 Device Name,说明 ST-Link 工作良好,可以继续下面的教程。点击两次 OK 返回 μVision 主界面。
Target Setup

Serial Number 框里出现一串数字说明 ST-Link 调试器已经连接到了 μVision。

如果 SW Device 框中没有显示,或者显示 error,这个问题在继续本教程之前必须要解决。请参照下一节内容:安装 ST-Link USB 驱动程序。

如果已经显示正常,ST-Link USB 驱动程序安装良好。点击两次 OK 退出 Target Options 窗口并从第9章继续。

提示:在 Port 框中选择 JTAG,然后在选回 SW,可以刷新 SW Device 框的显示。也可以关闭再重新打开这个窗口。

提示:ST-Link V2 和 ST-Link 的主要区别是添加了 Serial Wire Viewer (SWV) 跟踪功能。

使用特权

评论回复
12
大鹏2365|  楼主 | 2022-3-31 20:20 | 只看该作者
8) 安装 ST-Link USB 驱动程序
如果上面的测试没有问题,则不需要进行这一步。

安装 ST-Link USB 驱动程序:(当上面的测试没有通过时)

先断开 NUCLEO 开发板和电脑之间的 USB 连接。

需要手动运行
stlink_winusb_install.bat
来安装 USB 驱动,这个文件存放在
C:\Keil_v5\ARM\STLink\USBDriver
中。找到这个文件并双击来安装驱动程序。

连接 NUCLEO 的 USB,USB 驱动程序应该会以正常的方式安装完毕。

重要提示:ST-Link V2 固件升级程序 ST-LinkUpgrade.exe 存放在
C:\Keil_v5\ARM\STLink
。如果要更新 ST-Link 固件,找到并双击这个程序,操作还是比较简单的,程序会检查并报告当前的固件版本。请注意我们需要使用 V2.J16.S0 或更高的版本来支持 SWV 操作。另外不要使用 V2.J19.S0,这一版本与最新版驱动程序不兼容。
(译者注:V2.J19.S0 不兼容估计是个历史问题,我已经在用 MDK 5.17 和 V2.J24.M11 版本了。)

使用特权

评论回复
13
大鹏2365|  楼主 | 2022-3-31 20:22 | 只看该作者
COM LED LD1 的含义:

LED 红色闪烁:电脑开始 USB 枚举,但还未完成。
LED 红色:电脑和 ST-LINK/V2 之间已经建立连接(枚举结束),但 μVision 还没有连接到 ST-Link (比如 Debug 模式)。
LED 绿色:μVision 以 Debug 模式连接到 ST-Link,上一个通信是成功的。
LED 红色、绿色间隔闪烁:μVision 和目标之间正在交换数据。
LED 熄灭,但当进入 Debug 模式或点击 RUN 时闪烁一下:μVision 的 SWV 跟踪已启动。
LED 熄灭:ST-LINK/V2 与目标 MCU 或 μVision 之间的连接失败,需要重新连接电源以重启开发板。

使用特权

评论回复
14
大鹏2365|  楼主 | 2022-3-31 20:22 | 只看该作者
9) 使用 NUCLEO 开发板运行 Blinky 例程
我们将使用板载 ST-Link V2 调试器连接 Keil MDK 开发平台和真实的目标硬件。

点击桌面图标 Keil图标 启动 μVision,用 USB 线将 NUCLEO 开发板的 CN1 连接到电脑上。

选择 Project/Open Project,打开文件
C:\MDK\Boards\ST\NUCLEO-F401RE\Blinky\Blinky.uvprojx


ST-Link 会默认被选择。第一次运行 μVision 和 NUCLEO 开发板的时候,可能需要安装 USB 驱动程序,详见上面章节。

点击 Rebuild 图标 Rebuild 编译源文件。也可以用旁边的 Build 图标 Build。

点击 Load 图标 Load 对 STM32 的 flash 进行编程。Output 窗口中会显示这个过程。

点击 Debug 图标 Debug 进入 Debug 模式,如果出现 Evaluation Mode 对话框,点击 OK。

使用特权

评论回复
15
大鹏2365|  楼主 | 2022-3-31 20:23 | 只看该作者
注意: 当下载到 flash 时才需要使用 Load 图标,如果选择的是 RAM 运行则不需要。

点击 RUN 图标 RUN。注意:点击 STOP 图标 STOP 可以停止程序运行。

NUCLEO 开发板上的绿色 LED 会开始闪烁。
按下开发板上蓝色的 USER 按键会暂停闪烁。

至此你已经了解如何编译工程、下载到 STM32 处理器的 flash 中、运行并停止程序!

使用特权

评论回复
16
大鹏2365|  楼主 | 2022-3-31 20:24 | 只看该作者

注意: Blinky 程序已经永久的烧写到 flash 中了,开发板可以独立运行这个程序,直到下一次被烧写。

使用特权

评论回复
17
大鹏2365|  楼主 | 2022-3-31 20:27 | 只看该作者
10) 硬件断点
STM32F4 共有六个硬件断点,可以在程序运行过程中随时设置或取消。

在 Blinky 程序运行过程中,打开 Blinky.c 文件,点击 main() 函数中 for 循环里的某一行左侧边缘深灰色区域。

会出现一个红色的圆形标志,程序会停止运行。

请注意断点同时显示在源代码窗口和反汇编窗口,如下图。
断点

不论是反汇编窗口还是源代码窗口,左侧边缘显示深灰色方形的区域表示这些代码行存在汇编指令,可以在这里设置断点。

每次点击 RUN 图标 RUN,程序会运行到下一次遇到断点。

可以尝试点击 Single Step(Step In)Step In 、Step OverStep Over 和 Step OutStep Out 。

使用特权

评论回复
18
大鹏2365|  楼主 | 2022-3-31 20:28 | 只看该作者
提示: 如果单步调试(Step In)不工作,点击 Disassembly 窗口使它成为焦点,可能需要点击一行反汇编代码。这样操作表示想要汇编级别的单步运行,而不是 C 语言代码级别。

使用特权

评论回复
19
大鹏2365|  楼主 | 2022-3-31 20:30 | 只看该作者
提示: ARM CoreSight 的断点是 no-skid 的,硬件断点发生在被设置断点的指令执行之前(译者注:有 skid 的断点的意思是,程序停止在断点设置的指令甚至后面几个指令执行之后)。另外 flash 中烧写的指令不会被替代或修改,这的特性对于高效率软件开发有重要意义。

使用特权

评论回复
20
大鹏2365|  楼主 | 2022-3-31 20:31 | 只看该作者
完成这个实验后,再次点击这些断点以删除它们,为后面的实验做准备。

提示: 可以通过点击断点,或者选择 Debug/Breakpoints(或按 Ctrl+B)并选择 Kill All 来删除。

提示: 可以通过选择 Debug/Breakpoints 或按 Ctrl+B 来查看所有断点的设置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

659

帖子

0

粉丝