一、内存 
只是从大体上介绍,并没有涉及寄存器的操作 
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

转:OK6410内存及启动流程的更多相关文章

  1. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  2. Java内存管理-初始JVM和JVM启动流程(二)

    勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了什么是程序,以及Java程序运行的三个阶段.也顺便提到了Java中比较重要 ...

  3. uboot1.1.6中启动流程

    U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 Ø 硬件设备初始化 Ø 加载U-Boot第二阶段代码到RAM空间 Ø 设置好栈 Ø 跳转到第二阶段代码入口 (2 ...

  4. linux启动流程及自定义gurb

    linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...

  5. linux启动流程

    看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...

  6. 嵌入式Linux驱动学习之路(五)u-boot启动流程分析

    这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...

  7. broadcom代码中httpd进程启动流程介绍

    Broadcom代码中包含WEB配置管理媒介, 在嵌入式WEB服务器min_httpd基础上改造实现, 其bin名称为httpd,此httpd可以由管理进程有连接后动态启动,并且当一段时间内没有连接到 ...

  8. CentOS6 启动流程图文解剖

    我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linux操作系统了.那么在按下电源到输入账号和密码之前,操作系统都做了些什么?下面就来讲述在这段时间发生的动 ...

  9. centos启动流程[转]

    启动流程概览 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯: init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行 ...

随机推荐

  1. 常用正规js

    1,得到网页上的链接地址: string matchString = @"<a[^>]+href=\s*(?:'(?<href>[^']+)'|"" ...

  2. Xcode引入外界文件时选Create groups 或 Create folder references的区别

    一.使用Create groups 我们在项目中可以手动添加一个groups(右键点击选择New Group),但是手动添加的groups实际上并不会存在于项目的目录中,被添加进groups中的文件仍 ...

  3. Redis数据持久化之RDB持久化

    因为Redis服务器将数据存储在内存里面,而一旦服务器被关闭或者运行服务器的主机本身被关闭的话,存储在内存里面的数据就会消失不见: 如果我们仅仅是将redis用作缓存的话,那么这种数据丢失带来的问题并 ...

  4. STL之vetor 排序

    1 STL提供的Sort 算法 C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数, ...

  5. List<string>里 每个元素重复了多少次

    List<string>里 每个元素重复了多少次 static void Main(string[] args) { List<string> list = new List& ...

  6. C# 调用控制台程序,并获取输出写入文件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  7. EnCase v7 search hits in compound files?

    I used to conduct raw search in EnCase v6, and I'd like to see if EnCase v7 raw search could hit key ...

  8. 使用NPOI操纵Excle,并输入到客户端

    NPOI下载:http://files.cnblogs.com/files/gosky/NPOI_2.2.0.0.zip 导入以下5个引用: ICSharpCode.SharpZipLib.dll N ...

  9. Ubuntu下fcitx安装。(ibus不会用)

    1 安装命令: sudo apt-get install fcitx-table-wbpy 2 然后将语言支持中的键盘输入方式系统选项,选为fcitx. 3 注销系统后即可使用.

  10. c#中$.ajax的使用

      <script type="text/javascript">  var telphone = { type: "getphone", &quo ...