打印
[其他ST产品]

STM32心得:ST-LINK调试原理+软硬件仿真调试方法

[复制链接]
254|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
主要内容:
1) JTAG/SWD调试原理;
2) 软件仿真调试;
3) ST-LINK硬件仿真调试。

1. JTAG/SWD调试原理简析
1.1 STM32F10xxx使用Cortex™-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。当STM32F10x微控制器连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作。 支持两种调试接口:1)串行接口(SWD,2根数据线) ;2)JTAG调试接口(5根数据线)。
2. SWJ调试端口(serial wire and JTAG)
2.1 STM32F10xxx内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚);
2.2 JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟+数据)接口;
2.3 在SWJ-DP接口中,SW-DP接口的2个引脚和JTAG接口的5个引脚中的一些是复用的。



3. SWJ调试端口脚
3.1 STM32F10xxx的5个普通I/O口可用作SWJ-DP接口引脚。这些引脚在所有的封装里都存在。



4. 灵活的SWJ_DP引脚分配


使用特权

评论回复
沙发
两只袜子|  楼主 | 2022-11-21 09:29 | 只看该作者
5. JTAG/SWD接口硬件图


6. 软件仿真调试
6.1 在开始软件仿真前,单击魔术棒,在Target界面,确认芯片型号和晶振频率;



6.2 在Debug界面,选择Use Simulator,勾选Run to main(),同时在最后一行的两组Dialog DLL和Parameter分别输入DARMSTM.DLL,-pSTM32F103ZE和TRAMSTM.DLL,-pSTM32F103ZE;



6.3 先编译下工程,然后单击Start/Stop Debug Session开始仿真(退出仿真也是单击Start/Stop Debug Session)。

使用特权

评论回复
板凳
两只袜子|  楼主 | 2022-11-21 09:30 | 只看该作者
7. 软件仿真调试界面工具栏解读


7.1 复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行;
7.2 执行到断点处(Run):用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点;
7.3 停止运行:此按钮在程序一直执行的时候会变为有效,该按钮可以使程序停止下来,进入到单步调试状态;
7.4 执行进去:用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的;
7.5 执行过去:在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行;
7.6 执行出去:该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置;
7.7 执行到光标处:该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的,断点可以有多个,但是光标所在处只有一个;
7.8 汇编窗口:通过该按钮,就可以查看汇编代码,这对分析程序很有用;
7.9 观看变量/堆栈窗口:该按钮按下,会弹出一个显示变量的窗口,在里面可以查看各种你想要看的变量值;
7.10 内存查看窗口:内存查看窗口,可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况;
7.11 串口打印窗口:该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容;
7.12 逻辑分析窗口:按下该按钮会弹出一个逻辑分析窗口,通过 SETUP 按钮新建一些 IO 口,就可以观察这些 IO 口的电平变化情况,以多种形式显示出来;
7.13 系统查看窗口:按下该按钮,会弹出一个观看各个函数执行时间和所占百分比的窗口,用来分析函数的性能是比较有用的。

8. ST-LINK硬件仿真调试
8.1 硬件连接:ST-LINK仿真器一端连接在开发版上,另一端通过USB数据线连接到电脑上(用于下载程序至开发版);另用一根USB连接线一端连接在开发版串口上,另一端连接在电脑上(用于串口调试数据查看);
8.2 在Debug界面,选择Use ST-LINK Debugger,其他同软件仿真设置一样;



8.3 在MDK软件中,单击Download将程序下载到开发版中,单击Start/Stop Debug Session开始仿真调试;
8.4 打开串口调试助手,单击执行到断点处(若没有设置断点,则程序一直运行),此时可以在串口调试助手上观察到相应数据。

9. 仿真仿真中的逻辑分析模块
9.1 逻辑分析模块只对软件仿真有效,对硬件仿真无效;
9.2 若在程序中定义了一些GPIO引脚,可在逻辑分析窗口中设置,观察该引脚的高低电平,以跑马灯为例,在设置逻辑分析窗口中,新建逻辑分析信号,输入PORTB.5,回车后如下图所示,则可以观察PB5的高低电平运行情况。


10. 菜单栏中的Peripherals模块
10.1 该函数模块下可查看相关寄存器的值,以跑马灯为例,单击Peripherals→General Purpose I/O→GPIOB,选择PB.5,则在仿真单步调试时,可观察GPIOB_ODR的值变化。


使用特权

评论回复
地板
帛灿灿| | 2024-11-12 08:11 | 只看该作者

MinUnit 是一个 用 C 语言编写的极其简单的单元测试框架

使用特权

评论回复
5
Bblythe| | 2024-11-12 09:14 | 只看该作者

功率开关和整流器的交流电流环路包含非常高的PWM开关电源典型的梯形电流波形

使用特权

评论回复
6
周半梅| | 2024-11-12 11:10 | 只看该作者

电源电压处于1.6V到5.5V之间

使用特权

评论回复
7
Pulitzer| | 2024-11-12 12:13 | 只看该作者

无法提供开关电源所需的脉冲电流

使用特权

评论回复
8
童雨竹| | 2024-11-12 14:09 | 只看该作者

单片机的外部都连接有象电池等电源部分

使用特权

评论回复
9
Wordsworth| | 2024-11-12 15:12 | 只看该作者

电源内部都有四个电流环路

使用特权

评论回复
10
Clyde011| | 2024-11-12 16:15 | 只看该作者

作为电路的共同电位参考点

使用特权

评论回复
11
万图| | 2024-11-12 18:11 | 只看该作者

传送直流信号的引线

使用特权

评论回复
12
Uriah| | 2024-11-12 19:14 | 只看该作者

Buck(或降压)变换器功率部分布局

使用特权

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

本版积分规则

2034

主题

7335

帖子

10

粉丝