韦东山嵌入式Linux学习----014 NOR Flash(1)

NOR Flash原理与硬件操作

/*
 *硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
 *软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
 *参考资料:《嵌入式Linux应用开发完全手册》韦东山,开发版原理图,MX29LV160DBTI-70G(NOR FLASH) datasheet,MX29LV800BBTC datasheet
*/


一、什么是NOR Flash

1、简介

  NOR Flash是Intel在1988年创建的一种非易失闪存技术,是市场上两种主要的非易失闪存技术之一,另一项技术就是Nand Flash,由1989年东芝公司发布建立。

2、特点

将通过与Nand Flash对比介绍

指标 NAND Flash NAND Flash
容量 1MB~32MB 16MB~512MB
XIP Yes No
易用性 容易 复杂
主要用途 用于保存代码和关键数据 用于保存数据

二、怎么读NOR Flash

方法:使用UBOOT体验操作NOR Flash

1、查询手册命令

参考芯片手册如下:

在这里插入图片描述

分析:
1、对于NOR Flash 操作每个命令都需要输入对应的指令
2、其中某些命令由于芯片实际连接的位宽不同而指令不同,例如Read Silicon ID。

2、查看NOR Flash硬件原理图

在这里插入图片描述

分析:
1、数据线有16条,可以知道应该使用Word对应指令。
2、连接CPU的地址线与NOR Flash的地址数不同A n对应的是LADDR n+1
3、往地址写数据时,手册指令的地址需要左移一位,即乘2.

3、 实例操作:读 ID

查询手册可知,指令如下:
往地址555H写AAH
往地址2AAH写55H
往地址555H写90H
在这里插入图片描述
读0地址得到厂家ID: C2H
读1地址得到设备ID: 22DAH或225BH
退出读ID状态: 给任意地址写F0H

由于A n对应的是LADDR n+1,所以2440发出(555h<<1),NOR才能收到555h这个地址即:
往地址AAAH写AAH
往地址554写55H
往地址AAAH写90H
读0地址得到厂家ID: C2H
读2地址得到设备ID: 22DAH或225BH
代码表示为:

mw.w aaa aa      //往地址AAAH写AAH                      
mw.w 554 55      //往地址554写55H                      
mw.w aaa         //90往地址AAAH写90H                     
md.w 0 1         //读0地址得到厂家ID: C2H             
md.w 2 1         //读2地址得到设备ID: 22DAH或225BH      
mw.w 0 f0        //退出读ID状态:                        

三、怎么写NOR Flash

通过学习以及查询资料知道NOR Flash可以像内存一样读,但是它不可以像内存一样写,需要先擦除,确保地址上原先数据为0xffff,才可以进行写操作。

1、查询手册命令

擦除命令
往地址555H写AAH
往地址 2AAH写55H
往地址555H写80H

往地址555H写AAH
往地址 2AAH写55H
往地址SA写30H
SA为需要写入数据的地址
写命令,对应Program一栏
往地址555H写AAH
往地址 2AAH写55H
往地址555H写A0H
往地址PA写PD
在这里插入图片描述

2、实例操作:写数据

由于A n对应的是LADDR n+1,所以2440发出(555h<<1),NOR才能收到555h这个地址即:
擦除
往地址555H写AAH
往地址 2AAH写55H
往地址555H写80H

往地址555H写AAH
往地址 2AAH写55H
往地址SA写30H

往地址AAAH写AAH
往地址 554H写55H
往地址AAAH写A0H
往地址PA写PD
代码表示为:

/*   擦除   */
mw.w aaa aa          //往地址AAAH写AAH
mw.w 554 55          //往地址 554H写55H 
mw.w aaa 80          //往地址AAAH写A0H 

mw.w aaa aa          //往地址AAAH写AAH
mw.w 554 55          //往地址 554H写55H 
mw.w 100000 30          //往地址AAAH写AAH

/*  写   */
mw.w aaa aa          //往地址AAAH写AAH
mw.w 554 55          //往地址 554H写55H 
mw.w aaa a0          //往地址AAAH写A0H 
mw.w 100000 1234   // 往地址0x10000000写1234
md.w 100000 1      //显示地址为0x10000000上读数据

4、疑问

问题1:既然上面你的指令的第一条就是写入了,那么我直接执行mw.w PA PD 这个指令可以写入吗?
解答:
1、试验
直接执行以下指令:

md.w 100000 1      //用于查询地址上原来的数据
mw.w 100000 2345   //写入信息
md.w 100000 1      //用于查询地址上的数据

可以看到2345没有写进去,所以想要在NOR Flash上进行写操作正确步骤为先擦除,后烧写

四、CFI模式

1、什么是CFI模式

  CFI接口是由Intel, AMD, Sharp, Fujutsu推动JEDEC制定的一个通用接口,用来帮助程序读取Flash的制造商ID设备ID,确定Flash的大小,获取Flash的各个物理特性,比如block块的擦除时间等。CFI标准目前只支持Parallel Nor Flash,还不支持SPI Flash和Spansion的ORNAND Flash。

2、CFI模式中可以查询的具体信息

通过查询MX29LV160DBTI-70G(NOR FLASH) datasheet第26页可知CFI模式可查询到如下信息:
Identifcation Data Values(识别码):

在这里插入图片描述

  对于支持CFI模式的设备,可以通过读取地址0x10到0x12中的数据,得出字符为QRY则表示设备支持CFI模式。

System Interface Data Values(系统接口数据值)

在这里插入图片描述

  通过读取图中的地址,可以得到NOR Flash中的电气特性

Device Geometry Data Values(设备物理信息)

在这里插入图片描述

  通过读取图中的地址,可以得到NOR Flash中的物理信息,如内存大小、扇区块数等等。
Primary Vendor-Specifc Extended Query Data Values(原始设备提供商查询信息)

在这里插入图片描述

  通过读取图中的地址,可以得到NOR Flash中的提供厂商信息。

3、如何进入CFI模式

通过上面的芯片手册图可以知道:
往55H写入98H
由于A n对应的是LADDR n+1,所以2440发出(555h<<1),NOR才能收到555h这个地址即:
往地址AAAH写98H
代码表示为

mw.w aaa 98

在下一讲中,讲通过进入CFI查询模式,查询并打印出容量和各个扇区起始地址。

发布了40 篇原创文章 · 获赞 29 · 访问量 3613

猜你喜欢

转载自blog.csdn.net/weixin_42813232/article/details/104427121
今日推荐