uboot学习:(一)基础认知

目录

uboot是一个裸机程序(bootloader)

作用

要运行linux系统时,如何从外置的flash拷贝到DDR中,才能启动

uboot使用步骤

步骤1中的命令例子

注意

uboot源码获取方法


uboot是一个裸机程序(bootloader)

作用

  • 用于启动Linux或其他系统
  • 主要工作是初始化DDR(因为Linux是运行在DDR里面的)
    • 一般 Linux 镜像 ( zImage / uImage ) + 设备树 ( .dtb ) 存放在SD、EMMC、NAND、SPI FLASH 等等外置存储区域

要运行linux系统时,如何从外置的flash拷贝到DDR中,才能启动

  • Uboot提供了flash的读写服务
  • Uboot的主要目的就是为系统的启动做准备
  • Uboot的宿命就是启动linux后,再把cpu还给linux
  • Uboot不仅仅能启动Linux,也可以启动其他系统,比如vxworks
  • Linux不仅仅能通过uboot启动
  • Uboot是个通用的bootloader,他支持多种架构

uboot使用步骤

先配置,一个板子一个配置文件,然后执行配置文件,就会把uboot配置好,然后再次编译,就可以得到配对这个板子的uboot执行文件(.bin),用bin文件来启动板子,这就是裸机开发,通常是操控寄存器来编程,汇编

1.下载uboot源码,在源码根目录下先配置(可以写一个shell脚本来执行清理和编译)

        1.1清理工程

        1.2先使用默认配置文件来配置uboot,就会生成一个.config文件,(根据默认配置文件将配置写入.config文件里,编译的时候需要用到.config配置项)

        1.3使用多少核编译命令 

2.编译完成以后就会生成一个u-boot.bin。必须向u-boot.bin添加头部信息。Uboot编译最后会通过/tools/mkimage软件添加头部信息,生成u-boot.imx (最后烧到板子上的是imx,可以使用mfg烧录,要将新的imx替换到掉原来的imx,在使用mfg烧录时,会把整个系统也重新烧录进去)

步骤1中的命令例子

  • 1.1的命令make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
  • 1.2的命令make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
  • 1.3的命令make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
  • ARCH是指定架构
  • CROSS_COMPILE是指定编译器,只需要前缀
  • mx6ull_14x14_ddr512_emmc_defconfig是默认配置文件
  • V=1用于设置编译过程输出信息
  • -j12使用12核来编译uboot,最好设置成我们虚拟机所设置的核心数

注意

  • 如果配置过uboot,那么一定要注意shell脚本会清除整个工程,那么配置的文件也会被删除,配置项也会被删除掉
  • 为了方便开发,建议直接在uboot顶层Makefile里面设置好ARCH和CORSS_COMPILE这两个变量的值,就可以直接用make -j几核来进行编译

uboot源码获取方法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值