nordic——nrf52系列SWD设置回读保护

简介:

在开发时可能需要回读保护功能,在产品出厂后这个功能可以让你的代码更加安全,无法用SEGGER或者其余方式读取你的代码HEX文件,也就是禁用SWD下载接口。但是SWD锁住了,还想使用(从新下载代码)也是可以解锁的,但是注意,当你解锁时,会直接擦除Flash中的代码,也防止代码被强制读取。

开发准备:nrf52840或者nrf52832(原理一样)、SDK包例程或者程序一个

功能实现:

想要实现禁用SWD的功能,一种方式在程序中对UICR APPROTECT寄存器进行设置,就可以进行禁用,当然也可以启用,如果没有设置解除机制这个回调保护,那么SWD不再可访问芯片,需要访问既擦除FLash。

一、禁用

1.1.1、在芯片手册中有对该寄存器有这样的描述:

 由此可知,在该寄存器低8位写入0x00,即可启用SWD端口的读保护。默认为0xFF,不启用。

1.1.2、软件设置如下:先任意打开一个程序,在程序中添加如下代码

头文件添加:

#include "nrf_nvmc.h"

然后添加头文件和.c文件。

 

 

 在添加如下程序

void SWD_protect(void)
{
  if (NRF_UICR->APPROTECT == 0xFFFFFFFF) { nrf_nvmc_write_word((uint32_t)&(NRF_UICR->APPROTECT), 0xFFFFFF00);   
    nrf_delay_ms(1000);
    NVIC_SystemReset(); 
  }
}

并在main()函数开始调用,程序运行后既不能在访问SWD接口,除非有相应的解除机制,解除保护。

1.1.3、下载程序后我们使用segger(j_flash)去读我们的芯片,当点击连接时,会有一下提示

 显示设备已经被保护,无法连接,是否需要解除保护?说明设备已经被保护了,无法进行读取,当我们点击Yes后,会解除保护,但是Flash中的程序也被擦除了。

点击yes后读出来Flash如下,全为FF,说明程序已经擦除

 

1.2 第二种方式是直接更改HEX文件的相应位

由芯片手册,确定APPROTECT的地址为0x208,UICR的基址为0x10001000

 

 首先需要准备一份HEX固件,这份固件最好是烧写到芯片中,然后利用j-flash读出后在0x10001208为把FF修改为00,就得到了一份禁用SWD的HEX文件,可以进行烧录。为什么不直接用keil编译的HEX做更改,因为该HEX是没有这个地址的。

如下是没有在程序中禁用下载相关代码的程序,我下载后可以用segger的j_flash连接,并读出程序,地址0x10001208为FF

 直接更改该位的值为00,并回车保存然后从新下载程序

 然后运行程序

 会提示CPU 运行失败。

 我们再次点击连接会有如下提示,说明禁用成功

二、解除禁用

如果程序中没有做处理去修改寄存器的值为FF,那么我们可以用两种方式去解除禁用,解除后程序会被擦除。

2.1、segger(j-flash)

这种方式只需要安装的有segger,根据芯片型号选择好后,点击连接,会弹出一个提示框,点击Yes即可。

2.2、利用官方工具nrfjprog进行

这种方式请确认你安装的有nrfjprog,安装方式请根据官方中文博客进行安装:连接如下: Nordic nRF51/nRF52开发环境搭建 - iini - 博客园 (cnblogs.com)

2.2.1、通Windows命令窗口,(win+R调出在其中输入cmd)

 在打开的命令框中输入nrfjprog,并加回车后有如图所示界面,说明你正确安装了nrfjprog,并加入了环境变量

 输入nrfjprog --recover回车有如下输出,说明解除成功。

 

 注意事项:

# 研发生产测试方向
1、 预留好射频测试的串口测试点作为串口 TX 和 RX 做 DTM 测试用,任意 GPIO 即可 (首推空引脚),方便研发调试或者方便和工装对接
2、 开发调试的时候使用 Jlink 进行下载代码和 Debug;工厂批量烧录如下,主要是下载速 率和稳定性的问题,因为影响工厂生产效率
3、 芯片射频匹配电路根据芯片型号和封装和线路图参考手册上面的参数进行配置;射频 走线为 50 欧姆,走线光滑过渡自然,背面等有完整的参考地面,走线附近多地孔 等;天线匹配根据实际天线设置匹配参数;研发阶段射频必须做频偏校准,通过调节 高频晶振负载电容控制 CH0 /CH19/CH39 通道的频偏在 0KHz 附近,同时射频区域和晶 振匹配电容的器件选用小封装、高精度、低温飘的器件,以保批量时候的产品一致性
posted @ 2022-04-22 14:25  星辰_stars  阅读(2358)  评论(0编辑  收藏  举报