OMAP35x下OneNand的分析以及x-loader的介绍
1.? ? 要分析OneNand,首先我们必须回顾一下NOR与NAND。 两者在读写速度、密度、成本、使用寿命等方面各有千秋。与NOR Flash相比,NAND Flash的读数据速度稍慢,但是擦写速度快得多,并且在容量、使用寿命、成本上也占有较大优势。NOR Flash的编程简单,而NAND Flash的编程较为复杂。NAND Flash一般用于存储数据,而NOR Flash一般用于存储启动代码。 这点很重要,因为NOR的接口与SRAM兼容,那么就意味着,ARM处理器只需要一个LDR指令就直接会产生相应的总线时序。说白了,就是NOR不需要任何驱动,就可以对它进行读操作。(不能直接写,因为FLASH一般都有写保护,并且写之前必须先擦除相应的地址)?相应的,由于NAND的接口复杂,读写操作都必须通过驱动才能完成。 这里就涉及到一个最基本的问题,我们引导一个系统时候都需要一个Bootloader对系统初始化。那么这个Bootloder运行之前是不可能有任何驱动的,有鸡才有蛋嘛!所以通常情况下我们是不可能直接在NAND上存放Bootloader的,必须一个NOR存放Bootloader,NAND存放系统内核和文件系统。(三星的有些处理器除外,比如s3c2410,s3c2440.它有一个机制是自动把NAND的前4K映射到SDRAM中) ? 为了弥补NAND Flash的不足,三星公司在NAND Flash芯片内集成了一个RAM接口,命名为OneNAND Flash,这类Flash拥有与NOR Flash相同的简单接口,而且不受地址引脚的限制,即容量与地址引脚无关。它的结构如下:
其中OTP是不可以擦除的,里面有出场信息以及坏块的索引。 ? 我们可以看出OneNand其实就是结合了,NOR与NAND,接口采用了NOR的,架构采用了NAND的。事实上性能测验下来也确实是取二者之精华。BufferRam为5KB,1KB做bootram,4KB dataram。后面NAND架构还是block+page+sector的。 ? OneNand的驱动原理其实就是通过LDR直接配置OneNand内部寄存器,让其把自己NAND架构下的数据复制到BufferRam下供用户直接使用。 我们以LOAD(读)为例分析它的机制,流程图图下: ? ? (1)? (2)? (3)? (4)? (5)? (6)? (7)? (8)? ? 2.x-loader ? ? ? X-loader还完成了OneNand的相应初始化,并且把Uboot从NAND架构下,复制到BuffrtRam下,在复制到SDRAM中。 X-loader还支持从SD、MMC下引导Uboot,他在CPU下有对mmc的初始化程序,可以直接把uboot.bin从MMC下复制到SDRAM中。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |