zoukankan      html  css  js  c++  java
  • OMAP35x下OneNand的分析以及xloader的介绍

    OMAP35xOneNand的分析以及x-loader的介绍

     http://blog.ednchina.com/gurongjiang/280997/message.aspx

    1.     OneNand

     

    要分析OneNand,首先我们必须回顾一下NORNAND

    两者在读写速度、密度、成本、使用寿命等方面各有千秋。与NOR Flash相比,NAND Flash的读数据速度稍慢,但是擦写速度快得多,并且在容量、使用寿命、成本上也占有较大优势。NOR Flash的编程简单,而NAND Flash的编程较为复杂。NAND Flash一般用于存储数据,而NOR Flash一般用于存储启动代码。
           NOR Flash
    带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内容的每一字节(有限的地址引脚是限制其容量的因素之一)。NAND Flash使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。

    这点很重要,因为NOR的接口与SRAM兼容,那么就意味着,ARM处理器只需要一个LDR指令就直接会产生相应的总线时序。说白了,就是NOR不需要任何驱动,就可以对它进行读操作。(不能直接写,因为FLASH一般都有写保护,并且写之前必须先擦除相应的地址) 相应的,由于NAND的接口复杂,读写操作都必须通过驱动才能完成。

    这里就涉及到一个最基本的问题,我们引导一个系统时候都需要一个Bootloader对系统初始化。那么这个Bootloder运行之前是不可能有任何驱动的,有鸡才有蛋嘛!所以通常情况下我们是不可能直接在NAND上存放Bootloader的,必须一个NOR存放BootloaderNAND存放系统内核和文件系统。(三星的有些处理器除外,比如s3c2410s3c2440.它有一个机制是自动把NAND的前4K映射到SDRAM中)

        那么有没有FLASH能把NANDNOR的优点集合在一起呢?我想很多朋友在刚开始学习NORNAND的时候就会提出这个疑问。三星帮我们实现了,不得不佩服三星。

    为了弥补NAND Flash的不足,三星公司在NAND Flash芯片内集成了一个RAM接口,命名为OneNAND Flash,这类Flash拥有与NOR Flash相同的简单接口,而且不受地址引脚的限制,即容量与地址引脚无关。它的结构如下:

    点击看大图

    其中OTP是不可以擦除的,里面有出场信息以及坏块的索引。

     

    我们可以看出OneNand其实就是结合了,NORNAND,接口采用了NOR的,架构采用了NAND的。事实上性能测验下来也确实是取二者之精华。BufferRam5KB1KBbootram4KB dataram。后面NAND架构还是block+page+sector的。

     

    OneNand的驱动原理其实就是通过LDR直接配置OneNand内部寄存器,让其把自己NAND架构下的数据复制到BufferRam下供用户直接使用。

    我们以LOAD(读)为例分析它的机制,流程图图下:

    点击看大图 

    (1)       首先我们把要LOADBlock地址给相应寄存器(偏移地址:F100h

    (2)       然后把要LOADPage+Sector地址给相应寄存器(偏移地址:F107h

    (3)       在选择要LOAD的目的为哪个DataRam(偏移地址:F200h

    (4)       并且设置相应的DataRam的起始地址(偏移地址:F101h

    (5)       清空中断状态寄存器(偏移地址:F241h

    (6)       发送LOAD命令给命令寄存器(偏移地址:F220h

    (7)       等待LOAD完成,查看中断寄存器是不是有相应标志位(偏移地址:F241h

    (8)       最后在相应dataram中获取数据。

     

    2.x-loader

     

      X-loader我也是在接触OMAP35x后才接触的,查看他的文件结构,发现与Uboot非常兼容,都是cpu下放有关arm的初始化,board下放板子的初始化,driver下放驱动等等。

      X-loadercpu下主要完成了常规的arm内核的初始化,这个代码与Uboot下的一致,在board下的omapebm下完成了对omap3530的总线,时钟的初始化。Uboot也有对应的代码,但是我发现有的函数根本没有完成相应的功能,而应该是在x-loder下实际完成的。

    X-loader还完成了OneNand的相应初始化,并且把UbootNAND架构下,复制到BuffrtRam下,在复制到SDRAM中。

    X-loader还支持从SDMMC下引导Uboot,他在CPU下有对mmc的初始化程序,可以直接把uboot.binMMC下复制到SDRAM中。

  • 相关阅读:
    算法5--排序
    算法4---数组
    算法3---字符串
    算法2---链表4---单循环链表
    wcf精通1-15
    框架技术细节
    Achieving High Availability and Scalability
    Windows平台下利用APM来做负载均衡方案
    Windows平台分布式架构实践
    web api control注册及重写DefaultHttpControllerSelector、ApiControllerActionSelector、ApiControllerActionInvoker
  • 原文地址:https://www.cnblogs.com/leaven/p/1643754.html
Copyright © 2011-2022 走看看