在说uboot之前,先看一下PC机是怎么启动的?
pc上电、bios、引导操作系统、识别C盘、运行应用程序。
同样的在嵌入系统里面,启动过程:一上电的时候,bootlolder(引导linux内核)、挂接根文件系统、运行应用程序。
bootlolder的最主要的目的:启动内核
补丁?
所谓的补丁就是我们在原码包上做了什么修改,我们将这些修改单独列出来放到一个文件,然后发布的时候,把补丁文件给别人家即可。
怎么打补丁?
补丁文件中的 “—”表示原来的代码,“+++”表示修改后的代码;比如:
其中“-”表示原来的文件,“+”表示修改后的代码;
补丁打到哪里去?在补丁文件的前面有说明,要注意路径,如果要忽略某个目录的话,可以:
打完补丁之后,就可以编译uboot,要想uboot支持哪些单板,需要配置;
配置完之后,直接执行make开始编译;
编译完成以后,会生成一个u-boot.bin的文件,如图:
然后将这个bin文件烧写到开发板上面,烧写完成以后在串口上可以看到它的启动信息;
输入help可以查看uboot有哪些命令;
如果想查看具体哪个命令的用法,可以输入“? 命令名”即可。
如何查看uboot有哪些环境变量?print
怎么设置环境变量? set
在嵌入式操作系统中,bootloader有很多种,我们这里使用的是uboot;
对于PC机来说内核存在于硬盘上面,BIOS从硬盘上读入内核;
而对于嵌入linux来说,一般从flash中读取出内核,然后放到SDRAM中去。可以看出,uboot要具备的基本功能:能够读取flash、写之前要初始化SDRAM(要初始化时钟、初始化串口(因为要看一些启动信息))、启动内核。
在开发阶段,我们想让它增加更多的功能,比如说加入定flash的功能,因为在开发中(为了开发方便),内核也是通过uboot通过网络或USB把内核下载到开发板中去的。
总结一下uboot的功能:
uboot的源码结构:
这些源码是怎么组织起来构成一个uboot的,最简单的方法就是它的makefile文件。