2294|1

221

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

【国民技术N32WB031_STB开发板评测】禁用SWD后的正确解决方案 [复制链接]

本帖最后由 walker2048 于 2023-5-11 15:55 编辑

前言

在国民技术群里,经常有朋友不小心禁用了SWD调试接口,导致无法连接到芯片的情况。然后也有群友搞不清楚这种情况下如何解决。现在我们来复现一下问题,并尝试解决。

现在我打开了N32WB03x的GPIO案例工程,在工程代码里添加了禁用SWD接口的代码(将SWD接口初始化为输出模式)。

/**
 * @brief   Main program.
 */
int main(void)
{
    /* Initialize Led1~Led2 as output pushpull mode*/
    LedInit(LED1_PORT, LED1_PIN);
    LedInit(LED2_PORT, LED2_PIN);
	
	  /* Disable SWD */
	  LedInit(GPIOA, GPIO_PIN_4);
	  LedInit(GPIOA, GPIO_PIN_5);
    
    /*Turn on Led1~Led2*/
    LedOn(LED1_PORT, LED1_PIN);
    LedOn(LED2_PORT, LED2_PIN);

很好,在烧录程序并重启设备后,再次烧录程序失败了,可以开始了,提示如图。

 


常规开发板禁用SWD的解决方案

方案一、例如国民的其他芯片,是带Boot引脚和ISP程序的。这些芯片是可通过配置Boot引脚,在重启时进入ISP下载模式。进入ISP下载模式后,即可使用SWD烧录新的程序,或者用ISP下载工具烧录新的程序进去。

方案二、使用OpenOCD配合脚本清空Flash

  1. 确保你的daplink固件支持JTAG/SWD接口。

  2. 将JTAG/SWD连接器插入到芯片的JTAG/SWD接口上,并将daplink插入到计算机上。

  3. 使用OpenOCD等支持JTAG/SWD的调试工具连接到daplink。

  4. 在连接成功后,使用OpenOCD等调试工具运行以下命令清空flash:

reset halt
flash erase_sector 0 0 last
reset

其中,reset halt用于暂停芯片的执行;flash erase_sector用于擦除芯片的flash存储器,0表示擦除第0个扇区,last表示擦除最后一个扇区;reset用于复位芯片。

  1. 执行完上述命令后,你的芯片的flash存储器将被清空。

N32WB03x禁用SWD、或者进入睡眠状态无法使用SWD的正确解决方案

在国民技术群里,和官方技术人员沟通后得知,可以通过简单调整keil的debug配置,解决这两种情况下的芯片烧录问题。配置步骤如下(详细步骤看图片):

  1. 将开发板上的RESET-RST跳线用跳线帽连上(daplink的rst引脚和mcu的reset引脚,若不连接无法起作用,实在找不到跳线帽,可以临时把旁边的RX跳线帽拔过来用)
  2. 在keil里打开N32WB03x的工程,开始配置
  3. 点击Options for Target..图标
  4. 在弹出的窗口里点击Debug选项卡
  5. 点击Debugger旁边的setting按钮
  6. 在弹出的选项框左下角,点击Connect旁边的下拉菜单,选择Under Reset选项
  7. 点击各个选项卡的OK按钮保存配置
  8. 烧录设备

         

配置完成后,点击烧录按钮,就可以顺利烧录程序啦。

 

 其实在keil的帮助文档里搜索reset,可以在34567各种调试器的帮助文档里看到下面这段内容。已经说明了,under Reset选项是用于错误配置SWD引脚时使用该配置。

The Connect selection controls what happens when the µVision debugger connects to the target device.

Normal — just stops the CPU at the currently executed instruction after connecting. 
with Pre–reset — applies a hardware reset(HW RESET) before connecting to the device. 
under Reset — holds the hardware reset(HW RESET) signal active while connecting to the device. You may use this option when the user program mistakenly disables the JTAG/SW interface. 

小偏方

除了上面的办法,其实也有一个办法能烧录(不需要配置keil的debug选项),就是先按住开发板的RESET按钮,然后点击keil的烧录按钮,在0.5秒后松开RESET按钮,就可以顺利烧录啦。本人测试过几次,成功几率50%。其实也就是让keil烧录开始时立即复位mcu。

此帖出自RF/无线论坛

最新回复

跟着楼主学N32WB03x禁用SWD、或者进入睡眠状态无法使用SWD的正确解决方案   详情 回复 发表于 2023-5-11 21:51
点赞 关注
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

跟着楼主学N32WB03x禁用SWD、或者进入睡眠状态无法使用SWD的正确解决方案

此帖出自RF/无线论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
积极拓展机顶盒应用 谨慎应对专利问题

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 是什么原因导致目前我国机顶盒市场条块分割?机卡不能真正分离的主要原因 ...

单片机使用μC/OS-II的利弊

近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题。本文通过对一种源码公开的嵌入式实时操作系统μC/OS- ...

坛友们再来玩游戏——接龙谱写精彩人生[规则内详]

光看标题,大家肯定不知所云。那就在这里细看规则,其实非常简单! 规则: 一人一层楼 一层楼长一岁 情节可自己想象 ...

今天把基于C8051F320的湿度计完工,公布所有代码!

做了C8051F320的湿度计的个人收尾工作: 1、加了一块锂充电电池,修改了充电电路。修改方法见我其他的帖子,不再罗嗦了。这个 ...

cc2540 cc2541 低功耗实测和总结

CC2541 CC2540 实现超低功耗是非常重要的: 我们来总结一下实现方法: 1,有定时器在跑时会一直跑在PM2电流在300uA左右。 ...

TMS320F28335 串口 SCI

TMS320F28335的串口有三个串口,SCIA,SCIB和SCIC,GPIO的管脚对应如下: SCIA对应GPIO28/29和GPIO35/36两组可选,SCIB有四组 ...

【问题反馈】安路TangDynasty ChipWatcher能把人逼疯的排序

我想把vga_rden信号移动到 rout的下边,当我把它拖到lcd_en上时,它跑到了lcd_en的上边,按照这个逻辑我把它拖到lcd_request的上 ...

AD23的显示效果很难看

今天安装了AD23,发现一个了一个变化,原来AD的PCB显示过孔的颜色是灰白色,但是这个AD23打开PCB,过孔的颜色被设置成了和当前层 ...

负载阻抗和功率放大器阻抗不匹配怎么办?自制阻抗变换器怎么用?

负载阻抗和功率放大器阻抗不匹配怎么办?自制阻抗变换器怎么用?

快速回复 返回顶部 返回列表