转: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 文件来准备软件运行 ...
随机推荐
- 怎样调整CODESOFT中条码线的宽度
CODESOFT是一款功能强大.灵活便捷的标签条码设计打印软件.在使用CODESOFT设计并打印标签,有时会因为打印精度或扫面清晰度等原因,需要调整条形码中行的宽度,即调整条码线宽度.本文,小编 ...
- 利用KeyVault来加强存储Azure Storage访问密钥管理
很多时候管理Azure的存储账号我们都需要通过下面的界面管理访问密钥,大部分情况下通过密钥的轮替使用更新就可以做到安全管理了. 但是很多时候存储账号的Key就会不小心分发到开人员.测试人员.和管理员手 ...
- MongoDb查询日期范围
{"AdID":"2", "CrateDate":{"$gte":ISODate("2014-10-12T16 ...
- C语言中的fread和fwrite
C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...
- Android开发如何去除标题栏title
虽然是一个小问题,今天遇到了,也就写下来吧.防止自己忘掉. 取消标题栏的方式有两种,一种是在代码添加,另一种是在AndroidManifest.xml里面添加. 1.在代码中实现:在此方法setCon ...
- 二模08day1解题报告
T1.高中运动会(match) N个数的最大公约数. gcd不解释. T2.智力游戏 火柴棒等式形如a+b=c,现在给出啊a,b,c求使等式成立的最小的移动次数. 火柴棒表示数字不用解释了吧,在此提醒 ...
- qq 登录 cordova插件
1.下载open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下这个链接 很容易的把环境配置好http://wiki.connect.qq.com/%E5% ...
- NHibernate输出SQL语句
用了NHierbate之后,很少需要写原生的SQL语句,由于总是看不到SQL语句,所以有时候对SQL调优非常不利.因此产生了让NHibernate输出它所生成的SQL语句的想法,以便于后续调优. 一. ...
- PowerDesigner之PDM检查
一.PDM检查 1.检查项的设置 PDM错误级别分为Error和Warning两种.Error是致命错,一旦发现这类错误,系统会自动CDM生成PDM或者OOM,Warning是警告错误,是系统认为不合 ...
- Windbg + .Net .NET Memory Profiler 排查内存泄露
这是一个Winform程序,用于项目中的定时运算.症状是,运行一段时间后,内存持续上升.如一天内就能够达到300M. 打开.Net Memory Profiler,监控该程序,一段时间后,看到该程序产 ...