STM32F05x加入RDP(LV1)后,Segger無(wú)法Unlock的解決辦法
沿用之前CM3核的STM32F10X系列的加入RDP功能,之后在Segger的Unsecured Chip或者Unlock STM32的Cmd無(wú)法進(jìn)行去除RDP,而Unlock STM32則提示無(wú)法識(shí)別該型號(hào)。嘗試了很多方法,依然無(wú)法對(duì)其進(jìn)行Remove RDP,估計(jì)是型號(hào)比較新,Segger還未完全支持吧。所用 的Segger為官方最新的Release跟Beta版本V4.65d跟V4.67c/
估計(jì)可用的方法有以下三種:
1、配置Boot區(qū),用System bootloader啟動(dòng),Boot1 = 0,Boot0=1,然后用串口ISP的A上位機(jī)對(duì)其進(jìn)行去除讀保護(hù);
2、配置Boot區(qū),用SRAM運(yùn)行程序,在SRAM的主程序中執(zhí)行去除RDP操作;
3、購(gòu)買(mǎi)了STLink II,下載STVP,選擇Option Byte的編程,將Option Byte重新設(shè)定為L(zhǎng)V0;
以上只驗(yàn)證了第三個(gè)方法,因?yàn)橛布呀?jīng)固定。驗(yàn)證通過(guò),完美去除RDP!
附上加入RDP的方法:
if(SET!=FLASH_OB_GetRDP()){FLASH_Unlock();//必須加,否則會(huì)出錯(cuò)FLASH_OB_Unlock();FLASH_OB_RDPConfig(OB_RDP_Level_1);FLASH_OB_Lock();FLASH_Lock();FLASH_OB_Launch();//這句話一定加上,將自動(dòng)復(fù)位加載,否則第一次上電,RDP并未生效,需要復(fù)位后才能生效。}
重大更新:
寫(xiě)這篇文章到現(xiàn)在有一年了,最近剛更新了KeilMDK5.0,也趁這個(gè)時(shí)候在Segger官網(wǎng)下載了最新的V4.78e,此時(shí)再加入RDP后,使用J-Flash的Unsecured chip功能,能成功的將之前J-Flash版本不能去除RDP的bug。