文档章节

Samsung ARM处理器iROM启动模式介绍

慎思
 慎思
发布于 2012/09/10 16:06
字数 1116
阅读 305
收藏 2
点赞 0
评论 0

最近在使用三星S3C2416这个处理器,需要在EBOOT 上实现SD卡文件系统,并从SD卡中烧写wince系统,与S3C2416的从SD卡启动不同。我用的BSP是 SMDK2416_WinCE50_PM_REL_0.01_080611的,Bootloader文件夹中包含了三个文件 夹:Eboot.Whimory、NBL1.LSB、NBL2,先前不太明白这三个Boot到底有什么用,于是从网上找到了下面一篇文件,是以 S3C6410为例作的介绍。

 

    目前的ARM处理器都支持多种启动模式,S3C6410和以前的 Samsung的ARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就我个人的理解,介绍一下S3C6410的启动。

    先读一下S3C6410 User Manual的第3章 System Controller,在123页列了一张表,如图:

   

 

这章表列出了S3C6410所支持的几种启动模式。首先介绍一下和启动模式相关的硬件管脚:

OM[4:0]:选择启动设备及时钟源。OM[0]为0选择XXTlpll,为1选择XEXTCLK。

 

 GPN[15:13]:用于识别所支持的Nandflash的类型,包括Page的类型和地址周期。

 XSELNAND:选择Nand启动或者是OneNand启动。0为OneNand,1为Nand。

 

 

    从表中可以看出,S3C6410好像并不支持Nandflash启动,因为Boot Device中没有Nandflash设备。当OM[4:0]为0000x/0001x/0010x/0011x的时候,Boot Device是Reserved,我想这里是Samsung在6410中有意要隐瞒什么。如果你用过S3C6400,你应该知道在S3C6400 User Manual中也有这么一张表,描述了s3c6400的启动模式,具体S3C6400的启动模式也是在第3章 System Controller,在第107页的表,如图:

 

我想和S3C6410的表对照一下就会发现,两个处理器的启动模式是兼容的,我认为S3C6410应该兼容S3C6400的启动模式,只不过SamsungS3C6410 User Manual中隐藏了S3C6400中所支持Nandflash启动模式,目的可能是Samsung不希望在S3C6410中使用Nandflash启动,而要推崇IROM的启动模式。个人理解啊!

 

 

 

下面来总结一下S3C6410所支持的启动模式:

 

1. NORFlash启动

 

通过Nor Flash启动,此时OM[4:1]01000101,对应8bit16bit

 

 

 

2. NandFlash启动

 

虽然在S3C6410 User Manual中没有提到,但是也是支持的,从S3C6400 User Manual可以找到。OM[4:1]四个硬件管脚决定了Nandflash启动,以及支持的Nandflash的类型,包括大Page和小Page,地址周期为345。当然,XSELNAND管脚也要为1

 

 

 

3. OneNAND启动

 

首先XSELNAND管脚为0,其次OM[4:1]0110,为OneNand启动模式。

 

 

 

4. MODEM启动

 

OM[4:1]0111的时候,为MODEM启动。S3C6410通过MODEM接口下载boot代码到内部RAM中,然后进行引导。

 

 

 

5. IROM启动

 

OM[4:1]1111的时候,从Internal ROM中启动,此时GPN[15:13]用于识别设备的类型。这种模式以前没见过,这里具体介绍一下。

 

IROM模式可以支持MoviNand,SD/MMC,iNand,OneNand和Nand等。关于IROM的引导,具体过程如图:

 

1. 处理器上电后,当OM[4:1]=1111时,运行iROM中的程序,这个程序被称为Bootloader0(BL0),它会做一些初始化的工作。

 

2. 然后根据GPN[15:13]的管脚设置,选择从相应的设备(SD/MMC/OneNand/Nand)中的指定区域读取4KB的程序到SteppingStone中运行,这段代码被称为Bootloader1(BL1)

 

3. BL1可以初始化系统时钟,UARTSDRAM等设备,然后拷贝Bootloader2(BL2)SDRAM中。

 

4. 跳转到SDRAM中的BL2,继续运行,BL2可以支持更强大的功能,可以将OS加载到SDRAM中,然后运行OS

 

 

 

整个过程中,IROM是最先被运行的,它会首先做一些初始化,具体IROM的流程如下:

 

1. 禁用Watch-dog

 

2. 初始化TCM

 

3. 初始化设备拷贝函数,用于拷贝BL1SteppingStone

 

4. 初始化栈区域

 

5. 初始化PLL

 

6. 初始化指令Cache

 

7. 初始化堆区域

 

8. 拷贝BL1SteppingStone

 

9. 验证BL1

 

10. 跳转到SteppingStone中运行

 

 

 

还是看一下流程图吧,理解起来会更直观一些,IROM启动流程如图:

© 著作权归作者所有

共有 人打赏支持
慎思
粉丝 27
博文 110
码字总数 5948
作品 0
深圳
程序员
Tiny4412裸机程序之操作ICache

一、首先普及一下什么是Cache 基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供...

幸福阶梯 ⋅ 02/19 ⋅ 0

【4412开发板教程】Uboot教程之uboot基础概念和框架

正在学习uboot,迅为教程讲解的很详细,先上个笔记,视频上传到网盘后再补上...... 知识点: 1.操作系统分层的概念 Windows:bios→内核模式→用户模式→用户程序 linux:bootloader→内核→文...

歌之王子殿下 ⋅ 2017/02/07 ⋅ 0

