目前的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的启动模式,只不过 Samsung在S3C6410 User Manual中隐藏了S3C6400中所支持Nandflash启动模式,目的可能是Samsung不希望在S3C6410中使用Nandflash启动,而要推崇IROM的启动模式。个人理解啊!

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

1. NORFlash启动

通过Nor Flash启动,此时OM[4:1]为0100或0101,对应8bit和16bit。

2. NandFlash启动

虽然在S3C6410 User Manual中没有提到,但是也是支持的,从S3C6400 User Manual可以找到。OM[4:1]四个硬件管脚决定了Nandflash启动,以及支持的Nandflash的类型,包括大Page和小Page,地址周期为3,4,5。当然,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可以初始化系统时钟,UART,SDRAM等设备,然后拷贝Bootloader2(BL2)到SDRAM中。

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

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

1. 禁用Watch-dog

2. 初始化TCM

3. 初始化设备拷贝函数,用于拷贝BL1到SteppingStone中

4. 初始化栈区域

5. 初始化PLL

6. 初始化指令Cache

7. 初始化堆区域

8. 拷贝BL1到SteppingStone中

9. 验证BL1

10. 跳转到SteppingStone中运行

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

S3C6410启动模式介绍相关推荐

  1. linux maskrom模式,微雪电子RK3308主板CC启动模式介绍

    描述 启动模式说明 前言 ROC-RK3308-CC 有着非常灵活的启动方式.一般情况下,除非硬件损坏,ROC-RK3308-CC 主板是不会变砖的. 如果在升级过程中出现意外,bootloader ...

  2. Android启动模式介绍

    安卓Android一般有Meta.Normal.Bootloader.Recovery.Factory等启动模式,这些模式都需要在系统启动时通过按键等方式触发进入,除了Normal模式,其它模式都属于 ...

  3. Android入门:Activity四种启动模式

    2019独角兽企业重金招聘Python工程师标准>>> 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在Android Manifest.xml中的标签的and ...

  4. activity 启动模式_Android世界:Activity的启动模式及其适用范围

    一.Activity启动模式简介 activity启动模式,可以理解为activity在任务栈(也叫"回退栈")的回退规则,即点击"back"键时,activi ...

  5. Android 源码分析 Activity的启动模式

    一直想抽空针对AMS进行源码分析,无奈一方面因为很忙,另外AMS很复杂,涉及的知识点也比较多,今天利用五一假期对AMS的一个方面,Activity的启动模式进行源码分析,这里面包括了ActivityR ...

  6. bootloader的两种启动模式

    启动模式介绍     大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅对于开发人 员才有意义.但从最终用户的 ...

  7. Android入门之Activity四种启动模式

    一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的<Activity>标签的android:launchMode属性设置: 启 ...

  8. 计算机休眠快还是关机快,电脑关机、休眠、睡眠、快速启动模式的区别介绍

    大家的电脑在关机的时候,一般都可以看到有好几个选项,包括睡眠.休眠.待机.关机.重启等等,不同的场景使用不同的模式,合理使用会使得工作效率事半功倍. 电脑电源模式你都了解吗? 那么,电脑睡眠和休眠有什 ...

  9. STM32单片机的启动模式 三种BOOT模式介绍

    在绘制32单片机时,参考别人的原理图对单片机的启动方式BOOT有疑问, 这里写目录标题 自己的理解和应用 一.三种BOOT模式启动的介绍 二.自己开发BOOT模式的选择 官方的文档介绍 自己的理解和应 ...

最新文章

  1. word邮件合并一页8个_利用word邮件合并批量制作准考证
  2. linux下 proc 目录
  3. Python ord()函数和chr()函数
  4. BZOJ3998 TJOI2015弦论(后缀数组+二分答案)
  5. python 杀死子进程_Python:当父异常终止时,如何杀死子进程?
  6. 程序员修神之路--高并发下为什么更喜欢进程内缓存
  7. asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)
  8. 千万数据去重_如何在 1 秒内做到大数据精准去重?
  9. 【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)
  10. uploadify上传插件完整Demo(包括后台)
  11. 寄生虫技术计算机软件怎么样,2019寄生虫软件-某寄生虫软件分析
  12. 百钱买百鸡问题的最优解法
  13. the win16 subsystem was unable to enter protected mode,DOSX.EXE must be in your AUTOEXEC.NT and pres
  14. 【物联网毕设基础】单片机:RS485 通信与 Modbus 协议
  15. 移动软件开发-制作视频播放器
  16. 技术前沿与经典文章8:智能家居发展白皮书——全屋智能解决方案
  17. Java基础二维数组
  18. 自适应网站与非自适应有什么不同
  19. 云计算技术及应用选择题
  20. Xshell 5 配置跳板机 教程

热门文章

  1. leetcode 102 C++AC
  2. bzoj 1024 [SCOI2009]生日快乐——模拟
  3. Openldap命令详解
  4. LeetCode 32. Longest Valid Parentheses
  5. Maven国内镜像 Maven阿里云镜像
  6. Libevent:6辅助函数以及类型
  7. NSString 中包含中文字符时转换为NSURL
  8. [Bugku][Crypto][CTF][2020]Crypto 1-20 write up
  9. 【数据结构与算法】二分查找
  10. [Leetcode][第312题][JAVA][戳气球][动态规划][记忆化搜索]