0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈STM32调试DEBUG相关知识

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-06 15:23 次阅读

学习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口。


提示:这个地方就是需要大家配置相关的引脚。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16013

    浏览量

    343574
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348732
  • DEBUG
    +关注

    关注

    3

    文章

    83

    浏览量

    19442
收藏 人收藏

    评论

    相关推荐

    STM32F769无法debug的原因?

    我最近在调试 STM32F769 使用RT Thread 系统 开始移植已经成功 结果前几天出了问题 现在无法debugdebug 连接 提示 端口号无效GDB 端口当时是
    发表于 04-08 07:31

    L412K8U6调试Debug时进不去主函数是怎么回事?

    L412K8U6调试Debug时进不去主函数,同一个程序用STM32L412 nucleo板就可以正常调试
    发表于 04-02 06:06

    STM32CubeMX创建STM32U5系列工程,DEBUG调试下为什么没有ST-LINK选项?

    通过STM32CubeMx创建生成一个STM32U5xxx 的MDK(keil_v5)工程,打开工程后,想通过ST-LINK进行调试,但在工程的Debug窗口并没有ST-LINK
    发表于 03-27 06:40

    母线保护相关知识分享

    母线保护相关知识分享
    的头像 发表于 01-19 10:29 180次阅读
    母线保护<b class='flag-5'>相关</b><b class='flag-5'>知识</b>分享

    详解Java DEBUG的基本原理

    Debug 的时候,都遇到过手速太快,直接跳过了自己想调试的方法、代码的时候吧……
    的头像 发表于 01-05 10:10 547次阅读
    详解Java <b class='flag-5'>DEBUG</b>的基本原理

    STM32 TrustZone 开发调试技巧

    电子发烧友网站提供《STM32 TrustZone 开发调试技巧.pdf》资料免费下载
    发表于 12-18 11:16 2次下载
    <b class='flag-5'>STM32</b> TrustZone 开发<b class='flag-5'>调试</b>技巧

    STM32单片机一般有几种调试方式

    JTAG调试*:这是一种常用的调试工具,可以用于单步执行、断点调试等操作。在STM32单片机中,可以使用ST-Link、STMicroelectronics IDE等工具进行JTAG
    的头像 发表于 12-13 10:31 1137次阅读

    STM32WB55开发(4)----配置串口打印Debug调试信息

    STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在S
    的头像 发表于 12-01 15:48 424次阅读
    <b class='flag-5'>STM32</b>WB55开发(4)----配置串口打印<b class='flag-5'>Debug</b><b class='flag-5'>调试</b>信息

    基于STM32的串口环形队列IAP调试

    基于STM32的串口环形队列IAP调试心得
    的头像 发表于 09-18 15:33 847次阅读
    基于<b class='flag-5'>STM32</b>的串口环形队列IAP<b class='flag-5'>调试</b>

    eMMC的相关基础知识(1)

    引言:eMMC是一种使用非常广泛的存储器件,从消费电子,工业领域,到车规等级,以其性能优良,高可靠性,调试便捷等等特点,成为芯片最小系统构建不可或缺的一员,本节介绍eMMC的相关基础知识
    发表于 08-15 11:46 4875次阅读
    eMMC的<b class='flag-5'>相关</b>基础<b class='flag-5'>知识</b>(1)

    STM32 RTOS知识

    电子发烧友网站提供《STM32 RTOS知识点.pdf》资料免费下载
    发表于 08-01 14:28 2次下载
    <b class='flag-5'>STM32</b> RTOS<b class='flag-5'>知识</b>点

    STM32 MCU TrustZone开发调试技巧分享

    电子发烧友网站提供《STM32 MCU TrustZone开发调试技巧分享.pdf》资料免费下载
    发表于 07-28 13:35 1次下载
    <b class='flag-5'>STM32</b> MCU TrustZone开发<b class='flag-5'>调试</b>技巧分享

    RT-Thread Debug分析与调整方案

    RT-Thread 中可以通过 menuconfig 使能相关宏,配置和使用 debug 功能,即可向工作台输出程序运行信息,方便调试和使用。
    的头像 发表于 07-22 15:32 661次阅读

    IAR中 Debug 和 Release有何区别

    两个版本到底有什么区别?   下面就来讲讲Debug 和 Release版本区别,及其相关的内容。   关于Debug 和 Release版本   Debug, 顾名思义,就是
    的头像 发表于 05-22 10:54 966次阅读
    IAR中 <b class='flag-5'>Debug</b> 和 Release有何区别

    STM32中C语言的基础知识

    C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C语言基础知识,希望能对大家有所帮助。
    的头像 发表于 04-27 17:42 991次阅读
    <b class='flag-5'>STM32</b>中C语言的基础<b class='flag-5'>知识</b>