S3C6410启动方式及启动流程

来源:互联网 发布:房贷利息抵扣个税算法 编辑:程序博客网 时间:2024/05/17 22:12

转自 S3C6410启动方式及启动流程 

以 Tiny6410 为例,分析S3C6410启动方式及启动流程
S3C6410手册 03-SystemController:
    
Internal clocks will be generated using external clock source as illustrated in Table 3-1. The OM[4:0] pinsdetermines the operating mode of S3C6410X when the external reset signal is asserted. As described in the table, the OM[0] selects the external clock source, i.e., if the OM[0] is 0, the XXTIpll (external crystal) is selected.Otherwise, XEXTCLK is selected.
    
 
    OM[0] 信号为 S3C6410 时钟源选择信号,当 OM[0] 为 0 时,选择 
XXTIpll;当 OM[0] 信号为 1 时,选择 EXTCLK。Tiny6410 OM[0] 接 GND,因此选择的是 XXTIpll。
    OM[4:1] 信号为 S3C6410 启动方式配置引脚。Tiny6410 通过拨码开关控制,拨到 NAND 一侧 OM[4:1] = 0011;拨到 SD 一侧 OM[4:1] = 1111。

    SELNAND 信号用来选择 Flash 存储器类型,当选择 Nand Flash 时,为高电平;选择 OneNand 存储器时,为低电平。Tiny6410 SELNAND 信号接高电平,因此选择的是 Nand Flash。
    EINT13-EINT15 为 IROM 启动方式设备选择引脚。当使用 IROM 启动方式时,S3C6410 运行片内 ROM 固化的代码,并根据 EINT13-EINT15 引脚状态,选择不同的设备启动。Tiny6410 中这三个引脚都为低电平,因此如果选择 IROM 启动,默认的设备是选择 SD/MMC 卡,事实上确实如此。

      
    
   
    你也许会有疑问,S3C6410 手册中并没有写支持 NAND 启动,相反在 Table3-1 中却出现一个 RESERVED,其实这个RESERVED 就是所谓的 NAND。这些在 S3C6400 手册中可以查看到,S3C6410 的启动方式兼容 S3C6400。
    
   
    Samsung 有意隐藏 NAND,估计是不想让用户过于依赖传统的 NAND 启动,而改用较新的 IROM 启动。

启动流程分析:
1.NAND 启动:对于 NAND 启动,硬件会自动拷贝 Nand Flash 前面 8K 数据到片内
 RAM(Stepping Stone) 中,然后开始从片内 RAM 执行。如果程序大于 8K,必须在前面 8K 代码中完成 DDR 和 Nand Flash 的初始化,并将代码搬运到 DDR 中运行。
2.IROM 启动:对于 IROM 启动,6410 上电复位后会执行 IROM 里面的代码,完成基本的硬件初始化,然后从 SD 卡(假定外部设备使用SD卡)特定扇区拷贝 8K 数据到片内 RAM
(Stepping Stone) 中,并跳转到片内 RAM 运行。如果程序大于 8K,必须在前面 8K 代码中完成 DDR 和 SD 卡的初始化,并将代码搬运到 DDR 中运行。 
      
    注意:如果是 NAND 启动,片内内存是映射到地址 0x0-0x2000,如果前面的代码需要使用 C 函数,通常我们使用命令 ldr sp, =8*1024 将栈指针指向
片内内存最高处。如果是 SD 卡启动,片内内存保持原来的地址 0x0C000000-0x0FFFFFFF(实际上只有8K可用空间),如果前面的代码需要使用 C 函数,通常我们使用命令 ldr sp, =0xC002000 将栈指针指向片内内存最高处。   

关于 IROM 启动更详细的资料可以参考:S3C6410 IROM启动分析

原创粉丝点击