• 转:OK6410内存及启动流程


    一、内存 
    只是从大体上介绍,并没有涉及寄存器的操作 
    6410的系统资源为:256MB DDR 、2GB NANDFlash 
    如下图所示:这里写图片描述

    ROM是只读存储器,RAM是随机存储器。 
    区别: 
    1.ROM(Read Only Memory)掉电数据不丢失,但存储读取速度慢,所以常用作存放程序,存放bootloader,存放内核,存放文件系统。 
    2.RAM(Random Access Memory)掉电数据丢失,但存取速度快,常用作内存 
    3.RAM还分为SRAM静态随机存储器(不用不断刷新就可以读取数据,速度快但是造价也高和DRAM动态随机存储器(要不断刷新才能存储读取数据,造价相对较低) 
    4.DRAM还可以分为SDRAM、DDR、DDR2等,DDR的传输速率为SDRAM的2倍,而DDR2的传输速率为DDR的2倍。一般是2440板子用的SDRAM作为内存,6410板子用DDR作为内存,210板子用DDR2作为内存 
    5.nandflash不能运行程序,只能存储数据、动引导系统,而在 SDRAM 上执行主程序代码

    二、启动 
    1.启动方式 
    6410支持很多种启动方式 
    这里写图片描述 
    可以看出,SROM(NORFLASH) 、oneNAND (一种特殊的NANDFlash(既具有norflash特性也具有nandFlash的特性)、MODEN 
    、IROM(intern rom)一共四种启动方式,其中IROM又可分为SD和NAND启动

    2.下载 
    主要讲解从NANDFlash启动。 
    看下图 
    这里写图片描述 
    上图为6410的物理内存空间,从图中可以看出,DRAM的地址起始位0x5000000,当我们使用 #/home/dnw uboot.bin 0x50000000 命令下载uboot时候,会把uboot.bin下载到SDRAM中去,同时SDRAM又会uboo.bin拷贝到NANDFlash去,保存起来。 
    这里写图片描述 
    同时,发现一个很奇特现象,我输入的下载地址为50000000可是串口却显示下载到50008000这个地址去,为了试验,我分别把下载地址改为0x53000000和0x1000000,但是串口却依然显示下载地址为50008000,经过询问,才得知,当从SD卡启动下载uboot的时候,SD卡上的uboot是官方的,他们就将下载地址固定为50008000,所以你在虚拟机Linux中不管输入的地址为多少,下载的时候就会自动下到50008000这个地址去。 
    3.启动流程 
    这里写图片描述 
    和其他的芯片有些不同 
    1.上电的时候,iROM里面的内容先运行,iROM里面存放着芯片厂商固化好的程序 
    2.会有引导程序,把NAND里面前8KB的内容拷贝到Stepping stone,若uboot大于8KB,则uboot程序里面的一段程序会把大于8KB的内容从NAND拷贝到DDR去,在DDR中运行 
    4.内核启动地址 
    6410的内核下载命令一般为 #tftp uImage 0xc0008000 
    其中的c0008000为虚拟地址,是物理地址0x50008000映射过去的,前提是,你的uboot已经打开了MMU功能,若uboot没有打开MMU功能,则下载地址为0x50008000

  • 相关阅读:
    何谓B/S架构,C/S架构,SOA架构?
    Android牟利之道广告平台的介绍
    软件开发工具介绍
    jQuery Mobile 入门教程
    程序员的编辑器——VIM
    优秀程序员值得借鉴的一些信息
    程序员必备利器——敏捷软件
    PhoneGap Build的使用
    PhoneGap简单介绍
    ceph16.2.6 cephfs mds源码阅读
  • 原文地址:https://www.cnblogs.com/chd-zhangbo/p/5287611.html
Copyright © 2020-2023  润新知