【C语言常识】Keil MDK的分散加载文件.sct

出处:http://blog.csdn.net/tracing/article/details/9720157 面对这样一个新东西,先去官网看看,或者看看IDE的帮助,基本上你想要的东西都有了, BAIDU来的都不全面,这是一种学习方法。 ...

wuhenyouyuyouyu ⋅ 2017/05/04 ⋅ 0

嵌入式启动过程笔记

内存。 sram:静态内存,价格贵容量大,不需要初始化上电就能用。 dram:动态内存,价格便宜容量小,需要初始化后才能使用。 在单片机额中,由于内存小希望开发尽量简单,所以内存适合全部用...

jiangheng12138 ⋅ 2016/07/14 ⋅ 0

u-boot-2009-11移植之stage1(支持从nand启动)

目标板:FL2440 硬件资源:64M SDRAM/256M nandflash(k9f2g08u0a)/4M nor flash(JS28F320) 开发环境:fedora 14 源码:u-boot-2009.11 交叉编译工具链:cross-3.3.2.tar.bz2 参考资料:h...

liufazhang ⋅ 2011/10/24 ⋅ 1

uboot的作用和启动方式

声明:本文由个人学习过程中整理而成,转载请注明出处。 1、bootloader介绍 (1)对于计算机系统,从开机上电到操作系统的启动需要一个引导程序叫做bootloader(启动加载程序)。 通过bootloade...

为更好铭天 ⋅ 2017/04/13 ⋅ 0

ARM芯片选型的一些建议

目前国内市场常见的ARM有NXP(Philips)、Samsung、Atmel、TI、ADI等,根据用户要求及应用领域,可从如下几个方面选型: 1、速度(常规应用):ARM7的主时钟为20~133M,ARM9为100~233M,ARM10...

长平狐 ⋅ 2013/06/03 ⋅ 0

bootloder uboot 简介 make menuconfig

一个嵌入式系统从软件角度分为三个层次 1,引导加载程序 包含固化在固件中的boot程序(如BIOS),和Bootloader(如grub或lilo)两个部分。 2,linux内核 3,文件系统:包含应用程序和系统命令 BI...

cicue ⋅ 2014/05/26 ⋅ 0

uboot移植——使用官方uboot进行移植

以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除。 参考资料:http://www.cnblogs.com/biaohc/p/6473079.html 参考资料:http://www.cnblogs.com/biaohc/p/6403863.html 思维导图...

oqqHuTu12345678 ⋅ 2017/04/18 ⋅ 0

华为最新开源开发板 HiKey960 发布 配置强悍

3月6日-10日,Linaro Connect BUD17大会火热进行中。本次大会上,华为携手合作伙伴诚迈科技即将推出的96Boards家族新成员HiKey960抢先亮相。 据了解,Hikey960是基于Kirin960 SoC的96Boards,...

局长 ⋅ 2017/03/09 ⋅ 18

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL主从复制原理、半同步操作步骤及原理

1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1、scp/sftp/nc 命令可以实现远程数据同步。 2、搭建ftp/http/svn/nfs 服务器,然后在客户端上也可以把数据同步到服务器。...

xiaomin0322 ⋅ 3分钟前 ⋅ 0

Oracle10g 数据及文件迁移过程[原]

QL*Plus: Release 10.2.0.1.0 - Production on 星期三 5月 11 10:22:35 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Re......

harrypotter ⋅ 9分钟前 ⋅ 0

nginx安装

1:安装工具包 wget、vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake gcc gcc-c++ 2:下载nginx安装包 wget http://nginx.org/download/nginx-1......

壹丶贰 ⋅ 12分钟前 ⋅ 0

ideaVim安装及配置

1.安装插件 File-Settings-Plugins,Browse Repositories,输入ideavim,安装。 重启后,在Tools-Vim Emulator启用。 2.快捷键设置 ideaViim键与idea快捷键有冲突,可以在Settings-Other Se...

Funcy1122 ⋅ 16分钟前 ⋅ 0

MySQL中B+Tree索引原理

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B...

浮躁的码农 ⋅ 30分钟前 ⋅ 0

两道面试题,带你解析Java类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa{ static { System.out.println("爷爷在静态代码块"); }} cl...

1527 ⋅ 34分钟前 ⋅ 0

SpringCloud(Data Flow)

dataflow-server

赵-猛 ⋅ 45分钟前 ⋅ 0

深入理解Java虚拟机

这本书我读到第8章,之后就是在读不下去了。 读到后面是一种痛苦的体验,太多的东西是不全面的,大量的专有名词是没有解释的,读到最后很多东西仅仅是一个侧面,所以我觉得,这本书不适合初学...

颖伙虫 ⋅ 50分钟前 ⋅ 0

NanoPi NEO core/ Ubuntu16.04单网卡配置3个IP地址(2个静态,1个动态)

配置 root@NanoPi-NEO-Core:/etc/network# cat interfacesauto loiface lo inet loopbackallow-hotplug eth0iface eth0 inet static address 172.31.188.249 netmask 255.......

SamXIAO ⋅ 今天 ⋅ 0

三步为你的App集成LivePhoto功能

摘要:LivePhoto是iOS9新推出的一种拍照方式,类似于拍摄Gif图或录制视频片段生成图片。如果没有画面感,可以联想《哈利波特》霍格沃茨城堡的壁画,哈哈,很炫酷有木有,但坑爹的是只有iphone6S以...

壹峰 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部