JTAG、SWD调试原理简析

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

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

支持两种调试接口:
串行接口(SWD)——该模式使用比较多
JTAG调试接口(JTAG)

调试

STM32F10xxx内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚)。

JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟+数据)接口。

在SWJ-DP接口中,SW-DP接口的2个引脚和JTAG接口的5个引脚中的一些是复用的。

SWD和JTAG调试端口引脚

这些引脚如果被作为JTAG和SWD调试引脚时,是不能作为普通IO引脚的,输出不了正常的电平状态;

如果禁止SWD或者JTAG调试,那不使用的引脚就可以作为IO引脚

SWD、JTAG模式设置库函数(在文件stm32f10x_gpio.c中)

void GPIO_PinRemapConfig(uint32_t GPIO_Remap,FunctionalState NewState)

通过查看GPIO_Remap这个参数的取值范围,跳到stm32f10x_gpio.h头文件中可以看到下面的宏定义,也就是参数的部分取值

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */

通过注释就可以知道这些宏定义是使能SWD或者JTAG的

JTAG、SWD调试原理简析相关推荐

  1. Webpack模块化原理简析

    webpack模块化原理简析 1.webpack的核心原理 一切皆模块:在webpack中,css,html.js,静态资源文件等都可以视作模块:便于管理,利于重复利用: 按需加载:进行代码分割,实现 ...

  2. Android Handler与Looper原理简析

    一直感觉自己简直就是一个弱智,最近越来越感觉是这样了,真的希望自己有一天能够认同自己,认同自己. 本文转载于:https://juejin.im/post/59083d7fda2f60005d14ef ...

  3. grpc通信原理_gRPC原理简析

    gRPC原理简析 gRPC是由谷歌提出并开发的RPC协议,gRPC提供了一套机制,使得应用程序之间可以进行通信. 降级开发者的使用门槛,屏蔽网络协议,调用对端的接口就像是调用本地的函数一样.而gRPC ...

  4. Android V1及V2签名原理简析

    Android为了保证系统及应用的安全性,在安装APK的时候需要校验包的完整性,同时,对于覆盖安装的场景还要校验新旧是否匹配,这两者都是通过Android签名机制来进行保证的,本文就简单看下Andro ...

  5. CRC原理简析——史上最清新脱俗简单易懂的CRC解析

    CRC原理简析 1. CRC校验原理 CRC校验原理根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端.当然,这个 ...

  6. Java的定时器Timer和定时任务TimerTask应用以及原理简析

    记录:272 场景:Java JDK自带的定时器Timer和定时任务TimerTask应用以及原理简析.在JDK工具包:java.util中可以找到源码,即java.util.Timer和java.u ...

  7. 转子接地保护原理_发变组转子接地保护原理简析

    发变组转子接地保护原理简析 发电机转子接地故障是常见的故障之一, 发生一点接地, 对发电机本身并不直接构成危 害,此时可通过转移负荷,平稳停机后,再查故障点:若在此基础上又发生另外一点接地, 将会严重 ...

  8. Mysql锁机制及原理简析

    Mysql锁机制及原理简析 一.前言 1.什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制. 锁保证数据并发访问的一致性.有效性: 锁冲突也是影响数据库并发访问性能的一个重要因素. 锁是 ...

  9. 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析

     # 写在前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章 ...

最新文章

  1. 自研芯片架构 ,这家中国公司发布DPU芯片计划
  2. TED+如何让压力成为朋友+如何面对压力决定你的未来
  3. 【caffe解读】 caffe从数学公式到代码实现5-caffe中的卷积
  4. 安装Apache的步骤
  5. 不是世界不好,而是你见得太少
  6. Java路径问题最终解决方案使用演示
  7. vue 项目如何引入微信sdk,使用微信接口
  8. 程序员版《On Call 24 小时》
  9. 蓝桥杯 ADV-154 算法提高 质数的后代
  10. 用伪代码梳理springcloud
  11. 当时明月在,曾照彩云归
  12. 什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。
  13. stm32串口控制LED灯
  14. python中pd是什么意思_python pd
  15. 深圳实验室装修准备工作
  16. 绵阳现在买房怕房价跌,不买又怕房价涨!到底是跌是涨?
  17. [线段树 标记永久化 单调队列] BZOJ 1171 大sz的游戏 BZOJ 2892 强袭作战
  18. 3D建模新手入门到高端 电脑配置一览
  19. echarts的饼图label显示缺失
  20. 你为何没有成为领导者

热门文章

  1. 九月十月 阿里 百度 华为 校招笔试题
  2. 医药领域知识图谱快速及医药问答项目(项目全过程)
  3. 图像查看器--能同时打开多个图片
  4. 4212: 神牛的养成计划
  5. 如何看待master战胜柯洁等多为围棋高手?
  6. abbex 区块链学院如何交易之 第十二章 反败为胜:重创之后重拾信心
  7. 信息学奥赛书籍 提高篇 --- 2022.01.30
  8. 服务器开机显示mm,【分享】mmrecov到新的服务器后,启动RPC服务的问题
  9. Python每日一记181matplotlib之colormap(camp)
  10. bert tokenizer