上一篇 | 返回主目录 | 下一篇
Autosar模块介绍:Memory_6(FLS-闪存驱动
- 1 基本术语解释
- 2 Fls组成结构图
- 3 Fls基本操作
- 3.1 通用规则说明
- 3.2 加载、执行和删除flash访问代码
- 4 Fls常用操作时序
- 4.1 初始化
- 4.2 同步操作函数
- 4.3 异步操作函数
- 4.4 取消正在执行的操作
1 基本术语解释
编号 | 缩写 | 原文 | 解释 |
---|---|---|---|
1 | Flash sector | EEPROM Abstraction | 闪存扇区是一次就可以擦除的最小的闪存量。闪存扇区的大小取决于闪存技术,因此也取决于硬件 |
2 | Flash page | —— | 闪存页面是一次可以编程的最小数量的闪存。闪存页面的大小取决于闪存技术,因此也取决于硬件 |
3 | Flash access code | —— | 闪存页面是一次可以编程的最小数量的闪存。闪存页面的大小取决于闪存技术,因此也取决于硬件 |
2 Fls组成结构图
3 Fls基本操作
3.1 通用规则说明
- FLS模块应为闪存操作提供异步服务(读/擦写)
- FLS模块不缓冲数据,FLS模块应使用通过API传递的指针所引用的应用程序数据缓冲区
- FLS模块不能保证给定应用程序缓冲区的数据一致性 4、FLS模块应静态检查静态配置参数(最迟在编译时)是否正确
- FLS模块应验证FLS模块头和源文件中的版本信息,以确保其一致性(例如,通过将模块头和源文件中的版本信息与预处理器宏进行比较
- FLS模块应将所有可用的闪存区域组合成一个线性地址空间(由参数基本地址和总大小表示)
- FLS模块应根据闪存区域的物理结构,将读、写、擦除和比较功能的地址和长度参数作为“虚拟”地址与物理地址进行比较
3.2 加载、执行和删除flash访问代码
技术背景信息: Flash技术或闪存分割可能要求访问Flash硬件的例程(内部擦除和写例程)从RAM执行,因为在编程Flash时不允许读取Flash——为代码执行所需的指令获取
- FLS模块的实现者应将闪存访问例程的代码放入一个单独的c模块Fls_ac.c中
- FLS模块的闪存访问例程只能禁用中断,并在必要时等待擦除/写命令的完成(也就是说,如果必须确保同时没有执行其他代码
- FLS模块的实现者应尽可能短地保持闪存访问代码的执行时间
- FLS模块的擦除例程应将闪存访问代码加载到FLS模块配置为加载启动时的闪存功能指针指向的闪存到RAM中的位置
- FLS模块的写入例程应将闪存写入代码加载到FLS模块配置为闪存配置中包含的写入功能指针指向的RAM的位置
- FLS模块的主要处理程序应执行闪存访问代码程序
- FLS模块的主要处理例程应通过FLS模块的配置集(编译后参数)来访问闪存访问代码例程,无论闪存访问代码例程是否已加载到RAM中,或者是否可以直接从(flash)ROM执行
- 在擦除或写作业完成或取消后,FLS模块的主处理程序应从RAM卸载(即覆盖)闪存访问代码(内部擦除/写程序),如果它们已被flash驱动程序加载到RAM
- 只有当FLS模块无法在闪存ROM中执行访问代码时,FLS模块才能将访问代码加载到RAM
4 Fls常用操作时序
4.1 初始化
4.2 同步操作函数
4.3 异步操作函数
4.4 取消正在执行的操作
上一篇 | 返回主目录 | 下一篇