uboot学习——初步了解及编译体验

2019-04-14 17:14发布

首先让我们比较一下Windows平台和嵌入式Linux平台下的启动过程。Windows平台:上电——>BIOS——>引导操作系统——>识别盘符(C盘、D盘等)——>运行应用程序
嵌入式系统:     上电——>bootloader->linux内核——>挂接根文件系统——>运行应用程序
从两者的启动过程,可以发现boot loader 的作用和BIOS类似,即初始化硬件设备、建立内存空间的映射图,将系统的软硬件环境带到一个合适的状态,最终启动内核。由于boot loader对硬件的依赖性很强,而嵌入式系统的硬件又往往大不相同,因此boot loader通常要针对不同的硬件修改源码才能正常使用。U-Boot(Universal Boot Loader)正是boot loader中的佼佼者,它是遵循GPL条款的开放源码项目,支持多嵌入式操作系统内核也支持多个处理器系列,功能灵活而强大。

下面就进行uboot 的编译体验。uboot版本:u-boot-1.1.6uboot补丁:u-boot-1.1.6_jz2440.patch开发平台:JZ2440开发板
uboot的编译过程通常分为以下四步:解压缩、打补丁、配置、编译。使用tar命令将uboot压缩包解压缩。
进入uboot目录,打补丁,因为我们已经进入了uboot目录,所以打补丁时使用了-p1来让命令忽略路径的第一个参数。
接下来对uboot进行配置。
最后执行make指令进行编译,编译的过程会比较长。
至此uboot的编译已经全部完成,下面把uboot烧写到开发板上的NOR flash进行体验。NOR启动上电之后十秒内按空格进入uboot,这个菜单是韦东山老师添加的,原版uboot1.1.6并没有这个菜单。
按q退出菜单之后,输入help可以看到uboot的全部命令,在终端输入命令即可进行相关的操作。
前面提到了uboot是boot loader的一种,最终目的也是启动内核。为了实现这个目的,uboot要从flash中把内核读到SDRAM上去,然后启动内核。所以uboot的基本功能有:关看门狗、初始化时钟、初始化SDRAM,读flash等这些硬件相关的操作。这些功能和单片机程序是一样的,uboot也因此可以被称为单片机程序集大成者。此外为了开发方便,uboot中还会添加写flash、网关、USB、串口等开发功能。