u-boot的norflash驱动分析,以及一些调试信息

本文深入探讨了u-boot中针对NOR Flash的CFI和JEDEC接口,分析了它们在驱动程序中的应用。通过u-boot的调试信息,展示了如何初始化和操作Flash,包括擦除和写入过程,同时讲解了相关命令的调用顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flash 存储器接口还有两个标准:CFIJEDEC

CFI为公共Flash接口[Common Flash Interface] 用来帮助程序从Flash芯片中获取操作方式信息,而不用在程序中硬编码FlashID

    JEDEC用来帮助程序读取Flash的制造商ID和设备ID,以确定Flash的大小和算法,如果芯片不支持CFI,就需使用JEDEC了。

    CFI Flash
    自从Intel公司于1988年推出了可快速擦写的非易失性存储器Flash   Memory以来,快速擦写存储器Flash Memory技术就得到了非常迅速的发展。这主要是由于Flash   Memory具有不需要存储电容器、集成度更高、制造成本低于DRAM、使用方便,读写灵活、访问速度快、断电后不丢失信息等特点。

    虽然Flash  Memory应用越来越广泛,但由于生产Flash   Memory的半导体制造商众 多,不同厂商Flash  Memory产品的操作命令集和电气参数又千差万别,这给Flash   Memory的开发设计人员和OEM制造商带来许多不便。为了对现有的Flash   Memory的产品进行升级或使用其它公司的Flash  Memory产品替换,必须对原有的程序代码和硬件结构进行修改。为解决上述原因所引发的问题,迫切需要Flash   Memory制造商提出一个公共的标准解决方案,在这样的背景下,公共闪存接口(Common Flash  Interface),简称CFI 诞生了,CFI是一个公开的标准的从Flash   Memory器件中读取数据的接口。它可以使系统软件查询已安装的Flash   Memory器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等。利用CFI可以不用修改系统软件就可以用新型的和改进的产品代替旧版本的产品。例如:如果新型的Flash   Memory的擦除时间只有旧版本的一半,系统软件只要通过CFI读取新器件的擦除时间等参数,修改一下定时器的时间参数即可。

JEDEC
    Joint Electron Device Engineering Council 即电子元件工业联合会。JEDEC是由生产厂商们制定的国际性协议,主要为计算机内存制定。工业标准的内存通常指的是符合JEDEC标准的一组内存。

 

u-boot-2009.03为例U-Boot本身支持CFI接口规范的闪存涉及到的文件主要包括drivers/mtd/cfi-flash.ccomrhand/cmd_flash.c

 

假设要使用两片Intel 28F128K18C的兼容CFI标准的NOR型闪存,单片容量为16MB,数据线宽度为16-bit,两片并作一个32MB容量的数据宽度为32-bitBANK来使用。在头文件include/flash.h中没有定义该芯片的相关信息,可以手动添加;这并不是必须的,如果你并不需要使用这些信息的话(例如将CFI驱动所检测到的Device Id与头文件中定义的Device ID进行比对与验证)

 

/* file : include/flash.h */

 

#define INTEL_ID_28F128K18 0x88068806 /* added by aaron */

 

#define FLASH_28F128K18 0x00BA /*Intel 28F128K18 (128M=8Mx16)*/

 

要使用U-Boot自带的CFI闪存驱动,必须要作的是在include/configs/ xxxxh中添加:

 

#define CFG_FLASH_CFI

 

#define CFG_FLASH_CFI_DRIVER 1

 

/* avoid long time detection, added by aaron ,see include/flash.h */

 

#define CFG_FLASH_CFI_WIDTH FLASH_CFI_32BIT

 

 

#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */

 

#define CFG_MAX_FLASH_SECT 128 /*max number of sectors on one chip*/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值