首页 > 代码库 > u-boot的学习(一)

u-boot的学习(一)

一、U-boot的版本选择

1. 操作系统分层的概念

技术分享

Windows的bios是集成在主板上,它是一段固化得程序,然后进入内核模式,在内核模式中进行硬件初始化,API初始化;紧接着进入用户模式,最后进入应用模式。

Linux系统下,bootloader要把内核的zImage文件从EMMC中读取到内存中。

2.bootloader种类介绍

Bootloader   描述 x86 ARM PowerPC
LILO   Linux磁盘引导程序
GRUB GNU的LILO替代程序
ROLO 从ROM引导Linux而不需要BIOS
Etherboot 通过以太网卡启动Linux系统的固件
LinuxBIOS 完全替代BUIS的Linux引导程序
BLOB LART等硬件平台的引导程序
U-boot 通用引导程序
RedBoot 基于eCos的引导程序 是  
Loadlin 从DOS引导Linux   是  
vivi 针对三星的ARM来定制,2440上有用到      

 

3.底层代码的编写方式

  技术分享

4.u-boot的版本选择

  标准:够用即可

  下载地址:ftp://ftp.denx.de/pub/u-boot/

  exynos4412架构如下图:

技术分享

  cortexA9为ARM公司架构,其他是三星附加的外设架构。cortexa9为arch对应u-boot目录中的arch目录下,外面的外设对应u-boot中的board目录,相当于PC机中的南桥。

目录结构如下:

技术分享

board目录下:

  • goni开发板:第三方制作的开发板,非三星的开发板,型号为Exynos 3110(SPPC110,S5PV210),CPU为Cortex-A8单核
  • universal_c210:型号为exynos4210(S5PC210,S5PV310),Cortex-A9双核
  • origen:针对A9双核
  • smdk5250:Cortex-A15双核
  • trats:Cortex-A15双核

二、exynos4412 u-boot

exynos 4412 SCP 有64KB的iROM和256KB的SRAM(iRAM)作为内部存储。我们可以使用nandflash、SD/MMC卡、eMMC和USB设备作为启动设备。

iROM:这段地址空间对应exynos 4412内部固化的一段程序,exynos4412启动的第一条指令就存放在这里。它主要用来初始化基本的系统功能,比如时钟。

iRAM:这段地址空间对应的是exynos 4412内部的一个存储器,这段存储器的特点是上电就可以用,不用初始化。

BL1:First boot loader,存储在扩展存储器上,由三星提供的二进制代码,不开源,BL1需要iROM中的代码去校验。
BL2:Second boot loader, 存储在扩展存储器上,不由三星提供,开源,对应OS。

OM(拨码开关):操作模式管脚,是由iROM控制的

2.exynos 4412的启动

(1)iROM代码

技术分享

  •  iROM中的代码会关掉看门狗,中断和内存管理单元(MMU),关掉D-cache,使能I-cache。
  • 若是设备直接从休眠状态唤醒,则直接进入BL1或是去其他地方,不执行u-boot(需要设置休眠标志位,Direct-Go flag)。即跳过U-BOOT,直接去运行系统。
  • verify BL1:校验BL1
  • Decrypt BL1:BL1加密
  • OM拨码开关在iROM中起作用。Get Bootmode(OM)。OM的启动图如下所示:

技术分享

  电路图如下:

技术分享  

技术分享 技术分享

  • 控制启动设备的主要是OM1-OM5引脚,OM0和OM6被直接拉到低电平。OM的引脚高低电平对应OM的启动模式。
  • OM引脚未拨动到开关的右边(SW-4)时,都未低电平,此时对应的OM位为 0b 00000   查OM表格可以知道为保留位,不执行任何启动
  • XOM2拨动到右边时候,电路导通,VDD1V8_EXT拉高XOM1上的电平,此时为0b00010,为SMMMC_CH2启动。

3.U-boot分析

Uboot引导程序分为BL1、BL2、U-boot、TZSW。如下图所示:

技术分享

U-boot的镜像是由BL1、BL2、U-boot.bin和TZSW组成的。其中各部分大小如上图。

 U-boot的启动流程如下:

技术分享

 

  • iROM从启动设备中加载BL1的镜像到内部256KB的SRAM中。启动设备是通过操作模式管脚(OM)选择的。根据安全启动的键值,IROM将对BL1的镜像做一个完整的校验。
  • BL1初始化系统时钟,DRAM控制器。在初始化DRAM控制器后,它从启动设备中加载OS镜像到DRAM中。根据安全启动键值,BL1对系统镜像做一个完整的校验。
  • 在启动完成后,BL1跳到操作系统。
  • 启动步骤:
    • 上电后,exynos4412会先启动片内的iROM中的程序,此步骤做两件事情:(1)初始化提供执行ARM代码的系统基本环境;(2)从启动设备(SD/MMC, eMMC4.3, eMMC4.4和NAND)中加载BL1的程序到片内RAM(SRAM)中。
    • u-boot的SPL镜像分为两部分,一部分为ubootspl.bin(16K),另一部分仍然为u-boot.bin(210K左右),BL1的代码(ubootspl.bin)已经加载到iRAM当中,然后配置DDR内存(DRAM),再把210K的u-boot.bin加载到SDRAM内存当中,接着BL1直接跳转到SDRAM的u-boot.bin当中开始运行。

 

u-boot的学习(一)