1.为什么要有uboot
uboot的使用,和相关应用
环境变量和命令得连接
ddr和flash如何使用Uboot来管理,
Uboot是如何来引导操作系统的?
uboot是来启动操作系统内核的,操作系统无法自启动,需要uboot来帮助
典型的计算机系统有pc机,嵌入式设备有平板,游戏机,单片机设备有电视机,电饭锅
计算机系统的组成一般都是外部储存器 flash 加硬盘加cpu加内部储存器 DDR3 SRAM
PC机启动过程 bios程序部署在pc机主板上(随主板机出厂已经预置了),操作系统部署在硬盘上,内存在掉电时无工作。
上电后先执行bios程序,bios程序负责初始化硬盘,初始化DDR3内存,从硬盘上读取Os镜像到DDR中,然后跳转到DDR3中去执行os直到启动。
嵌入式系统的启动过程,其实是参考pc机的,uboot程序部署在flash(能支持flash启动的cpu上),os部署在flash上,嵌入式系统中没有硬盘,用flash代替.
系统上电后先执行uboot,然后uboot来启动,负责初始化DDR,然后将os从flash中读取到ddr中,然后启动os,内核启动后,再加载根文件系统
Uboot部署内核,提供命令行给用户操作,操作flash等板子上的驱动.
2.uboot必须解决哪些问题
开机自启动,
soc的多种启动方式,Uboot的开机启动必须根据soc的启动方式来设计Uboot
start.S文件写了开机自启动这块。
uboot还可以刷机,通过fastboot
引导内核启动并给操作系统传参,我们可以在uboot中事先给LINUX内核设置一些启动参数,内核启动后会在特定位置找到相关参数并解析。这些参数将被用来指导linux内核的启动过程
soc级和板级,soc级就是soc内部外设,板级就是soc外设。
uboot的入口就是开机自启动,Uboot的唯一出口就是启动内核,启动内核以后,uboot的生命周期就结束了。uboot的本质是一个裸机程序,一般的Uboot在180k到350k之间,uboot这个裸机文件本质上是一个开源项目,配备,编译后会生成.bin文件。
uboot可以提供一个shell界面(和Linux很像,只是命令集不一样)比如说ls
Uboot启动后大部分时间和工作都是在shell下完成的,比如说输入命令,设置环境变量。
3.所以说必须得学会命令和环境变量
学习uboot中常用命令
Uboot设计时借鉴了linux的设计模式,环境变量名都是系统内置的,认识就是认识,不认识就是不认识
例如要修改一个程序的运行方法,只需要修改环境变量即可。
bootdelay环境变量,修改延迟时间。
setenv
设置环境变量的参数
设置命令会有特殊符号(例如单引号)
;将两个命令隔开,
movi命令族是什么意思
movi init
movi read
movi write
printenv
打印出系统所有的环境变量,不用加参数。
flash中有专门保存环境变量的分区。flash中有环境变量分区
s5p6818开发板的uboot设置
设置启动参数
setenv bootcmd "ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000"
setenv bootargs "lcd=vs070cxn tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4"
如果用的是MIPI接口,则设置如下:
setenv bootargs "lcd=wy070ml tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4"
设置根文件系统的路径,设置文件系统的属性为ext4,初始化lcd屏幕,