Common Flash Interface (CFI)规范定义NOR flash和CPU之间的接口,方便CPU查询NOR flash的重要信息。
1. 如何进入CFI查询模式
此表表示访问Nor数据或者读查询结构的时序
- 读Nor数据或者读查询结构数据都至少要2个总线周期,第一个周期写一个特定的命令,第二个周期读Array地址或者Query地址数据
- spec中指定的地址都是基于chip支持的最大字长而言的
- 让chip进入query mode,需要往55H地址写98H
2. device type/device mode
下表表示不同device type/device mode的情况下,让chip进入query mode的地址和command code的差别
- 表格第一列device_type/device_mode,device_type表示chip支持的最大字长,device_mode表示chip被配置为多少位。比如,x16 device/x8 mode,表示chip的总线位宽最大支持16bit,但是配置为8bit mode,一般都是通过BYTE# pin配置为低电平来选择8bit mode.
- 第2/3列表示以chip最大总线位宽为单位时,向chip发送地址/command code时的格式。Query 模式下,data只是使用数据总线的低8位(D7 - D0),总线的高位置为0。因此发送98H Query command code时,16-bit总线时为0098h, 32-bit总线时为00000098h
- 第4/5列表示以字节为单位时,向chip发送地址/command code时的格式。其中,发送地址=字长地址 x 字长数。比如对于x16 device,发送地址=55H x 2,因为chip内部一个地址表示两个字节的空间,因此字节地址空间要乘以2.对于数据,和第三列类似,总是使用数据总线的低8位。
- N/A* 因为字长地址无法表示所有的字节地址,比如x16的字长为2B,地址总是偶数的,无法表示基数地址
下表表示不同device type/device mode的情况下,查询结构的数据输出格式的差别
- 表格各个列的含义与上表类似
- 地址10H的含义见表6
重点解释下第五列,当为x8 device/x8 mode时,读10H,得到查询结构的10H的3个字节'Q','R','Y'。 当为x16 device/x16 mode时,输出的数据只出现在低8位,高位置0,所以,21H 为 0。x32 device/x32 mode情况类似.
当为x16 device/x8 mode时,理解为,16bit字长的地址对应8bit的数据,和x16 device/x16 mode不同的是,x8 mode时一个字长内高字节数据不是置0,而是重复低字节的数据。TODO
3. cfi查询输出结构
3.1 基本查询结构
3.1.1 查询ID信息
0x10用来判断NOR Flash是非支持CFI接口。
0x13定义了NOR Flash使用的主算法命令集,如intel扩展命令集是0001, AMD扩展命令集是0002.
0x15定义了主算法扩展查询表的地址,表B.1给了这个地址的结构。
3.1.2 查询NOR Flash系统接口信息
3.1.3 查询NOR Flash几何结构信息
3.2 扩展查询结构
参考:
- JEP137B: Common Flash Interface (CFI) ID Codes
- JESD68.01: Common Flash Interface (CFI)
- CFI接口