TPMS芯片之英飞凌SP40PLUS的内存
5.6内存
基于8051的微控制器核心能够寻址64kB宽的代码内存。在SP40PLUS中,此地址范围用于以下类型的内存:
•用于固件的40 kB ROM
•用于工厂配置数据的1 kB闪存(IFX配置扇区)
•12 kB闪存,用于存储应用程序代码(用户代码扇区)
•用于用户配置数据的256字节闪存(用户配置扇区)
•5×32字节保留RAM
图7显示了相应的内存映射。ROM扇区和IFX配置扇区的内容不能更改。这两个扇区都由出厂设置的锁字节1保护,以防读取。
每个闪存字节由一个五位纠错码(ECC)保护。编程闪存字节时,自动生成ECC位。读取闪存字节时,纠错单元可以纠正所有单位错误,并检测所有双位错误。
5.6.1锁字节概念概述
每个闪存扇区的末尾都有一个锁定字节,用户可以启用该字节,以保护该扇区不被覆盖和读取。要激活锁字节,必须使用值0x69写入。但是,出于安全原因,其他与0x69的汉明距离为3的锁字节值也被视为有效。这两个锁字节并不相互独立:锁字节2的优先级高于锁字节3,
i、 e.锁定字节3只有在锁定字节2已启用时才能生效。此外,启用锁定字节仅在设备重置后生效。
图8显示了程序模式和正常模式下可能的锁字节设置及其对闪存扇区的影响。如果锁定字节2处于活动状态,则无法使用调试模式。
5.6.2闪存编程
对于在编程模式下编程用户代码扇区或用户配置扇区,有两个I2C命令可用。擦除扇区命令用于整体删除扇区,闪存写入行命令用于编程32字节长的闪存行。为了启用锁定字节LB2或LB3,在使用闪存写行命令写入相应行时,必须将锁定字节位置的值定义为0x69。如果锁定字节应保持禁用状态,则其值必须定义为0x00。I2C命令Set User-Config Sector Lock还允许在写入最后一行后启用LB3。LB2没有这样的I2C命令。
为了在正常模式下编程用户配置扇区,即在运行期间,固件函数Lib_Fl_Erase_user_Config_sector、Lib_Fl_Write_Line和Lib_Fl_Change_UCS_Line()可用。为了设置用户配置锁定字节(LB 3),在写入或更改用户配置扇区的最后一行时,最后一个字节的值必须定义为0x69。
注意:IFX建议在断开设备电源之前,使用I2C命令PM flash Shut Down关闭闪存。
注:来源于网络整理