DAPLink上位机V0.0.19!自制多款芯片的读写保护烧录算法~
DAPLink上位机升级至V0.0.19版本,新增三大亮点功能:上电复位、断电复位和固件升级支持,为二次烧录和选项字节配置提供便捷解决方案。新增支持NRF52、凌鸥LKS32MC03x、上海芯圣HC32F06等20余款芯片的读写保护烧录算法,优化了界面布局和日志显示等功能。重点介绍了NRF52系列通过CTRL-AP实现读保护解除的创新方法,以及LKS32MC03x通过FLASH末字节设置保护的独特
DAPLink上位机V0.0.19!自制多款芯片的读写保护烧录算法~
目录
上位机升级内容
交流Q群:832486982,软件在群文件中。
本次升级上位机版本至0.0.19版本,此次升级内容较多,利用了DAPLink的厂商自定义命令,实现了三个亮点功能:上电复位、断电复位、固件升级,实现的协议开放,个人开发者制作DAPLink时可根据标准协议自行实现。示例代码可在群文件中下载,由于篇幅原因在这里就不贴代码了。
上电复位和断电复位功能很有用!
上电复位使用场景: 在实际生产项目中,迫于成本的要求,在使用单片机时由于IO引脚不够用,可能会将硬件RESET、SWDIO、SWCLK三个引脚当做普通IO使用,此种情况下,如果要想二次烧录程序,那么就需要在MCU上电的瞬间通过SWD连接上MCU并暂停程序运行,进而实现二次烧录程序。
断电复位使用场景: MCU大部分芯片在设置或解除读保护后,需要重新上电选项字节的配置才能生效,在datasheet中可能没有此类描述,为了确保设置成功,最好是重新上电一次。

【升级优化】
-
增加了hex视图大小端显示切换
-
优化了界面布局
-
优化了含有hex文件中含有多段、多区域的固件数据的解析
-
优化了日志带颜色区分显示
-
修复了部分芯片型号由于调整烧录步骤后导致无法擦除问题
【功能新增】
-
【亮点功能】 新增了连接方式:上电复位,用于在SWDIO/SWCLK/RESET引脚同时被程序占用时或芯片进入休眠模式时二次烧录程序(注:该功能需硬件支持,可根据自定义命令指令文档实现)
-
【亮点功能】 新增了复位方式:断电复位,用于更改选项字节后对芯片重新上电(注:该功能需硬件支持,可根据自定义命令指令文档实现)
-
【亮点功能】 新增了帮助菜单:固件升级,用于给DAPLink进行固件升级(注:该功能需硬件支持,可根据自定义命令指令文档实现)
【芯片新增】
-
新增了NRF52系列芯片读保护解除和设置支持
-
新增了凌鸥创芯LKS32MC03x系列读保护解除和设置支持
-
新增了普冉PY32C682x4芯片烧录支持
-
新增了磐启微电子PAN1080芯片烧录支持
-
新增了领芯微(LCM32)F06系列芯片烧录支持及选项字节烧录支持
-
新增了珠海巨晟(JS32)M040系列芯片烧录支持及选项字节烧录支持
-
新增了(Micronas)HCV系列芯片烧录支持
-
新增了上海芯圣(HolyChip)HC32F06系列芯片烧录支持及选项字节烧录支持
-
新增了武汉芯源CW32L010/011/012系列芯片烧录支持并全系支持读保护设置
-
新增了国民技术N32G45x/A455系列选项字节烧录支持
-
新增了兆易创新GD32E23x系列选项字节烧录支持
-
新增了钜泉光电(HitrendTech)HT50/60系列芯片烧录支持
-
新增了武汉芯必达(IMMORTA)IM94系列芯片烧录支持
-
新增了美仁MR82/86系列芯片烧录支持
-
新增了美高森美(Mircosemi)M2Sxx系列芯片烧录支持
-
新增了思澈科技(Silfi)SF32LB52x/55x/56x/58x系列芯片烧录支持
-
新增了上海矽翊微电子(SiYiMicro)SYM32F003/F030/L010/L011/L031/L053/L083系列芯片烧录支持
-
新增了珠海泰为(TaiAction)TAE32F5300/F5600/G5800芯片烧录支持
-
新增了广芯微(Unicmicro)UM32系列芯片烧录支持
-
新增了万高(Vango)V85xx系列芯片烧录支持
-
新增了微知纳特(WIZnet)W7500系列芯片烧录支持
-
新增了韦斯佰瑞(Westberry)WB32F1系列芯片烧录支持
-
新增了斯瑞浦(3PEAK)TPS32M0/M5系列芯片烧录支持
自制选项字节烧录算法(NRF52系列)
NRF芯片介绍
nRF52 系列是挪威 Nordic Semiconductor 公司推出的基于 ARM Cortex-M4 内核的超低功耗蓝牙系统级芯片(SoC)家族。继承了 Nordic 在低功耗无线技术上的优势,具有多种电源管理模式(如:系统开启(ON)、系统关闭(OFF)、低功耗模式(LP)),在保持无线连接的同时实现极低的功耗,特别适合电池供电设备。国内有很多小米生态下的相关产品,都在用nrf的SOC。
烧录算法
nRF52系列烧录算法有三个,分别为:
- nrf52xxx_sde.flm,用于烧录官方提供的固件,一般名称为xxx_softdevice.hex
- nrf52xxx.flm,用于烧录自己编写的固件,也就是APP,一般位于softdevice固件之后的区域
- nrf52xxx_uicr.flm,用于烧录用户配置区
保护机制
参考文档(用户手册)《nRF52840_PS_v1.11.pdf》
此芯片的读保护机制是禁用掉SWD访问AHB-AP的权限,以此达到无法通过SWD读写FLASH数据的目的。

