Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383090
  • 博文数量: 149
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-27 14:53
文章分类

全部博文(149)

文章存档

2016年(3)

2015年(2)

2014年(144)

我的朋友

分类: LINUX

2014-10-09 15:18:33

    以 Tiny6410 为例,分析S3C6410启动方式及启动流程
S3C6410手册 03-SystemController:
   
Internal clocks will be generated using external clock source as illustrated in Table 3-1. The OM[4:0] pins determines 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启动分析


                       ——忠于梦想 勇于实践    linux_xpj@opencores.org
阅读(1550) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~