一种支持多种闪存的自适应驱动设计
2 Flash自适应方法设计
传统的Flash驱动Software_A中只为Flash_A提供了驱动接口函数。自适应Flash驱动Software_AB在硬件接口层中同时为Flash_A和Fla sh_B各提供一套驱动接口函数,系统通过读取Flash存储器的ID号来识别当前Flash,从而选择适合当前Flash存储器的接口函数。以此类推,如果Software_ABC中添加了Flash_C的接口操作函数,则Software_ABC也添加对Flash_C的支持,实现3种Flash存储器的自适应。
2.1 Flash自适应方法模型及实现
自适应模型与传统模型的比较如图4所示。自适应驱动方法在传统驱动方法的基础上添加了自适应层,硬件驱动层里有多款Flash的接口操作函数。
一个驱动程序中存在多种Flash的接口函数,系统在自适应层中分三步来寻找对应Flash的接口函数。如图5所示,自适应层实现方法如下:
①读取Flash设备ID;
②fLash_nor_probe(),系统根据读取到的ID,遍历指针数组*(spansion[]),寻找当前Flash的驱动信息,并将之存储在全局变量中;
③根据相应的全局变量,自动寻找相应的驱动函数。
2.2 Flash接口函数的实现
本文以Toshiba公司ty5701111183kc04的Flash ID读取为例,介绍NOR Flash驱动函数的实现方法。
Flash ID读取流程:
①发送复位指令0xf0令Flash复位;
②给Flash发送读取ID的命令序列;
③读取Flash ID存储到全局变量中。
评论