多语言展示
当前在线:934今日阅读:176今日分享:34

怎样在DSP芯片解密技术中应用EEPROM编程算法

对DSP芯片解密,首先需要对芯片内部结构及其算法特征进行深入分析和理解,这是专业解密工程师的一项必修课,因为只有在充分理解芯片内部结构和加解密特性的基础上,才能为芯片解密选择最安全可靠、最合理的解密方案。  在这里,解密研究所解密工程师为大家提供DSP芯片解密技术分析中对EEPROM编程算法的理解,供大家参考。(注:以DSPIC30F系列芯片解密为例)
步骤/方法
1

数据EEPROM编程。  与程序存储器类似,EEPROM 存储块(block)是通过读表和写表操作访问的。因为EEPROM存储器只有16 位宽,所以其操作不需要使用TBLWTH 和TBLRDH 指令。数据EEPROM 的编程和擦除步骤与闪存程序存储器类似,区别在于数据EEPROM 为快速数据存取进行了优化。在数据EEPROM 上可以执行以下编程操作:   擦除一个字   擦除一行(16个字)   编程一个字   编程一行(16个字)  在正常操作中(整个VDD 工作范围),数据EEPROM可读写。与闪存程序存储器不同,在EEPROM 编程或擦除操作时,正常程序执行不会停止。EEPROM擦除和编程操作是通过NVMCON 和NVMKEY 寄存器执行的。编程软件负责等待操作完成。软件可以使用以下三种方法之一检测EEPROM 擦除或编程操作的完成时间:   用软件查询WR 位(NVMCON<15>)。当操作完成时WR 位会被清零。   用软件查询NVMIF 位(IFS0<12>)。当操作完成时NVMIF 位会被置1。   允许NVM 中断。当操作完成时,CPU 会被中断。ISR 可以处理更多的编程操作。

2

EEPROM 单字编程算法。 1 擦除一个EEPROM 字。   设置NVMCON 寄存器以擦除一个EEPROM 字。   将要擦除的字的地址写入TBLPAG 和NVMADR 寄存器。   将NVMIF 状态位清零并允许NVM 中断(可选)。   将密钥序列写入NVMKEY。   将WR 位置1。这将开始擦除周期。   查询WR 位或等待NVM 中断。 2 将数据字写入数据EEPROM 写锁存器。 3 将数据字编程入EEPROM。   设置NVMCON 寄存器以编程一个EEPROM字。   将NVMIF 状态位清零并允许NVM 中断(可选)。   将密钥序列写入NVMKEY。   将WR 位置1,这将开始编程周期。   查询WR位或等待NVM 中断。

3

EEPROM 行编程算法。  如果需要将多个字编程入EEPROM,每次擦除并编程16 个字(1 行)会比较快。向EEPROM编程16 个字的过程如下:   1 读一行数据EEPROM(16 个字)并以数据“镜像”方式保存到数据RAM。要修改的EEPROM 部分必须处于偶数16 字地址边界内。   2 使用新数据更新数据镜像。   3 擦除EEPROM行。    设置NVMCON寄存器以擦除EEPROM的一行。    将NVMIF状态位清零并允许NVM中断(可选)。    将密钥序列写入NVMKEY。    将WR 位置,这将开始擦除周期。    查询WR 位或等待NVM 中断。   4 将16 个数据字写入数据EEPROM 写锁存器。   5 将一行数据编程到数据EEPROM。    设置NVMCON 寄存器以编程EEPROM的一行。    将NVMIF状态位清零并允许NVM中断(可选)。    将密钥序列写入NVMKEY。    将WR 位置1,这将开始编程周期。    查询WR 位或等待NVM 中断。

推荐信息