该芯片的调试组件框图如上图所示,可以看到,开启读保护后虽然无法访问到了挂载在AHB总线上的外设(如FLASH、RAM、外设等)。但是还有另外一组CTRL-AP,这个AP是可以访问到NVMC控制器的,并且CTRL-AP下存在一个ERASEALL寄存器,通过访问该AP并操控ERASEALL触发全片擦除操作,就可以解除读保护了。
CTRL-AP下的所有寄存器如下图所示:

开启读保护的办法比较简单,可在程序中通过以下代码实现:
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();
}
}
同时也可以在外部实现,直接修改UICR固件的0x208位置处,将0xFF改为0x00,烧录后就会自动开启读保护。
tips:该芯片已自制选项字节烧录算法,烧写UICR区域时带缓存,只会更改需要烧写的区域,不会擦除掉原有的数据。
自制选项字节烧录算法(凌鸥创芯LKS32MC03x系列)
凌欧创新LKS32MC系列没有选项字节的概念,读保护是通过将FLASH的最后四个字节写成非0xFFFFFFFF,即可实现读保护。
解除保护无法通过烧录算法的形式,而是直接使用SWD控制FALSH控制器,进行全片擦除操作。
目前读写保护已经集成到上位机中,博主只有LKS32MC03系列的板子,所以只制作了该系列的读写保护。MC05/06/08/45系列解除和设置的步骤是一样的,区别在于主控时钟的初始化,由于博主没有板子验证,所以暂时没做这些芯片的读写保护。
tips:该芯片已自制选项字节烧录算法,使用上位机开启读保护时,只会更改需要烧写的区域,不会擦除掉原有的数据。

自制选项字节烧录算法(上海芯圣HC32F06系列)
在上海芯圣公众号上可以提交申请HC32F06的开发板,博主申请了一块,并为该芯片增加了烧录支持以及选项字节烧录支持。
该芯片为常规芯片,可以通过烧录算法对选项字节进行解除和设置。

烧录演示
上位机和脱机烧录同时已经同时更新,DAPLinkUtility受支持的芯片型号, EasyFlasher-META脱机烧录器同样支持。
有需要的小伙伴在某宝店铺:
行一工作室
禾文智能科技
进行购买~~~
NRF52系列在线读写、读保护演示
nrf52840烧录演示
NRF52系列脱机烧录演示
脱机烧录演示
ends…
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)