1.nandflash就是嵌入式系统的硬盘

2.分类
(1)MLC:存储单元格存储两位,慢,偏移,寿命短,容量大
(2)SLC:存储一位。快,寿命长,容量小,昂贵

3访问;
(1)独立编址,有专用的控制器,控制器里有相应的寄存器,先送地址,然后命令,最后数据
(2)地址组成:行地址(页编号),列地址(在页中的偏移),一个nand可以有很多块,每一块可以很多页,每一页的两个部分可以不同规格
(3)信号引脚:

4.初始化nand控制器,(搜索关键字operation)
(1)初始化NFCONF,配置三个重要的与HCLK有关的时间参数
(2)初始化NGCONT,一开始要disable chip select 以及使能控制器
(3)复位:选中nandflash,清除RB标志,发送0xff命令,等待RB信号,取消选中RB信号

5.按页读
(1)选中nandflash
(2)清除RB标志
(3)写入0x00命令
(4)发送列地址,两次(但是由于是页读的方式,所以列地址,即页中的偏移量就是0)
(5)发送页编号,即行地址,分三次完成
(6)发送0x30命令
(7)等待RB信号变为ready
(8)读出数据,每次都取出数据寄存器的值,他会自动更新自己的值
(9)取消选中nandflash

6.修改之前的代码拷贝启动代码(之前只从iram复制到内存)
(1)时钟初始化有问题,错把UPLL当MPLL
(2)汇编和C语言的参数传递,不超过4个的时候,直接用r0--r3传递,且顺序和从函数的形参一致
(3)注意保存lr,否则连续两次跳转,会破坏lr,导致在执行完复制函数以后,不能返回到应执行的初始化后续代码部分
(4)注意在调用c函数之前进行栈的初始化

7.拷贝函数的三个参数,页的起始地址r0,(ulong,但是由于是页读方式,所以要去掉低11位,低11位是列地址,这里我们要去页编号,即行地址),内存起始地址r1(目标起始地址,uchar*),数据大小r3,每一页对应2048个字节(2K,视具体nandflash而言,每一个循环,大小减小2048)

8.一旦要去读取(等待)RB信号,之前就要对其进行清除;
一旦有选中操作,在结束之后要取消选中。

9.写入之前要擦除,参数是要擦除的页地址,擦除的是指定的页所在的块:
(1)选中nandflash
(2)清除RB标志
(3)写入0x60命令
(4)发送页编号,即行地址,分三次完成
(5)发送0xD0命令
(6)等待RB信号变为ready
(7)发送命令0x70
(8)读取擦出结果
(9)取消选中nandflash
(10)返回擦除结果

10.按页写
(1)选中nandflash
(2)清除RB标志
(3)写入0x80命令
(4)发送列地址,两次(但是由于是页读的方式,所以列地址,即页中的偏移量就是0)
(5)发送页编号,即行地址,分三次完成
(6)写入数据,用循环
(7)发送0x10命令
(8)等待RB信号变为ready
(9)发送命令0x70,
(10)读取写入结果,从数据寄存器读
(11)取消选中nandflash
(12)返回写入结果

nandflash操作详解的更多相关文章

  1. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  2. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  3. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  4. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  5. memcached 命令操作详解

    memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...

  6. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  7. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

  8. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  9. SVN的Windows和Linux客户端操作详解

    SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...

随机推荐

  1. HDU 1856

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1856 对于这道题,主要就是让你求出有最多结点的树的树叶: 我们只要利用并查集的知识吧所输入的数据连接 ...

  2. DPdao

    hrbust1053 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1053 #in ...

  3. android shape的使用 边框

    android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先写drawable里面的xml文件,里面设置shape来设置文本框的 ...

  4. 视差贴图(Parallax Mapping)

    使用顶点光照的模型,当模型的面数很少的时候,光照效果会显得很奇怪,因为只有顶点上的光照是正确计算出来的,三角面上的光照都是通过硬件插值得到,所以难免会出现问题.基于像素的光照可以很好的改善这个问题.如 ...

  5. Unity3d - RPG项目学习笔记(一)

    通过NGUI和工程素材,学习泰课项目——黑暗之光. 现阶段心得整理: 一.开始界面 开始界面显示顺序为:①白幕渐隐:②镜头拉近:③标题渐显:④按键响应. 1.1 白幕渐隐 NGUI是一个非常强大的插件 ...

  6. 出现win8.1蓝屏重启故障该如何解决?

    出现win8.1蓝屏重启故障该如何解决?电脑出现win8.1蓝屏重启故障,系统提示“你的电脑遇到问题,需要重新启动,我们只收集某些错误信息,然后为你重新启动.”怎么解决?本教程为你提供了win8.1蓝 ...

  7. 洛谷P1461 海明码 Hamming Codes

    P1461 海明码 Hamming Codes 98通过 120提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 给出 N,B 和 ...

  8. mac 下安装nginx

    1,mac下的依赖: pcre-8.38.tar.gz nginx-1.4.7.tar.gz 2,解压pcre:进入器解压目录. EddydeMacBook-Pro:~ eddy$ cd /Users ...

  9. 磁盘测试工具fio

    https://wiki.mikejung.biz/Benchmarking #blocksize This options determines the block size for the I/O ...

  10. OpenLDAP 安装及配置 笔记

    首先下载 OpenLdap(Ldap服务器) 和 LdapAdmin(客户端) 两个软件 OpenLDAPforWindows_2.4.39.part1.rar OpenLDAPforWindows_ ...