`
uop_hai
  • 浏览: 18959 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

S3C6410启动模式介绍

ARM 
阅读更多

S3C6410启动模式介绍

http://blog.csdn.net/nanjianhui/archive/2009/06/01/4230565.aspx

目前的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启动模式

    "s3c6410启动模式" S3C6410 是一款 ARM 处理器,由三星公司生产。该处理器支持多种启动模式,包括 NAND flash、NOR flash、OneNAND、MODEM 和 IROM 等。这些启动模式通过外部管脚 OM[4:0] 的拉高拉低来决定是从哪个...

    Uart.rar_s3c6410_s3c6410 uart_s3c6410.inc

    例如,S3C6410的UART模块中的UART_FCR(帧控制寄存器)用于设置接收和发送FIFO的模式,UART_LCR(线路控制寄存器)用于设置数据位、停止位和奇偶校验等。此外,还需要正确配置UART_DLL(低波特率发生器)和UART_DLM...

    S3C6410头文件

    1. **处理器寄存器定义**:例如`s3c6410_reg.h`,这类文件详细定义了S3C6410处理器的各个寄存器及其用途,开发者可以通过操作这些寄存器来控制CPU的工作模式、中断处理、电源管理等。 2. **中断服务例程(ISR)**:如...

    S3C6410 IROM_SD_EBOOT 启动代码

    【S3C6410 IROM_SD_EBOOT 启动代码详解】 S3C6410是一款基于ARM926EJ-S内核的高性能微处理器,广泛应用于嵌入式系统设计,如智能手机、平板电脑等。该处理器支持多种启动方式,其中包括通过IROM(内部只读存储器)...

    S3C6410外部中断设置步骤

    本文将详细介绍如何设置S3C6410的外部中断,以便开发者能够充分利用其硬件中断机制进行系统设计。 首先,S3C6410的中断管理依赖于中断控制器VIC(Vector Interrupt Controller),它提供了更灵活的中断处理方式,...

    S3c6410 IROM Boot Spec

    此文档主要介绍了S3C6410内部ROM启动的相关细节和技术要点。 #### 二、S3C6410内部ROM启动机制 **1. 启动流程** - **阶段一:** 在S3C6410启动时,处理器首先执行内置的内部ROM代码。 - **阶段二:** 内部ROM代码...

    S3C6410 datasheet V1.1

    《S3C6410数据手册:深入解析与应用指南》 S3C6410是一款由Samsung公司推出的高性能、低功耗的微处理器,广泛应用于移动设备、嵌入式系统以及消费电子产品中。该处理器基于ARM11架构,提供强大的处理能力和丰富的...

    s3c6410之Uart裸机代码

    本篇将详细介绍S3C6410裸机环境下的Uart编程,以及如何使用RVDS(RealView Development Suite)进行开发。 首先,我们需要理解S3C6410的UART工作原理。UART是一种异步串行通信协议,通过数据位、停止位、奇偶校验位...

    S3C6410 裸机程序

    S3C6410具有集成的LCD控制器,支持多种分辨率和颜色模式。开发LCD显示功能,需要配置LCD控制器的寄存器,例如设置屏幕分辨率、像素格式、刷新率等。同时,还需要处理帧缓冲区,将数据写入内存中对应的位置,由LCD...

    S3C6410-ARM11 IIC模块 裸机代码,完美运行

    《S3C6410-ARM11 IIC模块裸机代码详解及应用实践》 S3C6410是一款基于ARM11架构的高性能微处理器,广泛应用于嵌入式系统设计,如智能手机、平板电脑以及工业控制等领域。在S3C6410中,IIC(Inter-Integrated ...

    s3c6410裸机dma程序

    在嵌入式系统开发中,S3C6410是一款广泛应用的ARM Cortex-A8处理器。这个处理器具有高性能和低功耗的特点,广泛用于移动设备、工业控制、多媒体应用等领域。"s3c6410裸机DMA程序"是指在不依赖操作系统的情况下,直接...

    S3C6410 SPI 驱动

    S3C6410是一款基于ARM Cortex-A8内核的微处理器,广泛应用于嵌入式系统设计,特别是在工业和消费电子设备中。SPI(Serial Peripheral Interface)是一种串行通信接口,常用于连接低速外设,如传感器、显示屏、闪存等...

    s3c6410 SPI 总线驱动

    S3C6410 SPI驱动程序的主要任务是初始化SPI控制器,配置其工作模式(如时钟极性、相位、数据宽度等),并提供读写数据的接口。在Linux内核中,SPI驱动一般包含以下关键组件: 1. **驱动注册**:驱动程序需要在内核...

    S3C6410裸机中断源代码

    在嵌入式系统开发中,S3C6410是一款广泛应用的ARM9处理器,它具有丰富的外设接口和强大的处理能力。对于S3C6410裸机中断源代码,我们主要关注的是如何利用中断机制来实现硬件事件的响应。中断是嵌入式系统中的关键...

    spi.rar_6410 s_S3C6410 SPI.dll_s3c6410 spi ar88_s3c6410_spi_winc

    在这个"spi.rar_6410 s_S3C6410 SPI.dll_s3c6410 spi ar88_s3c6410_spi_winc"的压缩包中,我们重点关注的是S3C6410处理器在Windows CE 6.0(简称Wince6.0)操作系统下的SPI驱动程序。 S3C6410是Samsung公司推出的一...

    S3C6410开发硬件

    ### S3C6410开发硬件知识点 #### 一、产品概述与功能特性 **S3C6410**是一款高性能嵌入式处理器,适用于多种应用领域,包括但不限于移动设备、工业控制、多媒体播放器等。该处理器在667MHz的主频下稳定运行,具有...

    s3c6410中文手册完整版

    **S3C6410处理器详解** S3C6410是一款由Samsung公司推出的高性能、低功耗的ARM11架构微处理器,广泛应用于移动设备、嵌入式系统和工业控制等领域。这款处理器以其强大的处理能力、丰富的外设接口和高效的能源管理而...

Global site tag (gtag.js) - Google Analytics