STM32调试DEBUG时,需要知道的知识!

发布者:cannon928最新更新时间:2019-01-30 来源: eefocus关键字:STM32  调试DEBUG 手机看文章 扫描二维码
随时随地手机看文章

学习STM32开发,肯定少不了DEBUG调试这一步骤。那么,本文带你了解一下这个调试相关的知识。


本文以STM32F1、Cortex-M3为例,其它系列芯片或内核,原理相同或类似。


1概况

在STM32中,有很多调试组件。使用它们可以执行各种调试功能,包括断点、数据观察点、 闪存地址重载以及各种跟踪。


STM32F1使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。


硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。


当STM32F10x微控制器连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作。


2

调试框图

STM32F1和Cortex-M3的调试框图:

640?wx_fmt=png


提示: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调试)接口引脚:

640?wx_fmt=png


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调试端口:

640?wx_fmt=png

上面的图显示异步跟踪输出脚(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技术手册》。



关键字:STM32  调试DEBUG 引用地址:STM32调试DEBUG时,需要知道的知识!

上一篇:在RAM中调试STM32程序的配置方法
下一篇:关于STM32F4 USART6 1200波特率乱码问题

推荐阅读最新更新时间:2024-03-16 16:23

基于stm32的usb iap程序升级步骤
usb自动更新程序IAP(in application programming)DFU(develepment firemeware upgrate).整个芯片有512k的片内flash,用户程序下载在里面运行,flash的地址是0x8000000,大小为0x80000,usb自动更新程序首先下载0x8000000——0x80002FFF,总大小为12K,用户程序下载到0x80003000,大小为0x7D000(500K),usb自动更新代码为如下,如果按键按下,就进入DFU模式,否则就启动用户代码。 用户程序除了在void NVIC_Configuration(void) { /* Set the Vector Table
[单片机]
STM32窗口看门狗和独立看门狗的区别
一、介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料: 应当注意:在窗口看门狗中,当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位 【注】图中的WDGTB为3表示2^3=8,表示8分频,最小时间910us也等于每次计数器减一所需要经过的时间:T(LSB),每隔910us减1。最大值也等于,设置重载(喂狗)值127时(最大),一个复位周期的时间就是最大值58.25ms,也就是所能维持进入复位的最大时间。 由于窗口看门狗使用的APB1的PCLK1,
[单片机]
<font color='red'>STM32</font>窗口看门狗和独立看门狗的区别
STM32 PWM捕获 两种方法详解
前言: STM32 的TIM的捕获PWM波,是为了频率和占空比,这两种数据结果!它 的最基本的原理就是(打个比方):例如一个高电平上升沿过来,捕获的数值就是上升为的高电平的TIM的计数值(TIM定时器,CNT不断增加,再重新装载),这点是最基本的内容!后面就是通过前后的数值计算可以获得占空比 频率。 第一种方法: 官方的正统方法 IC1和IC2为一组通道,IC3和IC4为一组通道,以上图为例可以得到上升沿是IC1的值为600(假设),此时TIMx_CCR2不变,计数器复位为0,然后在下降沿的时候,IC2读取计数值 即为高电平时间300(假设),当道下一个周期的上升沿时,IC1读取为600,计数器复位为0;
[单片机]
<font color='red'>STM32</font> PWM捕获 两种方法详解
毕业设计| STM32智能婴儿床监控
婴儿床监测主要有以下功能: 床内温度;检测婴儿状态;配置RTC实时时间;电机PWM按键三档调速;自动开关加热器;发送温度到手机终端;把所有要呈现的状态通过OLED屏幕显示。 感兴趣的小伙伴还可以加入更多的功能。 # 硬件元件清单 # 主控为STM32F103C8T6,使用最小系统板: OLED显示屏1个,连接方式:VCC-3.3/5V;GND-GND;SCL-单片机SCL脚;SDA-单片机SDA脚 轻触按键3个,连接方式:对脚连接;一脚接GND;一脚接上拉电阻至电源、及IO口引脚 一路5v继电器模块 1个,连接方式:上面口:VCC-5V;GND-GND;PIN-单片机信号脚下面口:选择常开/常闭连接负载 L298N电机驱
[单片机]
毕业设计| <font color='red'>STM32</font>智能婴儿床监控
基于STM32的学习型通用红外遥控设备的设计实现
CPU: STM32 调试平台: STM32F103ZET和STM32F103VBT 软件平台: Keil uVision4 电路设计: Altium Designer v6.9 二、学习型红外遥控设备的各个模块实现 2.4 红外脉宽存储及FLASH的读写 根据STM32型号的不同,FLASH容量由16K到1024K不等。 FLASH模块主要由三部分组成:主存储器、信息块、闪存存储器接口寄存器。FLASH模块组织: 详细内容见《STM32中文参考手册》小节《2.3.3 嵌入式闪存》。 主存储器用来存放代码和数据常数,对于大容量产品,划分为256页,每页2K字节;中小容量产品每页则是1K。信息块的启动程序代码用来存储ST
[单片机]
基于<font color='red'>STM32</font>的学习型通用红外遥控设备的设计实现
基于STM32从零写操作系统系列---基于寄存器写串口驱动
目的 尝试基于寄存器层面,编写串口的驱动。用这种方式编写串口驱动,有点类似于使用汇编语言。面向的是每一个单独的寄存器,通过读、改、写的手段,配置寄存器。但是这种方式能够更接近硬件,用硬件的思维编程。 相对于《基于STM32从零写操作系统系列---使用C语言》,这章重新调整了文件结构,让项目文件更好管理和维护。主要使用了makefile的嵌套编译方法来编译多目录下的代码文件。 分析 1.Makefile嵌套编译 首先简单来看一下文件结构: 再看一下顶层Makefile,主要差异如下: 各子目录下的Makefile比较简单 其中需要注意的是: 在windows的cmd命令行中for命令用于查找
[单片机]
基于<font color='red'>STM32</font>从零写操作系统系列---基于寄存器写串口驱动
STM32硬件复位时间
两个参数,,1低电平时间 2低电平压值 1.stm32复位时间 ------ 低电平时间:1.5 至 4.5 ms 2.压值
[单片机]
<font color='red'>STM32</font>硬件复位时间
按键开关机电路图 按键开关机电路设计方案
最近做个基于STM32脑波检测的项目,甲方爸爸要求使用按键进行开关机。在网上查了一些资料,找到了很多案例分享,在此进行总结。 主要分为以下两部分: 单片机控制按键开关机电路 独立按键开关机电路 1、单片机控制按键开关机电路 1.1、简约版 图中Ctr和Key接单片机管脚,作用如下: Ctr作为开关控制用 Key作为按键检测用 操作流程: 开机:按下按键,Q1导通,单片机上电,控制Ctr为低电平,保持Q1导通。 关机:再按下按键,单片机控制Ctr为高电平,此时松开按键Q1截至,单片机停电。 如图: 简约版 优缺点分析: 优点:电路简单,元器件比较少。 缺点:在停机状态下单片机的IO口依旧带电,正常使用没问
[单片机]
按键开关机电路图 按键开关机电路设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved