【车载开发系列】Flash支持的安全功能
【车载开发系列】Flash支持的安全功能
这里写目录标题
- 【车载开发系列】Flash支持的安全功能
- 一. FlashMemory概念
- 二. Flash Memory特性
- 1)包括代码闪存和数据闪存
- 2)闪存编程方法
- 3)支持BGO(后台地面操作)
- 4)闪存数据安全
- 5)选项字函数
- 6)支持代码flash和数据flash中的ECC (error detection/ correcting)功能内存
- 三. Flash支持的安全功能
- 1)OPT(Once Time Program)
- 2)认证ID
- 3)禁止连接专用闪存程序
- 4)禁止块擦除命令
- 5)禁止编程命令
- 6)禁止读命令
- 四. Flash支持的保护功能
- 1)块保护
- 2)硬件保护
- 3)变量重置矢量
- 五. 选项字OPBT
- 1)OPJTAG
- 2)WDT1_3
- 3)WDT1_1
- 3)WDT1_0
- 4)WDT0_3
- 5)WDT0_1
- 6)WDT0_0
- 7)WDT_2
- 8)WDT_1
- 9)WDT_0
- 10)CANFDCRC
- 11)RESETOUTEN
- 12)CVM_HD_EN
- 13)CVM_LD_EN
一. FlashMemory概念
FLASH存储器的英文名称是Flash Memory,一般简称为Flash,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势)
过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)
二. Flash Memory特性
1)包括代码闪存和数据闪存
1)代码闪存可以存储程序代码和数据,具有用户区和扩展用户区。
2)数据闪存用于存储数据。
2)闪存编程方法
1)通过串行接口的闪存编程和用户对闪存的编程支持程序(自编程)。
3)支持BGO(后台地面操作)
1)BGO函数允许在数据闪烁时在代码闪存中执行程序正在编程/擦除内存
4)闪存数据安全
1)支持安全功能,防止非法篡改或读取数据闪存。
2)支持保护功能,防止flash错误覆盖。
5)选项字函数
1)设置端口、WDTA、CVM和CAN FD CRC释放复位后的操作(支持)仅为溢价,和重置。
6)支持代码flash和数据flash中的ECC (error detection/ correcting)功能内存
1)内置ECC功能,可检测2位错误和检测/纠正1位错误。
三. Flash支持的安全功能
1)OPT(Once Time Program)
它就是我们平时讲到的一次性编程。
OTP可以为用户区和扩展区的每个块单独设置。
用户区代码闪存。当对一个区域进行OTP设置时,禁止串行编程和自编程。
一旦设置,OTP设置不能被释放。此外,自从执行禁止在OTP的任何区域使用清除配置命令已设置,则不可能将安全设置从“禁止”更改为“允许”。
Lock-Bit和OTP(Once Time Program)不要Set,否则会导致芯片锁死
2)认证ID
身份验证的结果可用于控制专用闪存编程器的连接进行串行编程。身份验证的结果也可以用来控制自编程的启用。
3)禁止连接专用闪存程序
禁止连接专用的闪存程序进行串行编程。由于在禁止连接专用闪存编程程序时也禁止执行配置清除命令,因此不可能将安全设置从“禁止”更改为“允许”
4)禁止块擦除命令
禁止在串行编程时执行块擦除命令。当禁止块删除命令时,也禁止执行配置清除命令,因此不可能将安全设置从“禁止”更改为“允许”。
5)禁止编程命令
禁止在串行编程时使用块擦除命令和编程命令。只有执行配置清除命令才能解除禁止。
6)禁止读命令
禁止在串行编程时读命令。只有执行配置清除命令才能解除禁止。
四. Flash支持的保护功能
1)块保护
锁位设置可以单独进行,以启用或禁用编程和擦除代码闪存的用户区和扩展用户区的每个块。禁止对已设置锁定位并使能锁定位功能的区域进行编程和自编程擦除。当锁位功能在启用后被禁用时,编程或擦除可以再次进行。当一个代码块被擦除时,该块的锁位也被擦除
2)硬件保护
FLMD0引脚上的级别可以设置为禁止编程和擦除代码闪存。
FLMD0 = 0:禁止编程
FLMD0 = 1:允许编程
3)变量重置矢量
保护设置包括对复位矢量的控制。在编程一个新的引导程序而保留现有的引导程序之后,更改重置向量是一种安全的方法,可以将其更改到包含新的引导程序的区域。
可以使用重置向量指定的区域是用户区和扩展用户区
五. 选项字OPBT
闪存的选项字节是一个扩展区域,保存用户为各种目的指定的数据。由选项字节指定的外围模块等的初始设置在从重置状态释放时生效。
如果OPBT不对,可能导致其他调试器无法刷写程序,时钟不对导致CAN收发异常,等一系列问题
在写入OPBT之前,可以先读取下硬件目前的OPBT,如果新写入的有问题,还可以重新写入原来的,在将程序写入闪存之前,一定要设置与下面列出的可选函数相对应的选项字节区域。
选项字OPTION配置是RH850的一项重点。
闪存的选项字节是一个扩展区域,并保存用户为各种目的指定的数据。由选项字节指定的外围模块等的初始设置在从复位状态释放时生效
1)OPJTAG
bitPos30 -29。这些位控制端口组JP0的功能。00: JP0用于通用/替代功能端口。
01: JP0用于LPD 4引脚模式
10: JP0用于LPD 1引脚模式
11: JP0用于Nexus
2)WDT1_3
指定WDTA1的激活码方法。
0:固定激活码
1:可变激活码
3)WDT1_1
指定WDTA1的启动模式。
0:软件触发启动方式
1:默认启动模式
3)WDT1_0
启用或禁用WDTA1。bitPos23位。
0:禁用WDTA1
1:启用WDTA1
4)WDT0_3
bitPos22位。指定WDTA0的激活码方法。
0:固定激活码
1:可变激活码
5)WDT0_1
bitPos20。指定WDTA0的启动模式。
0:软件触发启动方式
1:默认启动模式
6)WDT0_0
启用或禁用WDTA0。
0:禁用WDTA0
1:启用WDTA0
7)WDT_2
bitPos18。控制WDTA0和WDTA1的溢出间隔时间。这些位指定WDTAnMD.WDTAnOVF[2:0]的重置值。
8)WDT_1
bitPos17。控制WDTA0和WDTA1的溢出间隔时间。这些位指定WDTAnMD.WDTAnOVF[2:0]的重置值。
9)WDT_0
bitPos16。控制WDTA0和WDTA1的溢出间隔时间。这些位指定WDTAnMD.WDTAnOVF[2:0]的重置值
10)CANFDCRC
CAN FD CRC协议
0:原始协议
1:新协议
11)RESETOUTEN
RESETOUT控制
0:关闭复位
1:复位使能
12)CVM_HD_EN
bitPos5;高压监控器启用
0:关闭高压检测
1:开启高压检测
13)CVM_LD_EN
bitPos4;启用低压监控器
0:关闭低压检测
1:开启低压检测