Chinaunix首页 | 论坛 | 博客

分类: LINUX

2012-11-13 09:58:26

    1.S3C6410 启动过程分成 BL0 BL1 BL2 几个阶段, 其中 BL0 是固化在 S3C6410 内部的 IROM 中, 该段程序根据所选择的启动模式从存储介质加载 BL1S3C6410 支持从多种存储介质(如:NAND、OneNand、SD/MMC Card(有时也叫MoviNand))中启动。
    2.BL0 在加载 BL1 前已经做了相关硬件的初始化,如:关闭看门狗、初始化 PLL、
初始化 SD 卡控制器等。
    3.对于 SD 卡, BL1 位于 (TotalBlocks - 18) 处的 Block。BL1 由 BL0 加载到 0x0C000000处运行,大小为8K。


S3C6410 IROM 启动流程图:

   

Perform the following steps for iROM (BL0) boot-up:
1. Disable the Watch-Dog Timer.
2. Initialize the TCM.

3. Initialize the Block Device Copy Function.
4. Initialize the stack region.
5. Initialize the PLL.
6. Initialize the instruction cache.
7. Initialize the heap region.
8. Copy the BL1 to the stepping stone region.
9. Verify the integrity of BL1.
10. Jump to the stepping stone
.
   

5. Initialize the PLL.
   
  
    虽然 IROM 里面的代码已经初始化了时钟,但是这些时钟的值并不一定是我们想要的,通常我们需要在 BL1 代码中重新初始化时钟。
8. Copy the BL1 to the stepping stone region.
   

    S3C6410 IROM 启动对 SD 卡里数据的存放格式有一定的要求,通常在 Linux 系统下使用 dd 命令来制作符合 IROM 启动的 SD 卡。
#dd if=./led.bin of=/dev/sdb seek=$(TotalBlocks-18)
#sync (同步)

或:#dd iflag=dsync oflag=dsync
if=./led.bin of=/dev/sdb seek=$(TotalBlocks-18)   

      
   
 
注意:BL1 的起始地址是映射到 0x0C000000,不要误认为是 0x0。

相关资料下载

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