1:开机可直接启动
(1)一般的SOC都支持多种启动方式,SD卡,NarFlash,NandFlash等。。。uboot要能够开机启动,必须根据具体SOC的启动设计来设计uboot,
(2)uboot必须进行硬件相对应的代码级别的更改和移植,才能够保证可以从相应介质启动。uboot中第一阶段的start.S文件中具体处理了这一块。
2:uboot能够引导操作系统内核启动并给内核传参。
(1)uboot的终极目标就是启动内核。
(2)linux内核在设计的时候,设计为可以被传参。
也就是可以在uboot中事先给linux内核准备一些启动参数放在内存中特定位置然后传给内核,
内核启动后会去特定地址取参数,这些参数将被用于指导linux内核的启动过程。
如果不传参数的话,就需要去修改内核,要重新编译程序,
uboot的环境变量也是这个功能,不用为了修改参数而去修改重新编译uboot
3、能够提供系统部署功能
(1)uboot必须能够被人借助而完成整个系统在Flash上的烧录下载工作。
4、能够进行SOC级和板级硬件管理
(1)uboot中实现了一部分硬件控制能力(初始化了一部分硬件),uboot为了完成一些任务必须让这些硬件工作(SOC级 和 板级),如(Flash,LCD,串口,网卡)
一但UBOOT开始运行,SOC只会单纯运行uboot,别的程序无法运行,一旦结束UBOOT结束运行再无法再回到uboot,内存就被释放掉了。
5、uboot的入口和出口
uboot的入口就是开机自动启动,唯一出口就是启动内核。uboot还可以执行很多任务,
但其他任务执行完后都可以回到uboot的命令继续执行uboot命令,而启动内核命令一旦执行就回不来了