我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 3032|回复: 5

[技术文章] S3C6410启动模式介绍

[复制链接]

该用户从未签到

1094

主题

484

回帖

9563

积分

二级逆天

人人为我,我为人人。

积分
9563

社区居民最爱沙发宣传大使奖终身成就奖社区明星忠实会员优秀斑竹奖

发表于 2012-5-4 08:56:32 | 显示全部楼层 |阅读模式
目前的ARM处理器都支持多种启动模式,S3C6410和以前的SamsungARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就我个人的理解,介绍一下S3C6410的启动。

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


这章表列出了S3C6410所支持的几种启动模式。首先介绍一下和启动模式相关的硬件管脚:
OM[4:0]选择启动设备及时钟源。OM[0]0选择XXTlpll,为1选择XEXTCLK
                GPN[15:13]用于识别所支持的Nandflash的类型,包括Page的类型和地址周期。
                XSELNAND选择Nand启动或者是OneNand启动。0OneNand1Nand

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

我想和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模式可以支持MoviNandSD/MMCiNandOneNandNand等。关于IROM的引导,具体过程如图:

bootmode_3.JPG

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启动流程如图:


bootmode_4.JPG
人人为我,我为人人。希望大家下载资料的同时能回帖支持,你们的支持,是我最大的共享动力。不回帖以后不共享了。哈哈
回复

使用道具 举报

该用户从未签到

58

主题

535

回帖

0

积分

PADS-181015高级班

积分
0

终身成就奖

发表于 2017-5-3 08:25:01 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

58

主题

535

回帖

0

积分

PADS-181015高级班

积分
0

终身成就奖

发表于 2017-5-6 11:45:02 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

58

主题

535

回帖

0

积分

PADS-181015高级班

积分
0

终身成就奖

发表于 2017-5-17 08:22:40 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

1

主题

277

回帖

0

积分

一级逆天

积分
0

社区居民终身成就奖

QQ
发表于 2017-5-18 14:14:11 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

12

主题

259

回帖

0

积分

百元学习allegro

积分
0

终身成就奖

QQ
发表于 2017-5-18 19:10:23 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表