【车载开发系列】Flash支持的安全功能

news/2024/11/25 21:21:28/

【车载开发系列】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:开启低压检测


http://www.ppmy.cn/news/1255336.html

相关文章

Java CompletableFuture使用示例

在我之前的文章IO密集型服务提升性能的三种方法中提到过,提升IO密集型应用性能有个方式就是异步编程,实现异步时一定会用到Future,使用多线程Future我们可以让多个任务同时去执行,最后统一去获取执行结果,这样整体执行…

Agent举例与应用

什么是Agent OpenAI 应用研究主管 Lilian Weng 在一篇长文中提出了 Agent LLM(大型语言模型)记忆规划技能工具使用这一概念,并详细解释了Agent的每个模块的功能。她对Agent未来的应用前景充满信心,但也表明到挑战无处不在。 现…

Android11适配已安装应用列表

Android11适配已安装应用列表 之前做过已安装应用列表的适配,最近国内版SDK升级到33和隐私合规遇到很多问题,于是把已安装应用列表记录一下: 1、在Android11及以上的适配: package com.example.requestinsttallapplistdemoimpo…

DNA模糊匹配(动态规划)

我做动态规划还是少的 只会做那些显而易见的动态规划题&#xff08;这题是看了给出来的解题思路做的&#xff09; 以后可能就会做与这类似的了 代码如下&#xff1a; #include<stdio.h> #include<string.h> int get_min(int a, int b, int c); int min_l[301][…

java学习part32StringBuffer和StringBuilder

Java中的值传递和引用传递&#xff08;详解&#xff09; - 知乎 (zhihu.com) 146-常用类与基础API-StringBuffer与StringBuilder的源码分析、常用方法_哔哩哔哩_bilibili 1. 2.扩容机制 不够用&#xff1a;长度为 原长度*22&#xff1b;如果还不够&#xff0c;那么就扩容到目…

Clickhouse在货品标签场景的应用

背景 在电商场景中&#xff0c;我们经常需要对货品进行打标签的操作&#xff0c;简单来说就是对货品进行各种分类&#xff0c;按照价格段进行分组&#xff0c;此时运营人员就可以通过价格段捞取到满足条件的商品了&#xff0c;本文就来简单看下这个场景如何在clickhouse中实现…

【无标题】心灯

习得性无助其实就是心灯灭了&#xff0c;所以连反抗的意识都没有了。 遇到困难&#xff0c;直接放弃&#xff1b;遇到竞争&#xff0c;直接退出&#xff1b;遇到冲突&#xff0c;直接装死。 为什么&#xff1f; 因为被内心的恐惧吓着了&#xff0c;被内心的不自信封印了。 不…

MySQL电商管理系统练习题及答案

一 、表结构 用户表(user)&#xff1a;id(主键)、username、password、email、phone、age商品表(product)&#xff1a;id(主键)、name、price、stock、description订单表(order)&#xff1a;id(主键)、user_id(外键&#xff0c;关联用户表)、total_price、status、create_time…