S5PV210-arm裸机-nandflash与iNand
admin
2023-08-01 04:20:07
0次





Nandflash:

K9F2G08 : K9F表示是三星的Nandflash系列的,2G表示大小为2Gbit(2G*8bit = 256MB),08表示有8位

数据线。

 

一次读写的最小单元是page(页),2kB+64bit 一次操作要操作2KB或者是2KB的整数倍

K9F2G08  页往上的单位是块,一块block等于64page 一页等于2KB,K9F2G08一共有2048个块。

所以它的大小是 2048*64*2KB = 256MB 一块等于64*2KB = 128KB。

block 是擦除nand的最小单位,page是读写的最小单位

nand的地址是精确到以字节为单位的,但是nand本身的单元一次读写是以页为单位的,所以在实际用时

往往我们编写程序时地址只能精确到页的地址。

nand芯片内部有存储颗粒,有接口电路,接口电路是将来和外接通信用,210SOC中内部外设了一个nand控制器接口,这个控制器接口就可以和nand中接口电路进行连接,实现时序上的操作。


不同型号的nand,页的大小,block块的大小,nand的总大小是不一样的。、

在K9F2G08这个nand芯片中,页是2KB,这2KB是带内数据,就是将来真正存储东西的空间,每一页中还有64

字节的带外数据,这64字节中放的是ECC的校验(错误校验码)和坏块标记,这64B在算nand的大小时我们是

不加上的。因为nand在读写的过程中,很有可能会出现位反转的错误,所以有了ECC,并且nand在使用的过程中,很有可能也会出现坏块的。所以也有坏块标记,当有坏块出现的时候,就会在这一个地方标记坏块,将来在访问这个地方的时候,就访问不了了,就会直接跳过这个区域。

nand的操作流程,要参考不同nand的数据手册,看命令码,操作时序,写数据,读数据等。根据这些去进行软件上编写操作。




坏块的检查:

先擦除nand中一块,因为擦除后里面的东西是FFH或者FFFFH(FFH是说明你的nand是8为数据

线的,FFFFH说明你的nand是16微数据线的),擦除后去一次读取里面的值看是否全为1.

如果全都是1则证明没有坏块,接着去擦除下一块,接着读取里面的值,以此类推依次去检查

,如果读出来的值中不是FFH或者FFFFH则说明有坏块,我们首先在进行擦除一次这个块,完了

在去读取一次,如果读出来的还不是FFH或者FFFFH则将这个区域进行一个标志,文件系统中

就会看见这个标记了,文件系统就可以让以后访问这个区域时直接跳过这个区域。

nand的操作: 这些操作在nand的数据手册中都有相关的时序

坏块检查操作:

写页操作:

擦除操作:

读页操作:

注意:在实际工作中,如果不是做生产nand的工作,你就不需要自己看着数据手册,自己把整个

nand的相关代码写出来,只需能把原厂给的代码,结合给的数据手册能对应上,大致能看懂,能

移植到自己的地方取用,并且将一些不好的,没有的代码给去掉即可。

现在大部分的SOC内部都有nand控制器,这个控制器回去帮助我们完成严格的时序要求

因此我们只需要根据数据手册中给的那些操作的顺序进行编写就行了,严格的时序nand控制器

已经为我们做好了。


inand在物理接线上和软件操作上几乎和SD卡一样。可以说inand就是芯片化了的SD卡

SD卡可以说是MMC卡的升级版,SD卡兼容MMC卡。但是MMC卡不兼容SD卡。



SD协议 支持的是SD卡,MMC协议支持的是MMC卡 eMMC协议支持的inand芯片等

SD卡向下兼容MMC卡

SD的工作:SD卡在每一个时刻都属于某一个状态,读状态,写状态,空闲状态等。SOC发送一条命令,如果命令和当前SD卡的状态相符合,SD卡就会有响应,执行相应的操作之后,根据结果切换到相应的状态,SD卡工作时是在不同的状态之间进行切换的。如果SOC发送的命令和SD卡的当前状态不符合,SD卡就会不响应,从这种特性

我们就可以根据SD卡的响应情况去判断SD卡等的型号。执行相应型号的初始化操作

SD卡代码的分析:

首先初始化和SOC SD卡控制器相连接的GPIO,210的GPIO连接到SOC SD卡控制器的引脚是

GPG0 将其引脚设置为SD卡的那个模式,上拉,驱动能力4X,

接着将SD卡控制器的时钟源的来源设置为从SLOCK_EPLL来(在CLK_SRC4寄存器中设置),SOCK_EPLL的源时钟我们设置为96M,相关参数根据数据手册中,官方给的参数去设置EPLL_CON寄存器。

在将SLOCK_EPLL的96MHZ的频率通过设置CLD_DIV寄存器进行2分频,48MHZ的频率作为SD卡控制的时钟。接着将SD卡控制器进行软复位。

接着在给SD卡一个时钟,通过SOC的SD卡控制器中的寄存器,我们设置一个400k的时钟先提供给SD卡,因为我们现在还不知道是什么版本的,不版本的SD卡,时钟是不一样的。

SD卡工作,需要时钟,可是自己本身没有时钟发生单元,所以需要SOC通过SD卡控制器给SD卡一个时钟。所以我们先给SD卡一个低频的时钟,这样我们就可以和SD卡进行通信了(之后的高频率时钟我们在通过代码去

进一步判断这个SD卡到底是什么版本的,根据相应的版本,在给这个SD卡一个对应的时钟。)



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...