DSP芯片解密技術(shù)之EEPROM編程算法

來源:IC解密特性的基礎(chǔ)上,才能為芯片解密選擇最安全可靠、最合理的解密方案。(注:以DSPIC30F系列芯片解密為例)   一、數(shù)據(jù)EEPROM 編程   與程序存儲(chǔ)器類似, EEPROM 存儲(chǔ)塊(block)是通過讀表和寫表操作訪問的。因?yàn)镋EPROM存儲(chǔ)器只有16 位寬,所以其操作不需要使用TBLWTH 和TBLRDH 指令。數(shù)據(jù)EEPROM 的編程和擦除步驟與閃存程序存儲(chǔ)器類似,區(qū)別在于數(shù)據(jù)EEPROM 為快速數(shù)據(jù)存取進(jìn)行了優(yōu)化。在數(shù)據(jù)EEPROM 上可以執(zhí)行以下編程操作:   擦除一個(gè)字   擦除一行(16 個(gè)字)   編程一個(gè)字   編程一行(16 個(gè)字)   在正常操作中(整個(gè)VDD 工作范圍) ,數(shù)據(jù)EEPROM 可讀寫。與閃存程序存儲(chǔ)器不同,在EEPROM 編程或擦除操作時(shí),正常程序執(zhí)行不會(huì)停止。EEPROM 擦除和編程操作是通過NVMCON 和NVMKEY 寄存器執(zhí)行的。編程軟件負(fù)責(zé)等待操作完成。軟件可以使用以下三種方法之一檢測(cè)EEPROM 擦除或編程操作的完成時(shí)間:   用軟件查詢WR 位(NVMCON<15>)。當(dāng)操作完成時(shí)WR 位會(huì)被清零。   用軟件查詢NVMIF 位(IFS0<12>)。當(dāng)操作完成時(shí)NVMIF 位會(huì)被置1。   允許NVM 中斷。當(dāng)操作完成時(shí), CPU 會(huì)被中斷。ISR 可以處理更多的編程操作。   二、EEPROM 單字編程算法   1. 擦除一個(gè)EEPROM 字。   設(shè)置NVMCON 寄存器以擦除一個(gè)EEPROM 字。   將要擦除的字的地址寫入TBLPAG 和NVMADR 寄存器。   將NVMIF 狀態(tài)位清零并允許NVM 中斷(可選)。   將密鑰序列寫入NVMKEY。   將WR 位置1。這將開始擦除周期。   查詢WR 位或等待NVM 中斷。   2. 將數(shù)據(jù)字寫入數(shù)據(jù)EEPROM 寫鎖存器。   3. 將數(shù)據(jù)字編程入EEPROM。   設(shè)置NVMCON 寄存器以編程一個(gè)EEPROM 字。   將NVMIF 狀態(tài)位清零并允許NVM 中斷(可選)。   將密鑰序列寫入NVMKEY。   將WR 位置1。這將開始編程周期。   查詢WR 位或等待NVM 中斷。   三、EEPROM 行編程算法   如果需要將多個(gè)字編程入EEPROM,每次擦除并編程16 個(gè)字(1 行)會(huì)比較快。向EEPROM編程16 個(gè)字的過程如下:   1. 讀一行數(shù)據(jù)EEPROM (16 個(gè)字)并以數(shù)據(jù)“鏡像”方式保存到數(shù)據(jù)RAM。要修改的EEPROM 部分必須處于偶數(shù)16 字地址邊界內(nèi)。   2. 使用新數(shù)據(jù)更新數(shù)據(jù)鏡像。   3. 擦除EEPROM 行。   設(shè)置NVMCON 寄存器以擦除EEPROM 的一行。   將NVMIF 狀態(tài)位清零并允許NVM 中斷(可選)。   將密鑰序列寫入NVMKEY。   將WR 位置1。這將開始擦除周期。   查詢WR 位或等待NVM 中斷。   4. 將16 個(gè)數(shù)據(jù)字寫入數(shù)據(jù)EEPROM 寫鎖存器。   5. 將一行數(shù)據(jù)編程到數(shù)據(jù)EEPROM。   設(shè)置NVMCON 寄存器以編程EEPROM 的一行。   將NVMIF 狀態(tài)位清零并允許NVM 中斷(可選)。   將密鑰序列寫入NVMKEY。   將WR 位置1。這將開始編程周期。   查詢WR 位或等待NVM 中斷。