Uboot预备知识

来源:互联网 发布:java堆栈图解 编辑:程序博客网 时间:2024/06/06 19:16

Uboot预备知识

 

什么是uboot

ubootSourceForge上的开源项目,是德国人最早发起的,最后由整个网络上所有感兴趣的人共同维护发展而来的一个bootloaderUboot全称universal bootloader(通用的启动代码)遵循GPL条款的开放源码项目。 可移植性强,支持多种处理器系列。

 

为什么要有uboot

计算机运行时需要的三大部件;CPU + 外部存储器(flash/硬盘) +内部存储器(DDR SDRAM/SRAM)。以PC机的启动为例:PC机上电后先执行BIOS程序,BIOS程序负者初始化DDR内存、初始化硬盘,然后将硬盘上的OS镜像读到DDR中,然后跳转到DDR去执行OS直到启动(OS启动后BIOS就无用了)--->何为BIOS程序?BIOS程序部署在PC机的主板上,出厂时已经预定了,因为操作系统部署在硬盘上,而内存(Norflash)掉电丢失,CPU掉电时不工作,所以需要uboot来作为系统引导,部署程序。

 

uboot 必须解决那些问题呢?

Ubootd的终极目标就是启动内核,为了能达到这个目标,前期必须能解决以下问题。

1.自身可开机自启动。一般的SOC都支持多种启动方式,如SD卡启动,NorFlash启动、   NandFlash启动等。关于何种启动,要根据SOC来定。在start.s中处理了如何开机。

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

  Linux内核在设计的时候,设计为可以被传参,也就说可以在uboot中事先给Linux   内核准备一些启动参数,并且存放在内存中的特定位置并传给内核,内核启动后会到   这个特定位置去取uboot传给他的参数,然后在内核中解析这些参数,用来指导   linux内核的启动过程。

3.能提供系统部署功能

      uboot必须能够被人借助而完成整个系统在flash上的烧录下载工作。(包括uboot   kernelrootfs等镜像)。

4.能进行SOC级和板级硬件管理

  Uboot中实现了一部分硬件的控制能力(uboot中初始化一部分硬件),因为uboot为了

  完成一些任务必须让这些硬件工作。如驱动inand、驱动LCD、驱动网卡等。

 

uboot 的工作方式有哪些?

1. 是一个裸机程序。uboot本质就是一个裸机程序。Uboot一般大于16kb,在180k-400k

       之间。运行时被加载到内存中然后被CPU执行。

2. 命令式的shell界面。有些程序需要和人进行相互交互,此时就要求ubootshell

      界面。Shell不是操作系统,和操作系统没有什么关系,uboot中的shell几乎和linux

      终端shell一样,区别在于命令集不一样,linux中可以lsubootls就不识别。

3. 命令和环境变量。uboot大部分工作时间在shell界面下完成的,利用自身识别的各

  种命令进行操作。Uboot的环境变量和操作系统的环境变量的工作原理和方式类似。

  Uboot的设计借助操作系统的理念(命令工作方式借鉴linux终端的命令行,环境变

  量借鉴操作系统的环境变量,驱动管理参照linux的驱动框架)。

  环境变量可以认为是系统的全局变量,环境变量名有些是系统内置的,有些是用户自

  己添加的。环境变量就是系统运行时的配置属性。

 

 

uboot 的常用命令有哪些?

1. Uboot的命令行类似于linux终端的命令行,具有行缓冲。行缓冲:当我们向终端输

      入命令时,此时命令没有立即被识别,而是被缓冲到一个缓冲区,当我们按下回车键

      后系统就认定我们输入完了,然后将缓冲区中所有刚才输入的命令做分析。Linux

      端有3种缓冲机制:无缓冲、行缓冲、全缓冲。

2. 有些命令有简化的别名

   printenv命令可以简化为print,如setenv可以简化为set

3. 有些命令会带参数。

4. uboot的有些命令带的参数非常长,为了告诉uboot这个非常长而且中间有好多个空

      格的东西是给他的一整个参数,所以用单引号将这个很长且中间有空格隔开的参数引

      起来。

5.有些命令是一个命令族。

      命令族意思就是好多个命令开头都是用同一个命令关键字的,但是后面的参数不一样

 

  printenv/print命令:

  print命令不用带参数,作用是打印出系统中所有的环境变量。

 

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

  用法:set name value

 

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

  网络测试指令:ping

  tftp下载指令:tftp

  nfs启动内核命令:nfs

  SD/iNand操作指令movi

  内存操作指令:mmmwmd

  启动内核指令:bootmgo

 

uboo 的常用环境变量有哪些?

自动运行倒数时间:bootdelay

网络设置:ipaddr serverip

自动运行命令设置:bootcmd

ubootkernel传参:bootargs

(1)新建一个环境变量,使用set var value

(2)更改一个环境变量,使用set var value

(3)删除一个环境变量,使用set var

 

 

 

 

 

 

 

1 0