HK32F103xC/D/E
作為32位MCU,防止應(yīng)用代碼被非法讀取非常重要,除了常規(guī)的加解密模塊對(duì)flash內(nèi)容進(jìn)行加解密,HK32F103還提供讀、寫(xiě)保護(hù)功能。其中讀保護(hù)功能一旦使能,則外部工具無(wú)法讀取主片區(qū)flash內(nèi)容,起到保護(hù)作用。
嵌入式Flash可以跟通用存儲(chǔ)空間一樣進(jìn)行直接尋址訪問(wèn)。任何對(duì)Flash內(nèi)容的讀操作都須經(jīng)過(guò)專門(mén)的判斷過(guò)程。取指令和取數(shù)據(jù)都是通過(guò)AHB總線讀取訪問(wèn)。它主要的工作就是產(chǎn)生控制信號(hào),然后讀取Flash里面的信息。
HK32F103x/C/D/E的選項(xiàng)字節(jié)說(shuō)明
選項(xiàng)字節(jié)由用戶根據(jù)應(yīng)用配置(例如:可以選擇使用硬件看門(mén)狗或軟件看門(mén)狗)。對(duì)于0x1FFF F800~0x1FFFF810地址的選項(xiàng)字,在選項(xiàng)字節(jié)中每個(gè)32位的字被劃分為下述格式:
選項(xiàng)字節(jié)格式:
注意1:編程時(shí),反碼由硬件自動(dòng)實(shí)現(xiàn),軟件寫(xiě)無(wú)效。選項(xiàng)字節(jié)的組織結(jié)構(gòu)如下表所示。選項(xiàng)字節(jié)可以從下表列出的存儲(chǔ)器地址讀出,或從選項(xiàng)字節(jié)寄存器 (FLASH_OBR) 讀出。
注意2:新寫(xiě)入的選項(xiàng)字節(jié)(用戶的或讀/寫(xiě)保護(hù)的),在系統(tǒng)復(fù)位后才生效。
選項(xiàng)字節(jié)結(jié)構(gòu):
HK32F103x/C/D/E的讀保護(hù)的設(shè)置:當(dāng)RDP選擇字配置值為非0xA5時(shí),使能讀保護(hù)。
當(dāng)RDP選擇字配置值為0xA5時(shí),解除讀保護(hù),這個(gè)操作會(huì)引發(fā)一次主閃存的整片擦除。
讀保護(hù)狀態(tài)存儲(chǔ)在FLASH_OBR的bit1。
HK32F103x/C/D/E的讀保護(hù)在使用過(guò)程中需要注意的地方
問(wèn)題描述:
當(dāng)HK32F103xCxDxE在讀保護(hù)作用下,客戶使用Keil+S**T-Link調(diào)試器進(jìn)行下載,雖然提示下載不成功,但是芯片內(nèi)部的代碼部分被擦除。有客戶反饋,下載不成功,要保持設(shè)備原有功能正常。
Keil+Jlink 沒(méi)有該問(wèn)題。因?yàn)镴link,會(huì)在下載前,可選擇地去除讀保護(hù),如下:
根本原因:
HK32F103xCxDxE 在讀保護(hù)模式下,debugger選擇Sector Erase,會(huì)將前4KB以外的空間擦除掉。
解決方案:
用 S**T-Link Utility上位機(jī)先去掉讀保護(hù),再下載或者仿真。如下,[Target]-->[Option Bytes]: