ARM启动流程
S3C2440支持两种启动方式:norflash启动和nandflash启动。
一、norflash启动
NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。ARM处理器上电之后会从零地址去取指令,所以代码一定要放在norflash的最前端,处理器才能继续往下执行。
二、nandflash启动
NAND FLASH不像NOR FLASH那样可以直接访问,而是通过一些相关的寄存器进行访问。所以一开始处理器会将NAND FLASH中前4KB的代码拷贝至零地址处的stepping stone(垫脚石)中。这4KB的代码要完成两个任务:(1)对相关的硬件进行初始化 (2)将NAND FLASH中剩余的代码搬移到内存中,保证可以正常的从NAND FLASH启动。
S3C6410支持 种启动方式:NOR FLASH启动、ONENAND启动、MODEM启动、IROM启动。其中SD卡启动和NANDFLASH启动划分在IROM启动中。
从NORFLASH启动不再多说。这里主要说一下从NANDFLASH启动。首先他属于IROM启动,看下图。
我们知道处理器会从零地址去取指令,6410的地址布局如下所示
6410的零地址是一个镜像区域。当从IROM进行启动时,处理器会将IROM中的代码拷贝至这个镜像区域中,这里提到的代码就是bootloader0,他是处理器的厂家为我们固化好的这部分代码会先进行一些硬件的初始化,然后将NANDFLASH中前8KB的代码搬移到stepping stone中,称作BL1。接着,stepping stone中的代码会负责把剩余的bootloader(称作BL2)加载到内存中继续进行后面的工作。
最后是S5PV210的启动流程,前期都和6410没什么区别,只是210的stepping stone空间更大,为96KB。所以当BL2<80KB时,BL1会把BL2加载到stepping stone中运行,当BL2>80KB时,BL1将BL2加载到内存中运行。
如有问题或疑问欢迎指出。转载请注明出处!
ARM启动流程的更多相关文章
- Arm启动流程解析
谈到arm的启动流程不得不说的是bootloader,但是我这篇文章主要来谈谈arm启动流程的,所以bootloader只是跟大家简介一下就ok.这篇文章我会谈到以下内容: 1.bootloader简 ...
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
- ARM Linux从Bootloader、kernel到filesystem启动流程
转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesyste ...
- arm处理器启动流程分析
2440: 启动方式:nor , nand 地址布局: 启动流程: 开发板在上电后,会从0x0地址处运行. 如果从nor flash启动,则代码要放在nor 的0地址处: 如果从nand flash启 ...
- arm裸机程序启动流程
arm裸机程序启动流程 1373 Linux系统的引导: 一个SOC拿过来,它是有内部BROM和SRAM的,这个BROM中会固化芯片厂商的最初引导代码,我们叫它RBL(ROM boot loader) ...
- ARM处理器启动流程
根据<<芯片手册>>查看相关内容: 1.启动方式 2.地址布局 3.启动流程
- 【ARM】S3C6410芯片的启动流程
S3C6410芯片的启动流程 (1) 上电后首先运行iRom(BL0)内的代码,主要完成时钟和看门狗等外围器件的初始化.(2) 拷贝SD卡或者NnadFlash中的前4k(BL1)代码到片内ram(垫 ...
- [国嵌笔记][029][ARM处理器启动流程分析v2]
2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flas ...
- 嵌入式Linux驱动学习之路(五)u-boot启动流程分析
这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...
随机推荐
- Unity3D 游戏的碰撞
首先创建两个精灵,然后都绑定上碰撞方法(这个是在上一篇文章的基本上): 不过 要注意一点就是碰撞器需要挂一个重力组件,不然无效 所以添加了差不多就能够实现物体碰撞了: 接下来技术写代码,让碰撞的时候进 ...
- Android开发手记(25) 简单Service的实现
本文将通过实现一个简单的Service发送简单消息,然后通过一个BroadcastReceiver接收Service发送的消息,从而改变一个TextView的文本颜色. 这里,我们需要三个java文件 ...
- 为Activity设置特定权限才能启动
1.在AndroidManifest文件中,声明一个权限,并在activity中添加属性 <!--声明权限,权限名一般为包名+permission+类名 --> <permissio ...
- java 更改list 某一元素?
if(!elTd.getElementsByTag("p").isEmpty()){ int i=eduList.size(); if(i>0){ ...
- GUID是什么意思及Guid在sqlserver中的使用
GUID(全球唯一标识)是微软使用的一个术语,由一个特定的算法,给某一个实体,如Word文档,创建一个唯一的标识,GUID值就是这个唯一的标识码.GUID广泛应用于微软的产品中,用于识别接口.复制品. ...
- C# Base64编码/解码
一.编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4 ...
- gvim 常用命令
插入: insert 强退: :q! 退出: :q 保存: :w 保存退出::wq 复制: yy(单行) 多行:8yy 删除: dd(单行) 多行:8dd 或者 :4,8d 执行脚本: :! ...
- asp.net Handler中的IsReusable属性及在Handler中使用Session
大家在用HttpHandler的时候,一般都会有两个大的疑问(当然,前提是你有钻研精神的话,呵呵) 1. IsReusable到底什么意思? 老实说,这个属性很多人都感兴趣,但搞懂的人确实不多.MSD ...
- Linux系统、版本、CPU、内存查看、硬盘空间
查看系统版本:lsb_release -a [root@localhost /]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-no ...
- PHPCMS get当中使用limit
最近在用PHPCMS V9做一个站子,发现get标签非常好用,自定义模型后get几乎变成万能的了.但是PHPCMS升级到V9后,把2008的很多功能都去掉了,比如get标签中,在后面自动添加了一个LI ...