uboot其实和电脑的BIOS是一个原理,它主要做两件事:
(1)初始化硬件;
(2)将系统文件(或者说是内核)从flash中读出来加载到DDR里面执行。
给大家解释下面几个问题:
为什么要用uboot?
1、linux等操作系统一开始的设计是在inter的X86上,是有BIOS的。而bootloader是嵌入式设备才有的,uboot属于bootloader的一种,类似BIOS,完成对操作系统的加载。
2、基于上面的考虑,操作系统在设计之初就是基于BIOS的引导而实现的,所以操作系统是单纯独立的。想想笔记本跟台式机可以安装相同的Windows系统,但是BIOS一定是不一样的(硬件设计不一样,BIOS是主板设计厂商提供的),放在嵌入式设备上也可以这么理解。
3、操作系统的启动是个复杂的过程,单纯依靠硬件的时序触发是不可能完成的。操作系统一般放在非易失的存储介质中,比如Flash等,也可以通过网络加载,前提是一定要有代码能够驱动相应的硬件或网络运行,也就是驱动程序(有时还需要支持相应的文件系统读写)。初始化硬件这部分工作需要uboot完成。
uboot的作用?
uboot属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核所以,由上面描述的,就知道,uboot需要具有读写flash的能力。
uboot是怎样引导启动内核的?
初始化硬件:uboot刚开始被放到flash中,板子上电后,会自动把其中的一部分代码拷到内存中执行,这部分代码负责把剩余的uboot代码拷到内存中,然后uboot代码再把内核部分代码也拷到内存中,并且启动,内核启动后,挂着根文件系统,执行应用程序。
uboot的大致工作过程:
1、第一阶段主要做的是硬件的初始化,包括,设置处理器模式,关闭看门狗,屏蔽中断,设置栈,设置时钟,从flash拷贝代码到内存等,然后程序跳转到主函数。
2、第二阶段是从flash中读出内核然后启动内核。
扫描下方二维码关注微信公众号:小云君网络
原创不易,感谢大家支持!!