前言
stm32pcrop专有代码读出保护,将某个区域设置为仅允许执行,可防止代码被非法读出与修改。st网站提供了免费的pcrop参考代码,但是例程中仅仅提供了用代码设置pcrop。为方便利用pcrop进行知识产权保护的开发和部署,这篇文章提供了方法,可在rdp级别设置为1或者0时,使用代码清除pcrop。
st网站上的pcrop参考代码
学习使用pcrop,可从st网站下载文档以及参考代码。文档里有一步一步的详细说明。参考代码则实现了,如何设置编译开发环境去掉文字库(literal pool),以避免受保护区域需要被读访问;参考代码也实现了如何利用代码使能pcrop保护以及如何导出接口符号供二次开发使用。
你可以编译运行pcrop参考代码。一旦下载到开发板并运行后,扇区2会自动被设置成pcrop保护。你将无法再次下载代码到该扇区,也无法读出该扇区的内容。若想通过stlink工具解除pcrop保护,则会导致整个flash被擦除。
使用代码清除pcrop
在熟悉st网站上的pcrop参考代码基础之上,我们将讨论如何使用代码清除pcrop。
1. 原理
根据stm32用户手册,要想清除pcrop保护,读保护rdp级别必须从1设置成0。也就是说,即使当前rdp级别为0,我们也要使用代码将其设置成1。然后,同时关掉pcrop和将rdp设置成0。这也说明,尽管是清除pcrop保护,我们的代码必须加入rdp的设置函数, 而不能仅仅修改参考代码中的pcrop_enable的状态字段使其变成pcrop_disable。
2. 材料准备
开发板:stm32f429i_discovery
开发工具:stm32cube_fw_f4_v1.15.0
stm32cubeexpansion_an4701_f4_v1.0.0(从st网站下载的参考代码)
stm32stlink
iar/keil
注:也可以选择其他支持pcrop的stm32系列,并选择相应的stm32开发板与stm32固件库。
3. 代码
? ●设置rdp到级别1
该函数在rdp级别为0时,若需要清除pcrop, 必须被使用。
? ●设置rdp到级别0
在清除pcrop保护的代码里不会直接调用这个函数。参考手册提到,pcrop的清除必须与rdp从1到0同时发生,而下列rdp_disable函数则是完整独立的,无法与pcrop的option bytes同时操作。不过,这个代码的中间部分,也就是实际功能部分,将在清除pcrop时被重用。
? ●清除pcrop
下述代码清除pcrop,它基于参考代码中的pcrop_enable函数改写而成。首先,它通过rdp_enable将rdp设置成1。注意实验中不要将rdp设置成为2,否则所有的option bytes将不再被允许修改。然后将rdp和pcrop都设置完毕,调用一次hal_flash_ob_launch达到同时将rdp设置成1并清除pcrop保护。
4.运行
在主函数中,调用pcrop_disable可解除pcrop保护。rdp_enable后需要关闭电源,重新启动,然后系统正常运行解除pcrop保护。解除保护后,可通过stlink确认pcrop option bytes已恢复,同时也可以看到整个flash内容已被擦除。
结论
本文讨论了完全使用代码控制pcrop的设置与清除。它可以使用在pcrop代码保护的开发与部署阶段。
键盘测试设备的性能检测和高效率解决方案
太阳能发电系统的维护
华为重申不造车
基于C8051F310和芯片CS5460A的电压电流表设计
海信双屏手机A6评测 称得上是独树一帜了
如何使用代码清除STM32单片机上的PCROP
泰克推出首款面向MIPI M-PHY 3.1的测试解决方案
中微爱芯8位低功耗LCD型MCU AiP9P262L/AiP9P263L介绍
获得2MHz开关频率的四种设计技巧
VR直播加速风靡 市场成熟度不断提高
华硕ZenFone 7系列旗舰5G智能手机凭借Pixelworks显示技术展现惊人的视觉效果
解析48V锂离子电池系统的关键技术及应用现状
家庭音响安装教程
固态电池的难度大,戴森和苹果也没有太大进展
10月5G业务有看点,下半年运营商迎来5G收获期
对单片机系统可行的EMS技术方法
自制负离子空气清新器,Ionic Air Purifier
电脑USB 3.0根集线器驱动无法使用的原因
解析ARM到底是一家什么样的公司?
【直播预告】第二届物联网线上技术论坛