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