航順芯片HK32F103系列的flash讀保護應(yīng)用及注意事項
HK32F103xC/D/E作為32位MCU,防止應(yīng)用代碼被非法讀取非常重要,除了常規(guī)的加解密模塊對flash內(nèi)容進行加解密,HK32F103還提供讀、寫保護功能。其中讀保護功能一旦使能,則外部工具無法讀取主片區(qū)flash內(nèi)容,起到保護作用。
嵌入式Flash可以跟通用存儲空間一樣進行直接尋址訪問。任何對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é)(用戶的或讀/寫保護的),在系統(tǒng)復(fù)位后才生效。
選項字節(jié)結(jié)構(gòu):
當(dāng)RDP選擇字配置值為非0xA5時,使能讀保護。
當(dāng)RDP選擇字配置值為0xA5時,解除讀保護,這個操作會引發(fā)一次主閃存的整片擦除。
讀保護狀態(tài)存儲在FLASH_OBR的bit1。
HK32F103x/C/D/E的讀保護在使用過程中需要注意的地方
問題描述:
當(dāng)HK32F103xCxDxE在讀保護作用下,客戶使用Keil+S**T-Link調(diào)試器進行下載,雖然提示下載不成功,但是芯片內(nèi)部的代碼部分被擦除。有客戶反饋,下載不成功,要保持設(shè)備原有功能正常。
Keil+Jlink 沒有該問題。因為Jlink,會在下載前,可選擇地去除讀保護,如下:
根本原因:
HK32F103xCxDxE 在讀保護模式下,debugger選擇Sector Erase,會將前4KB以外的空間擦除掉。
解決方案:
用 S**T-Link Utility上位機先去掉讀保護,再下載或者仿真。如下,[Target]-->[Option Bytes]:
如需要了解更多航順MCU產(chǎn)品,請聯(lián)系航順核心代理商,穎特新科技,或者掃碼聯(lián)系我們!
在之前的介紹中,我們也為大家介紹了《航順芯片HK32F103xC/D/E-同步注入模式下,ADC2工作狀態(tài)不能單獨配置》,也是目前我們主推的非常成熟的解決方案!
編輯:zzy 最后修改時間:2022-05-28