Linux初探(6)--关于uboot

关于uboot

1.uboot是个最大的裸机程序,uboot是研究裸机最好的范例,他包含了非常丰富的功能,而且是源代码全开放。
2.常用的BootLoader:
在这里插入图片描述
3. uboot没有多任务运行的机制,不能实现任务调度等操作系统应用的功能,虽然有协议栈有文件系统,但是没有多任务运行的内核。这是uboot和linux的本质区别
4. uboot的源码为
在这里插入图片描述
net文件夹中就是TCP/IP协议栈
在这里插入图片描述 这里面的每一个文件对应一个协议,而且是全开源的,很多人想移植的网络功能,都在里面 ① board文件夹:里面是板级的代码 ② CPU文件夹:对应不同处理器的初始化代码。uboot能支持非常多的处理器和非常多的不同的开发板。选择哪种开发板通过 u-boot.lds文件,即编译连接脚本,用来描述输出文件的内存布局。 该脚本打开后有以下几句: .text : { cpu/arm_cortexa9/start.o (.text) cpu/arm_cortexa9/s5pc210/cpu_init.o (.text) board/samsung/smdkc210/lowlevel_init.o (.text) common/ace_sha1.o (.text) *(.text) } 先执行文件 start.s, start.0是原文件start.s生成的,然后在执行cpu_init.s cpu_init.s 这个文件里的汇编,主要功能就是初始化DDR内存,也就是设置DDR的参数,让DDR3能工作起来。cpu_init.s 这个文件里有个函数 mem_ctrl_asm_init_ddr3功能就是初始化内存DDR。如果我们换了一种内存颗粒,可以修改这里面的代码。mem_ctrl_asm_init_ddr3‘被’lowlevel_init‘调用了,进一步会发现 start.s里调用了 函数 lowlevel_init ③drivers文件夹:里面是一些驱动,GPIO,IIC,PCI等 5. uboot最初执行的是汇编,集中在这三个汇编文件当中,然后就是C代码了