转: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
转:OK6410内存及启动流程的更多相关文章
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
- Java内存管理-初始JVM和JVM启动流程(二)
勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了什么是程序,以及Java程序运行的三个阶段.也顺便提到了Java中比较重要 ...
- uboot1.1.6中启动流程
U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 Ø 硬件设备初始化 Ø 加载U-Boot第二阶段代码到RAM空间 Ø 设置好栈 Ø 跳转到第二阶段代码入口 (2 ...
- linux启动流程及自定义gurb
linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...
- linux启动流程
看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...
- 嵌入式Linux驱动学习之路(五)u-boot启动流程分析
这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...
- broadcom代码中httpd进程启动流程介绍
Broadcom代码中包含WEB配置管理媒介, 在嵌入式WEB服务器min_httpd基础上改造实现, 其bin名称为httpd,此httpd可以由管理进程有连接后动态启动,并且当一段时间内没有连接到 ...
- CentOS6 启动流程图文解剖
我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linux操作系统了.那么在按下电源到输入账号和密码之前,操作系统都做了些什么?下面就来讲述在这段时间发生的动 ...
- centos启动流程[转]
启动流程概览 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯: init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行 ...
随机推荐
- spi驱动无法建立spidev问题
参考这里: http://e2e.ti.com/support/arm/sitara_arm/f/791/t/168122.aspx http://communistcode.co.uk/blog/b ...
- OC基础(22)
NSMutableString基本概念 NSMutableString常用方法 NSMutableString练习 *:first-child { margin-top: 0 !important; ...
- OC基础(10)
id类型 SEL类型 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !im ...
- fw:理解RESTful架构
理解RESTful架构 作者: 阮一峰 日期: 2011年9月12日 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立 ...
- OSChina中远程GIT仓库同步探索
GIT平台在OSChina中的搭建帮了我们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结我的成功经验,帮助大家,共同学习.由于条件有限,我全部的 ...
- Java后台工程师面试杂记——不跳不涨工资星人跳槽经历
经过接近一个月的时间,完成换工作这件“小事”,前后总计面试了多家公司,最后也没接到几个offer,不过最终总算尘埃落定,就对这个过程进行一个总结吧. 在某互联网公司工作了近一年的时间,但是频繁的业务需 ...
- mysql中-e用法
实际应用中,不仅可以先登陆mysql再使用,还可以在链接的时候进行sql操作,此时需要加参数-e 例: >mysql -hlocalhost -P8080 -uroot -p123456 -e' ...
- 华为OJ平台——计算字符串的相似度
题目描述: 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把“a”替换为“b”. 2 增加一个字符,如 ...
- boost: tcp client sample
#include <boost/asio.hpp> #include <iostream> using namespace std; using namespace boost ...
- 条款19 command 模式与好莱坞法则
当一个函数对象被当做回调时候,就是一个command模式的实例 什么是回调? 回调就是框架知道什么时候干一些事情,但是具体干什么,或许框架一无所知(因为回调函数不是他设计的),而用户则知道发生一个特定 ...