课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 3.汇编语言 -作业 4.Bootloader -作业 5.Linux内核移植 6.嵌入式Linux程序设计 7.图形用户接口QT 8.其他框架介绍; 9.嵌入式物联网应用系统设计

启动过程

U-Boot运行过程分为BL0, BL1(tiny210-spl.bin), BL2(u-boo.bin)三个阶段。

BL0阶段:芯片厂家编写的启动代码,出厂前已固化于芯片内部IROM中。

BL1阶段:U-Boot源码在编译后生成两个重要的文件,tiny210-spl.bin和u-boo.bin。存放于外部存储器(SD卡或NandFlash)中。其中iny210-spl.bin为BL1阶段运行的代码。在启动过程中,由BL0将BL1复制到芯片内部IRAM后运行,完成板级设备如时钟、SDRAM、串口、NandFlash等的初始化,复制BL2到SDRAM。BL1代码主要在start.S、low_level_init.S和mem_setup.S等文件中进行定义。

BL2阶段:u-boo.bin为BL2阶段运行的代码。主要执行board.c,最后执行main.c中的main_loop()函数,完成在控制台中接受输入命令

启动代码位置

U-Boot的启动代码分布在start.S、low_level_init.S、mem_setup.S、board.c和main.c文件中。依据上节内容可知U-Boot的启动入口文件是start.S。通过执行该文件,完成U-Boot启动过程。
U-Boot的启动过程。
(1)系统初始化,定义中断向量表,声明代码段、bss段;
(2)reset 入口,切换到SVC模式;
(3)关闭TLB,MMU,cache,刷新指令cache 数据cache;
(4)关闭内部看门狗,禁止所有的中断;
(5)串口初始化;
(6)配置tzpc(TrustZone Protection Controller);
(7)配置系统时钟频率和总线频率;
(8)设置SDRAM区的控制寄存器;
(9)将U-Boot程序代码复制到SDRAM,跳到C代码部分执行;
(10)提供控制台,完成命令交互;
(11)依据设置参数,引导启动操作系统。
 

工作模式

U-Boot包含两种不同的工作模式:‘启动加载’模式和‘下载’模式。

启动过程中,U-Boot默认的为启动加载模式,允许用户切换到下载模式。

当U-Boot工作于下载模式时,宿主机需要借助串口或网络接口连接到目标机,此时宿主机成为目标机的一个终端用户,目标机中的U-Boot会向终端提供一个简单的人机交互(UI)命令行接口。随后借助U-Boot提供的命令,可将内核映像和根文件系统映像等系统文件下载到目标机的SDRAM中,再使用相关命令将下载文件写到目标机的FLASH类固态存储设备中。

(1)支持NFS挂载、yaffs2文件系统、从FLASH中引导压缩或非压缩系统内核。
(2)基本辅助功能强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统;提供交互命令接口,适合系统在不同开发阶段的调试要求与产品发布;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM。
(3)CRC32校验可校验FLASH中内核、RAMDISK镜像文件是否完好。
(4)提供设备驱动。如串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等常用设备驱动。
(5)上电自检功能SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号。
(6)特殊功能XIP内核引导。应用程序可以直接在nor flash闪存内运行,不必再把代码读到系统RAM中。