作者:曹忠明,华清远见嵌入式学院讲师。
U-boot(universal bootloader)是德国DENX小组开发的用于多嵌入式CPU的bootloader程序,遵循GPL条款。
以s3c2410为例Uboot的启动过程大体可分为两个部分,第一部分是初始化系统为第二部分做准备,多用汇编实现,第二部分实现外围设备的初始化和内核的下载及参数的传递,开始用C实现。
下面是uboot启动流程
Uboot启动后的内存分配情况。
34000000
33f80000 boot搬移地址
……
33f40000 堆栈开始地址
……
33f3ff80 全局变量存放位置
……
33f3ff7d abort栈
……
30008000 内核下载地址
……
30004000 一级页表地址
……
30000100 uboot传递参数存放地址
……
30000000 SDRAM开始地址
上面这个就是基于s3c2410,uboot的启动过程及内存分配。