Autosar模块介绍:FEE(Flash模拟EEPROM
1 基本术语解释
2 Ea组成结构图
3 Ea基本操作
3.1 通用操作
- 为EEPROM定义了异步读、写、擦除以及比较服务
- Eep模块不能缓冲作业,一次只能接受一个作业。在作业处理过程中,Eep模块不接受其他作业
- Eep模块不能缓冲要读或写的数据,将通过API传递的指针引用的应用程序数据缓冲区
3.2 作业的进程(通用需求)
- 如果EEPROM支持中断处理,则可以设置中断的处理方式,否则只能轮询的处理
- 如果启用中断控制作业处理,中断服务例程(Eep_Irq.c)需要
3.3 读操作过程
- 提供两种不同的操作模式: Normal Mode、Fast Mode
- 如果外部EEPROM不支持Burst Mode,模块将会处理为Normal Mode
- EepNormalReadBlockSize参数为Normal Mode单周期读取的字节数据长度,超过后会进行多次读取
- EepFastReadBlockSize参数为Fast Mode单周期读取的字节数据长度,超过后会进行多次读取
- 如果操作成功,将会将EEPROM的状态切换成IDLE,并将当前作业状态修改为OK。并且如果配置了通知函数,将会进入EepJobEndNotification
- 当检测到错误时,将会忽略当前的操作,并且将EEPROM切换成IDLE,并将当前作业状态修改为Fail。且如果配置了通知函数,将会进入EepJobErrorNotification
3.4 写操作过程
- Eep模块只能在一个作业处理周期内向EEPROM硬件写入(和擦除)多个字节
- 对于内部EEPROM,可以写入单个字节。外部EEPROM可以在RAM中写入多个字节,然后写入EEPROM
- 存在两个不同的操作模式:Normal Mode、Fast Mode
- 如果外部EEPROM不支持Burst Mode,模块将会处理为Normal Mode
- 通过参数EepNormalWriteBlockSize可配置正常模式下单个周期写入参数长度
- 通过参数EepFastWriteBlockSize可配置快速模式下单个周期写入参数长度
- 如果EEPROM硬件没有自动完成EEPROM单元,则Eep模块应在写入它之前擦除EEPROM单元
- 如果要写入的字节数小于可擦除和/或可写的数据单元,则Eep模块应通过执行读-修改-写操作来保存受影响的EEPROM单元格的数据
- 如果给定参数(电子地址和长度)与可擦除/可写数据单元不对齐,Eep模块应通过读修改-写操作保存受影响的EEPROM单元的数据
- 通过EepJobEndNotification通知完成写操作,通过EepJobErrorNotification通知错误状态
3.5 擦除过程
- Eep模块应仅在一个作业处理周期内擦除EEPROM硬件支持的EEPROM字节数
- 如果EEPROM硬件支持,并且给定参数(可擦除块地址和长度)与可擦除块对齐,则Eep模块应使用块擦除命令
- 如果给定的擦除参数(EEPROM地址和长度)与可擦除的数据单元不对齐,Eep模块应通过读-修改-写操作保存受影响的EEPROM单元的内容
- 通过EepJobEndNotification通知完成擦除操作,通过EepJobErrorNotification通知错误状态
3.6 比较过程
通过EepJobEndNotification通知完成状态,若出现错误通过EepJobErrorNotification通知上层软件,结果不相等通过Eep_JobErrorNotification通知上层软件