完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在芯片加密时,时常会用到读保护功能,这个功能可以保证你的代码不被 J-link,ST-link 之类的调试器读取,STM32 系列相关资料网上有很多,但是 GD32 的资料目前来说还是比较少。
GD32F103 、GD32F303 与 STM32F103 基本上兼容的,甚至可以直接使用ST 的库操作,所以替换起来还是相当方便的。 但是 F4 系列的差别还是很大的,官方的例子也不是很多,网上的资料也不是很全,所以不得不啃文档了。 本来准备直接搜 STM32F4x 关于读保护的,看看能不能从 ST 的代码中找到相关的函数,从而替换成 GD 的库操作,但最终没有找到,还好从参考手册中找到了。 说实话,GD 的库操作有两点非常不满意:
所以今天就来谈谈如何启用芯片的读保护功能,这应该是所有产品上市前都会添加的一个功能。 首先看看 GD32F1的或者说 STM32F1的: 开启读保护: if(FLASH_GetReadOutProtectionStatus() != SET) { FLASH_Unlock(); FLASH_ReadOutProtection(ENABLE); FLASH_Lock(); } 关闭: if(FLASH_GetReadOutProtectionStatus() != RESET) { FLASH_Unlock(); FLASH_ReadOutProtection(DISABLE); FLASH_Lock(); } 事实上,读保护一旦开启,如果解除读保护,同时也会由硬件自动清除掉代码,所以如果你通过调试器取消读保护时,会自动清除代码,防止被它人读取数据。 而一旦开启了读保护,你是无法通过调试器读取 FLASH 的,你读取的数据全是 0xff ,同时也无法通过调试器在线调试,所以,正在开发的产品一般不会加入这个功能,只有量产时才会加入,否则出现问题难定位。 如果需要重新下载,可以使用 KEIL 软件的这个擦除按钮: 擦除之后就可以继续下载了(最好调试器里有复位引脚控制芯片复位)。 当然,你也可以先用工具解除读保护,如何解除自行上网搜索即可。 另外,还有一种方式是使用 KEIL RAM 运行的方式,直接在芯片 RAM 中执行相关代码解除读保护,这样就不需要其它工具了,有时间鱼鹰会具体介绍如何操作,记得关注鱼鹰。 然后再看 GD32F4x的操作,这个操作在网上找了一圈,没有发现,觉得有必要写一写,方便大家: if(ob_spc_get() != SET) { ob_unlock(); ob_security_protection_config(FMC_LSPC); ob_start(); // 特别注意这条语句 ob_lock(); } 可以看到其实也是很简单的操作类似库函数即可,有几点需要注意:
F1 的由专门语句负责: GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,DISABLE); 而F4 就是把 PA13、P14 重新配置即可(即不使用默认功能,可设置为下拉输入): rcu_periph_clock_enable(RCU_GPIOA); gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO_PIN_13 | GPIO_PIN_14); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_14); ST 也是操作类似的库函数实现。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9002 浏览 16 评论
4051 浏览 18 评论
1110浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
569浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:11 , Processed in 1.243661 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号