zoukankan      html  css  js  c++  java
  • uboot原理


     

          cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行

    SDRAM挂接在S3C2440的BANK6 (nGCS6),即地址从0x30000000开始

     

     片选信号

    对于一块集成电路,想让它开始工作,得给一个信号它(高电平或低电平),接收这一信号的引脚就叫片选端,
    这一信号就叫片选信号,一般为cs,片选端收到合法的片选信号便进入工作状态,我们就可以对它进行写入或读出了。 bank和片选主要用于地址译码
    1. bank可以理解为一片容量为X的存储芯片
    2. 片选是芯片的使能芯片,0表示芯片不被选中,1表示选中
    存储器往往要是由一定数量的芯片构成的。
    CPU 要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后再从选中的芯片中依地址码选择出相应的存储单元,以进行数据的存取,这称为字选。片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端,而存储芯片的片选信号则大多是通过高位地址译码后产生的。

        

     

     arm中最大可以有1G的存储器空间,它们是映射在最低的1G空间中。就是:0x00000000 - 0x3fffffff ,而arm又把这一快空间分成了8个bank,每bank是128M,所以它们的起始地址分别是:0x00000000, 0x08000000,0x10000000,0x18000000,0x20000000,0x28000000,0x30000000,0x3xxxxxxx,最后一个bank有些特殊,它的起始地址是可变的,由倒数第二个决定。从0x40000000 - 0x40000fff 这4KB空间就是arm自带的4KB内存,它是静态的,SRAM。它的的用处就是启动系统。在启动时由arm的内部电路把nand的前4KB空间的内容拷贝到开始说的那个静态的SRAM中。就可以执行了。注意,它只有4KB,所以在我们在nand中的uboot是分为两部分的,第一部分只有4KB,它主要完成的工作是硬件初始化,以及拷贝到第二部分并执行。在第二部分才是更为详细的工作。0x40001000 - 0x47ffffff是没有用到的。从0x48000000 - 0x60000000 就是IO的映射空间。剩下的都没有用到。

    你应该知道arm都是从0x00000000启动的,这时你可能会有一个疑问。arm既可以从Nor中启动,也可以从自带的静态SRAM中启动,它们的地址不可能都是0x00000000吧?但是,确实是。这里是通过跳线来设置的。当我们选择从Nor中启动时,就会把Nor映射到0x00000000处,当我们选择从nand中启动时,就会把上面说的4K的SRAM映射到0x00000000处。它们是由硬件在程序运行前设置的,所以不会发生混乱。
            如果我们是直接在arm上裸跑程序的话,我们操作的就是这些地址,你可以认为是物理地址。但是在我们移植了操作系统后,比如说Linux,这时我们就可以启动arm的MMU,就是内存管理单元,它是由arm的一个协处理器实现的。

     

  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/liuchengchuxiao/p/4216515.html
Copyright © 2011-2022 走看看