一.简介:
U-Boot是通用的Bootloader,是遵循GPL条款的开放源代码项目。
有下面特点(只列重点):
1.U-Boot的作用是系统引导,支持 linux,VxWorks, QNX, RTEMS, ARTOS, LynxOS, android等嵌入式操作系统
2.支持NFS挂载
3.有丰富的设备驱动源码,如串口,以太网,SDRAM等
4.上电自检
二.U-boot的源码结构
源码可从https://sourceforge.net/directory/os:windows/或https://www.denx.de/wiki/U-Boot/SourceCode获取
三.U-boot工作流程(即BootLoader)
1.初始化硬件:关看门狗,设置时钟,初始化串口,以及各种驱动,设置SDRAM,初始化NAND FLASH/NOR FLASH
2.如果BootLoader比较大,要把它重定位到SDRAM
3.把内核从NAND FLASH/NOR FLASH读到SDRAM(因为我们的程序一般放在nor上或者是nand上 ,为什么不直接放在运行内存RAM(SDRAM)上呢,因为RAM上电会丢失。程序不能在flash上跑,所以要把flash中的程序读到SDRAM上)
4.设置栈(为了用到c库,因为汇编工作能力有限)
5.启动内核