程序禁用swd-jtag功能,如何用swd下载

本文介绍了当STM32程序禁用了SWD-JTAG功能时的下载方法。通过设置BOOT0和BOOT1的状态,可以实现程序的重新烧录。文章还详细解释了STM32的三种启动模式及其对应存储介质。

程序禁用swd-jtag功能,如何用swd下载?

 
在重新上电的时候,保证BOOT0为高电平,BOOT1为低电平,即可禁止程序从烧写过的代码启动,这时,重新烧写程序即可。

STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 
1)用户闪存=芯片内置的Flash。 
2)SRAM=芯片内置的RAM区,就是内存啦。 
3)系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROROMM区。 
在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表: 
BOOT1=xBOOT0=0从用户闪存启动,这是正常的工作模式。 
BOOT1=0BOOT0=1从系统存储器启动,这种模式启动的程序功能由厂家设置。 
BOOT1=1BOOT0=1从内置SRAM启动,这种模式可以用于调试。 
要注意的是,一般不使用内置SRAM启动(BOOT1=1,BOOT0=1),因为SRAM掉电后数据就丢失。多数情况下SRAM只是在调试时使用,也可以做其他一些用途。如做故障的局部诊断,写一段小程序加载到SRAM中诊断板上的其他电路,或用此方法读写板上的Flash或EEPROM等。还可以通过这种方法解除内部Flash的读写保护,当然解除读写保护的同时Flash的内容也被自动 
清除,以防止恶意的软件拷贝。 
一般BOOT0和BOOT1跳线都跳到0(地)。只是在ISP下载的情况下,BOOT0=1,BOOT1=0,下载完成后,把BOOT0的跳线接回0,也即BOOT0=0,BOOT1=0。

### 使用 JTAGSWD 模式下载程序的方法 #### 方法概述 JTAGSWD 是两种常见的硬件调试接口,广泛应用于嵌入式系统的开发中。这两种模式允许开发者通过专用的调试工具(如 ST-LINK、J-Link 等)将编译好的固件文件下载到目标设备中,并支持断点调试等功能--- #### 配置 STM32 的 JTAG/SWD 模式 STM32 微控制器默认支持 JTAG 调试接口,同时也提供了更精简的 SWD 接口作为替代方案。可以通过配置微控制器的相关寄存器来启用或禁用特定的调试模式。 以下是基于 STM32 的具体操作方法: 1. **定义调试模式** 在代码层面,可以使用 `AFIO->MAPR` 寄存器来控制 JTAGSWD 的工作状态。例如: ```c void JTAG_Set(uint8_t mode) { uint32_t temp; temp = mode; temp <<= 25; // 移位至 MAPR 寄存器对应位置 RCC->APB2ENR |= (1 << 0); // 开启辅助时钟 AFIO->MAPR &= 0xF8FFFFFF; // 清除 MAPR 的 [26:24] 位 AFIO->MAPR |= temp; // 设置 jtag/sdw 模式 } ``` 上述函数中的参数 `mode` 可以取以下值[^4]: - `0x00`: 同时启用 JTAGSWD- `0x01`: 仅启用 SWD- `0x02`: 完全禁用调试接口。 2. **物理连接** 根据所选的调试模式,需正确连接调试器与目标板上的相应引脚。对于 SWD 模式,通常只需要两根信号线:SWCLK 和 SWDIO;而对于 JTAG,则需要更多的引脚,包括 TMS、TCK、TDI 和 TDO[^3]。 --- #### 下载程序的具体流程 无论采用 JTAG 还是 SWD 方式,基本的操作步骤相似,主要包括以下几个方面: 1. **准备环境** - 安装适合的目标芯片型号的 IDE 工具链(如 Keil MDK、STM32CubeIDE)。 - 获取最新的固件和支持包。 2. **编写和编译代码** 利用上述软件完成应用程序的设计与测试后,生成最终的二进制镜像文件(通常是 `.hex` 或 `.bin` 文件格式)。 3. **连接硬件** 将调试适配器(比如官方推荐的 ST-LINK/V2)插接到电脑 USB 端口中,并按照前述说明对接好目标单片机电路板上的调试端子。 4. **加载固件** 打开集成开发环境中提供的 Flash 编程界面或者第三方独立工具(如 OpenOCD),指定待写入的目标地址范围以及源数据路径,启动传输过程直至成功结束为止。 5. **验证结果** 如果一切正常的话,应该能够看到 LED 灯闪烁或者其他预期行为表现出来,证明新刷进去的应用已经开始运行起来了! --- #### 注意事项 尽管两者都能满足大多数情况下关于在线修改内存的需求,但在某些特殊场景下仍存在差异需要注意: - 当前主流趋势倾向于优先选用更为简洁高效的 Serial Wire Debugging(SWD),因为它只需占用较少管脚资源却同样具备强大功能集; - 不过如果遇到复杂度较高的多核架构处理器实例时,则可能不得不依赖传统 Joint Test Action Group(JTAG)技术才能实现全面覆盖式的诊断分析能力[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值