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