《ARM处理器都支持多种启动模式》由会员分享,可在线阅读,更多相关《ARM处理器都支持多种启动模式(5页珍藏版)》请在金锄头文库上搜索。
1、前的ARM处理器都支持多种启动模式,S3C6410和以前的Samsung的ARM处理器一样, 通过外部管脚OM4:0的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下 面就我个人的理解,介绍一下S3C6410的启动。先读一下 S3C6410 User Manual 的第 3 章 System Controller,在 123 页列了一张表,如图:Table 3-1. Device operating mode selection at boot-upXSELNAN DOM4:0GPN15:
2、131Boot DeviceFunctionClock Source1ooooxRESERVED10001XRESERVEDRESERVED1001 oxRESERVED10011XRESERVEDX01 poxXXXSROM(Sbit)-X0101XSROM(16brt)-0011 oxOneNANDDont use NAND DeviceX0111XMODEMDont use Xn0CSn2 for SROMCXXTIpll ifOM05sO.XEXTCLK if OM0 is1.X000SD/MMC(CH0)0001OneNAND1010NAND(5l2Byte, 3-Cycle)111
3、11X011 irom2)NAND(512By怕,4-CyclE)1100NAND(2048Byte, 4-Cyde)1101NAD(2048Byte, 5-Cycte)1110NAND(40968yte. 5-Cycle)XH1SD/MMC(CH1)Note 1) Only 641 OX PoP D type doesnt support OneNAND booting.Note 2) 641 OX PoP A type doesnl support IROM booting based on NAND Flash. 641 OX PoP D type doesnt support IROM
4、 booting based on OneNAND Flash.这章表列出了 S3C6410所支持的几种启动模式。首先介绍一下和启动模式相关的硬件管脚:0M4:0:选择启动设备及时钟源。OM0 为0选择XXTlpll,为1选择XEXTCLK。GPN15:13:用于识别所支持的Nandflash的类型,包括Page的类型和地址周期。XSELNAND:选择 Nand 启动或者是 OneNand 启动。0 为 OneNand,1 为 Nando从表中可以看出,S3C6410好像并不支持Nandflash启动,因为Boot Device中没有Nandflash 设备。当 OM4:0为 0000x/00
5、01x/0010x/0011x 的时候,Boot Device 是 Reserved,我想这 里是Samsung在6410中有意要隐瞒什么。如果你用过S3C6400,你应该知道在S3C6400 UserManual中也有这么一张表,描述了 s3c6400的启动模式,具体S3C6400的启动模式也是在 第3章System Controller,在第107页的表,如图:Table 3-1. Device Operating Mode Selection at Boot-UpXSELNANDOM4:01Boot DeviceFunctionClock Source1oooxSmall page, A
6、ddrCycle=31f0001XJ;NANDSmall Page, AddrCycle=41001 oxLarge Page; AddrCyde=414001 1XLarge Page; AddrCyde=5XOlOOXSROM(S-brt)-X0101XSROM(ie-bit)-XXTIpll if OM0 is 0.0on oxOneNA 忖 DDont use NAND Device.XLXTCLKifOM0 is 1X011IXMODEMDont use XmOCSn2 forSROMC.1: NAND0:OneNAND1H1XInternal ROM-我想和S3C6410的表对照一
7、下就会发现,两个处理器的启动模式是兼容的,我认为S3C6410 应该兼容S3C6400的启动模式,只不过Samsung在S3C6410 User Manual中隐藏了 S3C6410 中所支持Nandflash启动模式,目的可能是Samsung不希望在S3C6410中使用Nandflash 启动,而要推崇IR0M的启动模式。个人理解啊!下面来总结一下S3C6410所支持的启动模式:1. NORFlash 启动通过 Nor Flash 启动,此时 0M4:l 为 0100 或 0101,对应 8bit 和 16bi t。2. NandFlash 启动虽然在S3C6410 User Manual中
8、没有提到,但是也是支持的,从S3C6400 User Manual可以 找到。OM4:1 四个硬件管脚决定了 Nandflash启动,以及支持的Nandflash的类型,包括 大Page和小Page,地址周期为3,4,5。当然,XSELNAND管脚也要为1。3. OneNAND 启动首先XSELNAND管脚为0,其次0M4:l为0110,为OneNand启动模式。4. MODEM 启动当0M4:1 为0111的时候,为MODEM启动。S3C6410通过MODEM接口下载boot代码到内部RAM中,然后进行引导。5. IROM启动当OM4:1 为1111的时候,从Internal ROM中启动,
9、此时GPN15:13用于识别设备的类型。这种模式以前没见过,这里具体介绍一下。IROM 模式可以支持 MoviNand, SD/MMC,iNand,OneNand 和 Nand 等。关于 IROM 的引导,具 体过程如图:GPN 15:13 jBooting device selection pinOM = Boot1. 处理器上电后,当OM4:1=1111时,运行iROM中的程序,这个程序被称为Bootloader0(BL0),它会做一些初始化的工作。2. 然后根据GPN15:13的管脚设置,选择从相应的设备(SD/MMC/OneNand/Nand)中的指定 区域读取4KB的程序到Stepp
10、ingStone中运行,这段代码被称为Bootloader1(BL1)。3. BL1可以初始化系统时钟,UART, SDRAM等设备,然后拷贝Bootloader2(BL2)到SDRAM 中。4. 跳转到SDRAM中的BL2,继续运行,BL2可以支持更强大的功能,可以将OS加载到SDRAM 中,然后运行OS。整个过程中,IROM是最先被运行的,它会首先做一些初始化,具体IROM的流程如下:1. 禁用 Wat ch-dog2. 初始化TCM3. 初始化设备拷贝函数,用于拷贝BL1到SteppingStone中4. 初始化栈区域5. 初始化PLL6. 初始化指令Cache7. 初始化堆区域& 拷贝 BL1 到 SteppingStone 中9. 验证BL110. 跳转到SteppingStone中运行 还是看一下流程图吧,理解起来会更直观一些,IROM启动流程如图: