嵌入式Linux uboot知识简介

uboot的就是universal bootloader(通用的启动代码)。

一、uboot的作用

(1)uboot主要作用是用来启动操作系统内核;

(2)uboot还要负责部署整个计算机系统;

(3)uboot中还有操作flash等板子上硬盘的驱动;

(4)uboot还得提供一个命令行界面供人操作。

二、uboot必须解决的问题

(1)自身可开机直接启动

(2)能够引导操作系统内核启动并给内核传参

(3)能够提供系统部署功能

(4)能进行soc级和班级硬件管理

三、uboot的工作方式

(1)uboot是一个开源项目,由若干个.c文件和.h文件组成,配置编译之后会生成一个uboot.bin,这就是uboot这个裸机程序的镜像文件。然后这个镜像文件被合理的烧录到启动介质中拿给soc去启动。也就是说uboot在没有运行时变现为uboot.bin,一般躺在启动介质中。

(2)uboot运行时会被加载到内存中然后一条指令一条指令的拿给CPU去运行。

 

四、uboot的命令式shell界面

(1)普通程序的裸机程序运行起来就直接执行了,执行效果和代码有关。

(2)有些程序需要和人进行交互,于是乎程序中就实现了一个shellshell就是提供人机交互的一个界面),uboot就实现了一个shell

(3)uboot中的shell工作方式和Linux中的终端shell非常像,只是命令集不一样。

 

五、uboot的常用命令

(1)有些命令有简化的别名,譬如printenv命令可以简化为print,譬如setenv可以简化为set

(2)命令中的特殊符号(如单引号),uboot的有些命令带的参数非常长,为了告诉uboot这个非常长而且中间有很多空格的字符串是给他的一整个参数,所以用单引号将这个很长且中间有空格隔开的参数引起来。

(3)命令printenv/print

print命令不用带参数,作用是打印出系统中所有的环境变量。环境变量被存储在Flash的一块专门区域(Flash上有一个环境变量分区),一旦在程序中保存了该环境变量,那么下次开机时该环境变量的值将维持上一次更改保存后的值。

(4)设置(添加/更改)环境变量:setenv/set

用法:set name value

(5)保存环境变量的更改:saveenv/save

save命令不带参数,直接诶执行,作用是将内存中的环境变量的值同步保存到Flash中环境变量的分区。注意:环境变量的保存是整体的覆盖保存,也就是说内存中所有的环境变量都会整体的将Flash中环境变量分区中原来的内容整体覆盖。

彻底更改环境变量的值:第一步用set命令来更改内存中的环境变量,第二步用save命令将其同步到Flash中环境变量的分区。

 

六、网络测试指令:ping

(1)命令用法:ping ip地址

ping是测试开发板和主机之间的网络连接,步骤如下:

1)插上网线

2)设备主机的本地连接IPv4地址为192.168.1.10

3)确认开发板中uboot里几个网络相关的环境变量的值对不对。最重要的ipaddr(这个环境变量表示当前开发板的IP地址),这个地址必须和主机的IP地址在同一个网段。

 

网段的概念:一个IP地址分为两部分,一部分是网段地址,另一部分是主机地址(由子网掩码来区分哪一部分是网段,哪一部分是IP地址)。在子网掩码225.255.255.0的情况下,192.168.1.10这个IP地址的前三部分(192.168.1.)属于网段地址,第4部分(10)属于主机地址。

 

七、uboot常用命令tftp

(1)uboot本身主要目标是启动内核,为了完成启动内核必须要能够部署内核,uboot为了部署内核就需要将内核镜像从主机中下载过来然后烧录到本地flash中。uboot如何从主机下载镜像到开发板上?有很多中方式,主流方式是:fastboottftp

(2)fastboot的方式是通过USB线进行数据传输。

(3)tftp方式:

1)ubuntu搭建tftp服务器

2)设置开发板uboot的环境变量,注意serverip必须设置为虚拟机ubuntuip地址。(serverip这个环境变量的意义就是主机tftp服务器的ip地址)

3)pingubuntu,然后开始下载:tftp 0x30000000 zImage-qt(意思就是将服务器上名为zImage-qt的文件下载到开发板内存的0x30000000地址处)

4)镜像下载到开发板的DDRuboot就可以用movi指令进行镜像的烧写了。

 

猜你喜欢

转载自blog.csdn.net/weixin_40109283/article/details/80001003