【浙大学霸学习笔记】什么是Uboot

Uboot是通用Bootloader,负责引导Linux等系统启动,初始化DDR并管理外置存储。它从外部Flash加载Linux镜像到DDR中,并可进行系统升级。设备树用于描述板载信息。Uboot可自定义,芯片厂商和开发板厂商都会根据需要修改。编译Uboot涉及配置、添加头部信息,环境变量管理是其重要功能之一。
摘要由CSDN通过智能技术生成

什么是Uboot?(Universal Boot Loader)

  • Uboot为一个裸机程序,比较复杂。类似于windows X86电脑的BIOS。
  • Uboot是一个bootloader,作用就是引导Linux或其他系统的启动,也可以用于系统升级,但常用的系统升级是OTA。Uboot最主要的工作就是初始化DDR,因为Linux是在DDR内运行。Linux系统运行起来有4-5M,而芯片内部的RAM没有这么大,因此放到DDR内运行,不在芯片内运行。一般”Linux镜像中zImage(uImage)+*设备树(.dtb文件)“*存放在SD、EMMC、NAND、SPI FLAHS等外置存储区域。
  • 需要将Linux镜像从外置flash拷贝到DDR中,再去进行启动。外置flash的驱动就是由Uboot来做。

简而言之:Uboot就是为系统的启动做准备,将Linux镜像从外置flash到DDR中。


Uboot的获取:

  • Uboot官网。缺点就是支持少,比如某一款具体芯片驱动等不完善。
  • SOC厂商会从Uboot官网下载某一个版本的Uboot,然后在这个版本的Uboot上加入相应的SOC以及驱动,这就是SOC厂商定制版的Uboot。
  • 做开发板的厂商,开发板会参考SOC芯片厂商的板子,开发板必然会和官方的板子不一样,因此开发板厂商又会去修改SOC厂商做好的Uboot,以适应自己的板子。最了解芯片的是芯片厂商,因此很有参考的必要性。

官方Uboot的编译:

  1. 编译Uboot的时候需要先配置;
  2. 编译完成后就会生成一个uboot.bin,必须向Uboo.bin添加头部信息。Uboot编译最后会通过/tools/mkimage软件添加头部信息,最终生成uboot.imx。最终烧写到emmc的就是uboot.imx文件。
  3. 如果配置过Uboot,那么一定要注意shell脚本会清除整个工程,那么配置的文件也会被全部删除,配置项也会删除掉。
  4. 为了方便开发,建议直接在Uboot顶层makefile里面设置好ARCH和CORSS_COMPILE,这两个变量的值。

Uboot命令的使用

  1. printenv-查看当前板子的环境变量。

  2. setenv-设置环境变量

    #自定义环境变量
    setenv autho zhipengtang
    #再保存,即可pri看到新增了一个环境变量author=zhipengtang
    #删除环境变量
    setenv author
    #将原有的变量设置为空,即不写入值,再保存,pri可以看到改变了没有了
    
  3. saveenv-保存环境变量

    #saveenv是跟在setenv之后的,当setenv设置或者删除环境变量后,在通过saveenv指令保存更改。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alexander.Tang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值