历史上的今天
今天是:2025年01月30日(星期四)
2019年01月30日 | STM32调试DEBUG时,需要知道的知识!
2019-01-30 来源:eefocus
学习STM32开发,肯定少不了DEBUG调试这一步骤。那么,本文带你了解一下这个调试相关的知识。
本文以STM32F1、Cortex-M3为例,其它系列芯片或内核,原理相同或类似。
1概况
在STM32中,有很多调试组件。使用它们可以执行各种调试功能,包括断点、数据观察点、 闪存地址重载以及各种跟踪。
STM32F1使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。
硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。
当STM32F10x微控制器连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作。
2
调试框图
STM32F1和Cortex-M3的调试框图:
提示:Cortex-M3内核内含的硬件调试模块是ARM CoreSight开发工具集的子集。
ARM Cortex-M3内核提供集成的片上调试功能。它由以下部分组成:
SWJ-DP:串行/JTAG调试端口
AHP-AP: AHB访问端口
ITM:执行跟踪单元
FPB:闪存指令断点
DWT:数据触发
TPUI:跟踪单元接口(仅较大封装的芯片支持)
ETM:嵌入式跟踪微单元(在较大的封装上才有支持此功能的引脚),专用于STM32F1的调试特性
灵活的调试引脚分配
MCU调试盒(支持低电源模式,控制外设时钟等)
3
调试接口
STM32支持两种调试接口:
串行接口
JTAG调试接口
STM32的5个普通I/O口可用作SWJ-DP(串行/JTAG调试)接口引脚:
4
SWJ调试端口(serial wire and JTAG)
STM32内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚)。
1.JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。
2. 串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟+数据)接口。
在SWJ-DP接口中, SW-DP接口的2个引脚和JTAG接口的5个引脚中的一些是复用的。
SWJ调试端口:
上面的图显示异步跟踪输出脚(TRACESWO)和TDO是复用的。因此异步跟踪功能只能在SWDP调试接口上实现,不能在JTAG-DP调试接口上实现。
JTAG-DP和SW-DP切换的机制
JTAG调试接口是默认的调试接口。如果调试器想要切换到SW-DP,必须在TMS/TCK上输出一指定的JTAG序列(分别映射到SWDIO和SWCLK),该序列禁止JTAG-DP,并激活SW-DP。该方法可以只通过SWCLK和SWDIO两个引脚来激活SW-DP接口。
指定的序列是:
1. 输出超过50个TCK周期的TMS(SWDIO)= 1信号
2. 输出16个TMS(SWDIO)信号 0111100111100111 (MSB)
3. 输出超过50个TCK周期的TMS(SWDIO)= 1信号
5
JTAG脚上的内部上拉和下拉
保证JTAG的输入引脚不是悬空的非常必要,因为他们直接连接到D触发器控制着调试模式。必须特别注意SWCLK/TCK引脚,因为他们直接连接到一些D触发器的时钟端。
为了避免任何未受控制的I/O电平, STM32在JTAG输入脚上嵌入了内部上拉和下拉。
JINTRST:内部上拉
JTDI:内部上拉
JTMS/SWDIO:内部上拉
TCK/SWCLK:内部下拉
一旦JTAG I/O被用户代码释放, GPIO控制器再次取得控制。这些I/O口的状态将恢复到复位时的状态。
JNTRST:带上拉的输入
JTDI:带上拉的输入
JTMS/SWDIO:带上拉的输入
JICK/SWCLK:带下拉的输入
JTDO:浮动输入
软件可以把这些I/O口作为普通的I/O口使用。
6
利用串行接口并释放不用的调试脚作为普通I/O口
为了利用串行调试接口来释放一些普通I/O口,用户软件必须在复位后设置SWJ_CFG=010,从而释放PA15, PB3和PB4用做普通I/O口。
在调试时,调试器进行以下操作:
在系统复位时,所有SWJ引脚被分配为专用引脚(JTAG-DP + SW-DP)。
在系统复位状态下,调试器发送指定JTAG序列,从JTAG-DP切换到SW-DP。
仍然在系统复位状态下,调试器在复位地址处设置断点
释放复位信号,内核停止在复位地址处。
从这里开始,所有的调试通信将使用SW-DP接口,其他JTAG引脚可以由用户代码改配为普通I/O口。
提示:这个地方就是需要大家配置相关的引脚。
7
参看文献
1.Cortex-M3(r1p1版)技术参考手册(TRM)
2.ARM调试接口V5
3.ARM CoreSight 开发工具集(r1p0版)技术参考手册
说明:本文参考《STM32F1参考手册》和《CM3技术手册》。
史海拾趣
|
诸位,咱当电子工程师也是十余年了,不算有出息,环顾四周,也 没有看见几个有出息的!回顾工程师生涯,感慨万千,愿意讲几句掏 心窝子的话,也算给咱们师弟师妹们提个醒,希望他们比咱们强! [1]好好规划自己的路,不要跟着感觉走!根据个人的 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 Job description: · Responsible for the creation, implementation and debugging of board level tests for Xbox accessories. · The test engineer must also be able to create d ...… 查看全部问答> |
|
TI的CC2560蓝牙解决方案结合运行于MSP430之上的嵌入式蓝牙协议栈 日前,德州仪器(TI)宣布已成功将其第七代蓝牙(Bluetooth)产品CC2560与运行于TI超低功耗MSP430单片机(MCU)之上的嵌入式蓝牙协议栈进行结合,进一步推动便携式设计的无线连接技术的发展。两款开发套件EZ430-RF2560开发工具与PAN1315评估板(EMK)即将针 ...… 查看全部问答> |
|
做到一半就停了,半成品没用的东西,发出来共参考,请不要用于商业用途否则后果自负 http://download.eeworld.net/source/2501306 ******************************************分割线************************************** 友情提示: 小心一 ...… 查看全部问答> |
|
uCOS 中一个任务如何同时等待多个事件? 我目前这么实现,只能等待一个事件: void task_ui(void * pdata) { INT8U err; TRACE((\"task_ui()\\n\")); evt_q_task_ui = OSQCreate(&q_msg_data_ui[0 ...… 查看全部问答> |
|
嵌入式领域较新,目前发展非常快,因此踏进这个行业的难度比较大,嵌入式人才稀缺,身价自然也水涨船高,那么究竟嵌入式软件工程师待遇如何呢?下面就由福州卓跃教育就这个问题为大家做具体介绍。   ...… 查看全部问答> |
|
有51和430基础 初学arm的话 可以从am335x系列入手吗 最近看到了am335x系列的a8芯片 因为价格特别有优势,arm9的价格能买到cortex-a8的性能 所以想问一下是不是可以直接学这块芯片?对于这种新的芯片 没有现成的教程 应该怎么入手呢?附:am335x的用户指南和数据表… 查看全部问答> |
|
MSP430 LaunchPad 控制的RGB LED矩阵 原文地址: http://e2e.ti.com/group/msp430launchpad/m/project/447779.aspx… 查看全部问答> |




