前语
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代码维护的开发与布置阶段。
责任编辑;zl