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加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...
随机推荐
- Weex 标签控件
1.滚动组件 <template> <scroller> <div repeat="{{list}}"> <text>{{name} ...
- weex APIs
1.通过这个$vm()上下文访问这些api在脚本的方法 <script> module.exports = { methods: { somemethod: function() { th ...
- linux教程:配置Tomcat开机启动
我们在linux下安装好tomcat之后:经常是需要配置到开机启动的: 这样的话就不需要我们每次重启linux服务器之后自己在登陆运行startup.sh文件启动tomcat了 本次的演示环境是在ce ...
- node 搭建开发框架express
参考地址: http://www.itnose.net/detail/6095003.html 开发环境 E:\project> node -v v0.10.30 E:\project> ...
- Echarts使用随笔(2)-Echarts中mapType and data
本文出处:http://blog.csdn.net/chenxiaodan_danny/article/details/39081071 series : [ { ...
- 函数对象的prototype总结
通过看 http://www.cnblogs.com/mindsbook/archive/2009/09/19/javascriptYouMustKnowPrototype.html 该文章和对代码的 ...
- Android布局管理器(线性布局)
线性布局有LinearLayout类来代表,Android的线性布局和Swing的Box有点相似(他们都会将容器里面的组件一个接一个的排列起来),LinearLayout中,使用android:ori ...
- Python:函数定义
#!/usr/bin/python3 #函数 def add(a,b): return a+b print("add(2,5) = ",add(2,5)) def add2(a,b ...
- java.lang.reflection打印一个类的全部信息
package com.ljy.chapter5; import java.lang.reflect.Constructor; import java.lang.reflect.Field; impo ...
- iOS把两张图片合成一张图片
0x00 步骤 先读取两张图片把创建出CGImageRef 创建上下文画布 把图片依次画在画布指定位置上 从上下文中获得合并后的图片 关闭上下文 释放内存 0x01 代码实现 - (void)comp ...