NAND-Flash存储器是Flash存储器的一种,Flash主要分两种,NAND Flash和NOR Flash
一般的嵌入式平台的启动流程也就是,系统从装有启动代码的NOR Flash启动后,初始化对应的硬件,包括SDRAM等,然后将NAND Flash上的Linux 内核读取到内存中,做好该做的事情后,就跳转到SDRAM中去执行内核了,然后内核解压(如果是压缩内核的话,否则就直接运行了)后,开始运行,在Linux内核启动最后,去Nand Flash上,挂载根文件,比如jffs2,yaffs2等,挂载完成,运行初始化脚本,启动consle交互,才允许你通过console和内核交互。至此完成整个系统启动过程。而NOR Flash就分别存放的是Uboot,NAND Flash存放的是Linux的内核镜像和根文件系统,以及余下的空间分成一个数据区。
NAND Flash按照内部存储数据单元的电压的不同层次,也就是单个内存单元中,是存储1位数据,还是多位数据,可以分为SLC和MLC。
SLC(Single Level Cell)单个存储单元,只存储一位数据,表示1或0。就是上面介绍的,对于数据的表示,单个存储单元中内部所存储电荷的电压,和某个特定的阈值电压Vth,相比,如果大于此Vth值,就是表示1,反之,小于Vth,就表示0。
MLC(Multi Level Cell)与SLC相对应的,就是单个存储单元,可以存储多个位,比如2位,4位等。其实现机制,说起来比较简单,就是通过控制内部电荷的多少,分成多个阈值,通过控制里面的电荷多少,而达到我们所需要的存储成不同的数据。比如,假设输入电压是Vin=4V(实际没有这样的电压,此处只是为了举例方便),那么,可以设计出2的2次方=4个阈值, 1/4 的Vin=1V,2/4的Vin=2V,3/4的Vin=3V,Vin=4V,分别表示2位数据00,01,10,11,对于写入数据,就是充电,通过控制内部的电荷的多少,对应表示不同的数据。
下面我们就用皇晶(Acute)最新的BusFinder(BF7264B)进行一款NAND Flash的协议测试,被测物是旺宏电子的2G-bit SLC NAND Flash, MX30LF2G18AC.
首先请上我们今天的主角,Acute的BusFinder. 需要搭配专门的Nand Flash套件
待测物是一块使用了待测板卡,见下图,连接好后的样子:
如上图即可功能区做一下简单说明:
接下来可以选择是否显示波形,default是不选择的, 可以点选显示波形,这样的坏处就是数据储存量很大,动辄就上1GB, 但是这个功能也特别好用,可以用来判断自己的接线是否ok, 如下图, 所有data信号和control信号都有抓到正常状态跳变.