ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

S3C2440-裸机篇-09 | 使用S3C2440操作Nor Flash

2021-07-16 23:31:56  阅读:244  来源: 互联网

标签:Flash 写入 地址 裸机 mw S3C2440 ID Nor


1. Nor Flash与Nand Flash

NorNand
接口引脚多,类似于RAM引脚较少
容量小(1-32MB)大(128-512MB)
读操作简单,和RAM相同简单,和RAM相同
写操作发出特定命令才能写入发出特定命令才能写入
价格便宜
比较无坏块有坏块
XIP可以不可以
应用场合存储关键性代码(比如uboot,kernel)存储海量数据(允许错误)

2. JZ2440开发板上的Nor Flash

JZ2440开发板上板载了一个Nor Flash,型号为MX29LV160DBTI-70G,连接在S3C2440内存控制器上的BANK0,原理图如下:

3. 使用uboot命令直接读写内存操作Nor Flash

实验前提:烧录uboot.bin到Nor Flash,并且板子设置为Nor Flash启动方式。

知识准备:uboot | uboot内存操作指令mw和md详解

3.1. 读取Nor Flash ID(Manifacture ID)

查看Nor FLash芯片数据手册:

从数据手册中可知,读取Manifacture ID的流程如下:

  • ① 向Nor Flash的0x555地址处写入数据0xAA
  • ② 向Nor Flash的0x2aa地址处写入数据0x55
  • ③ 向Nor Flash的0x555地址处写入数据0x90进入读ID模式);
  • ④ 从Nor Flash的0x00地址处读取数据,读取出的值就是Manifacture ID,为0xC2;
  • 退出读ID模式:向任意地址写0xF0;

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下几条命令进行测试:

mw.w aaa aa
mw.w 554 55
mw.w aaa 90
md.w 0 1

3.2. 读取Nor Flash ID( Device ID)

查看Nor FLash芯片数据手册:

从数据手册中可知,读取Device ID的流程如下:

  • ① 向Nor Flash的0x555地址处写入数据0xAA
  • ② 向Nor Flash的0x2aa地址处写入数据0x55
  • ③ 向Nor Flash的0x555地址处写入数据0x90进入读ID模式);
  • ④ 从Nor Flash的0x02地址处读取数据,读取出的值就是Device ID,为实际ID;
  • 退出读ID模式:向任意地址写0xF0;

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下几条命令进行测试:

mw.w aaa aa
mw.w 554 55
mw.w aaa 90
md.w 2 1


本实验中读取的Device ID是0x2249,和数据手册中的一致:

3.3. 读取CFI信息

CFI 即 Common Flash Interface,公共Flash接口。Flash存储器接口标准有CFI和JEDEC(比较老的规范),CFI用于帮助程序从Flash芯片中获取操作方式信息,而不用在程序中硬编码Flash的ID。

① 进入CFI模式

查看Nor FLash数据手册中的命令列表,找到进入CFI模式的命令:

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下命令进行测试:

mw.w aa 98

进入CFI模式后,任意读取需要的CFI信息

首先读取一下CFI信息的前三个字符QRY进行测试:

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下命令进行测试:

md.w 20 3


再读取Flash容量信息测试一下:

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下命令进行测试:

md.w 4e 1


测试结果和数据手册一致,Flash容量应该为 2 的 21 次 方 = 2 M B 2的21次方=2MB 2的21次方=2MB。

③ 读取CFI信息完毕,退出读CFI模式:向任意地址写0xF0(复位)。

mw.w 00 f0

3.4. 擦除和写入数据

Nor Flash不能直接写入,这样设计也是非常合理,如果Flash的内容像SDRAM那样被轻易修改,那还叫什么Flash呢?

① 擦除
Flash的特性就是写入时数据只能由1变为0,而不能由0变为1,所以向Flash写入数据时,需要先进行擦除操作,将数据变为0xFF,之后才能写入待写数据。

擦除Flash的命令如下:

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下命令进行测试:

mw.w aaa aa
mw.w 554 55
mw.w aaa 80
mw.w aaa aa
mw.w 554 55
mw.w 100000 30

② 写入

首先确保一下要写入的地址处是否是0xFF:

md.w 100000 1


接下来可以写入数据,查看芯片手册获取写入命令:

因为S3C2440的A1接在Nor Flash的A0上,所以CPU发出的地址应该是左移一位之后的地址,所以uboot中应该使用如下命令进行测试:

mw.w aaa aa
mw.w 554 55
mw.w aaa a0
mw.w 100000 1234

标签:Flash,写入,地址,裸机,mw,S3C2440,ID,Nor
来源: https://blog.csdn.net/Neutionwei/article/details/118830235

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有