ARM学习笔记5-S5pv210开发板启动

启动过程为何需要设计如此复杂?

原因在于器件(芯片)本身的特性,常用器件特性如下:

内存:

SRAM(静态内存)  缺点:容量小、价格高、优点:访问速度快、不需要软件初始化,上电直接使用(内部实现电路决定)

DRAM(动态内存)  优点:容量大、价格低、缺点:访问速度慢、需要软件初始化,上电不能直接使用(内部实现电路决定)

外存:

NorFlash:   缺点:容量小、价格高、优点:访问速度快、能直接总线式访问(上电后CPU可以直接读取,一般做启动介质)
NandFlash:  优点:容量大、价格低、缺点:访问速度慢、不能总线式访问(上电后CPU不能直接访问,需要软件初始化后才能使用)
  • 单片机:内存需求量小,适合用:

    • SRAM+NorFlash
  • 嵌入式系统:内存需求量大,软件复杂、适合用:

    • DRAM+NorFlash
    • DRAM+NandFlash
    • DRAM+NorFlash+NandFlash
  • PC设备: 内存需求量大,软件复杂、存储需求大、适合用:

    • DRAM(DDRx)+NorFlash(BIOS)+大容量硬盘
S5PV210(SOC)启动方式
内置IROM(SROM 64KB)+内置IRAM(SRAM 96KB)+外接DRAM+外接NandFlash(针对实际开发板硬件决定) 
  • S5PV210启动过程:如下图

    1. iROM can do initial boot up : initialize system clock, device specific controller and booting device.
    2. iROM boot codes can load boot-loader to SRAM. The boot-loader is called BL1.then iROM verify integrity of BL1 in case of secure boot mode.
    3. BL1 will be executed: BL1 will load remained boot loader which is called BL2 on the SRAM.then BL1 verify integrity of BL2 in case of secure boot mode.
    4. BL2 will be executed : BL2 initialize DRAM controller then load OS data to SDRAM.
    5. Finally, jump to start address of OS. That will make good environment to use system.
      这里写图片描述
      1. CPU上电后先从内部IROM(soc内部NORFLASH,64KB)中读取预先设置的代码(BL0),执行。(只能初始化SOC内部设备,如时钟、关闭watchdog…..)
      2. 上段代码判断OM引脚的启动方式.然后到相应外部存储设备去读(块设备copy函数)取第一部分(BL1<=16KB)启动代码到内部IRAM(96KB)中,执行(负责初始化nandFLASH),然后将BL2读取到IRAM(剩余80KB)中执行.
      3. 上段BL2执行后(负责初始化DRAM)将OS从NAND读取到DRAM,启动OS。
  • 完整引导流程:如下图
    这里写图片描述

  • BL0、BL1内存地址映射: 如下图
    这里写图片描述

    BL0:

    1. Disable the Watch-Dog Timer                                                                           (关闭看门狗)
    2. Initialize the instruction cache                                                                     (初始化指令缓存)
    3. Initialize the stack region                                                                          (初始化栈)
    4. Initialize the heap region.                                                                          (初始化堆)
    5. Initialize the Block Device Copy Function.                                                           (初始化块设备复制函数)
    6. Initialize the PLL and Set system clock.                                                              (初始化并设置时钟系统)
    7. Copy the BL1 to the internal SRAM region                                                             (复制BL1到内部IRAM)
    8. Verify the checksum of BL1.If checksum fails, iROM will try the second boot up. (SD/MMC channel 2)    (检查BL1的校验和,如果校验和失败,尝试二次启动)
    9. Check if it is secure-boot mode or not.                                                              (检查是否是安全模式启动)
    10. Jump to the start address of BL1                                                                    (跳转到BL1执行)
    
  • BL1的结构(BL1+Header):如下图:
    这里写图片描述

    BL1:

    实际启动程序(部分Bootloader)或者裸机程序,用户自己决定……

后续裸机程序都是通过USB DNW下载到BL1的执行地址上(0xD002 0010),CPU把用户写的裸机程序当做启动程序了……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值