uboot是如何启动的:(以S5PV210为例)
- 当S5PV210开机之后,先运行IROM中的BL0,BL0的其中一项工作就是将启动介质中的前16K代码(也就是uboot的前16K)拷贝到内部的IRAM中。
- 之后跳转至IRAM的0xD0020010处开始执行代码(这部分代码叫做BL1),这部分代码的主要功能就是初始化DDR,并将整个uboot都拷贝DDR中。
- 之后通过一个长跳转指令跳转到DDR中去执行剩下的uboot代码。程序就在uboot(裸机程序)这个死循环中,不 断 执行(此时uboot就启动了)。
- 启动之后的死循环请看我的博客点击打开链接。
- 在死循环中主要处理命令和环境变量。这个死循环可以认为是个处理命令和环境变量的shell,在这里需要纠正一个误区,shell并不是操作系统所独有的,裸机程序也能实现shell,uboot中的shell就是一个裸机程序下的shell(shell的作用是实现人机交互的平台)。要想操作uboot就需要通过shell的命令,shell的命令可以用来部署系统(即内核和根文件应该在flash中的什么位置)、设置环境变量、启动内核等等所有操作都需要通过uboot的shell来完成。