UBOOT

本博客是本人自己学习正点原子阿尔法开发板时本着好记性不如烂笔头的心情进行的笔记整理,所以会有不少内容与其教学资料相互重叠。如有侵权行为请立即联系我删除博客,感兴趣者可以百度左盟主开源的教学资料进行具体的学习。


一、何为uboot?

Uboot的作用就如同电脑开机时进入BIOS界面一样,起到的是引导系统启动的作用,同时也可以利用Uboot进行系统固件的刷新,升级API。

  1. uboot是一个裸机程序,比较复杂。

  2. uboot,就是一个bootloader,作用就是用于启动Linux或其他系统。
    Uboot最主要的工作就是初始化DDR。因为Linux是运行在DDR里面的。一般Linux镜像zlmage(ulmage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI FLASH等等外置存储区域。
    这里就牵扯到一个问题,需要将Linux镜像从外置flash拷贝到DDR中,再去启动。

  3. 要启动 Linux,需要先将 Linux 镜像文件拷贝到 DRAM 中,如果使用到设备树的话也需要将设备树拷贝到 DRAM 中。可以从 EMMC 或者 NAND 等存储设备中将 Linux 镜像和设备树文件拷贝到 DRAM,也可以通过 nfs 或者 tftp 将 Linux 镜像文件和设备树文件下载到 DRAM 中。不管用那种方法,只要能将 Linux 镜像和设备树文件存到 DRAM 中就行,然后使用 bootz 命令来启动

Uboot的主要目的就是为系统的启动做准备。
Uboot,不仅仅能启动Linux,也可以启动其他系统,比如vxworkS.。Linux不仅仅能通过uboot启动。
uboot,是个通用的bootloader,他支持多种架构。

Uboot获取:

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

二、U-Boot初次编译

整体流程:

  1. 安装 ncurses 库
sudo apt-get install libncurses5-dev
  1. 解压uboot源码
tar -vxjf uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2
  1. 清除工程
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
  1. 配置uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
  1. 编译uboot内核
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
V=1打印编译过程;
-j12:使用 12 核来编译 uboot;

过程优化:
1、编译UBOOT的时候需要先配置
2、编译完成以后就会生成一个u-boot.bin。必须向u-boot.bin添加头部信息。Uboot编译最后会通过/tools/mkimage 软件添加头部信息,生成u-boot.imx。
3、如果配置过uboot,那么一定要注意shell脚本会清除整个工程,那么配置的文件也会被删除,配置项也会被删除掉。
新建名为 mx6ull_alientek_emmc.sh 的 shell 脚本文件,然后在里面输入如下内容:

#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr256_nand_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

烧写时使用./mx6ull_alientek_emmc.sh即可执行脚本中的三条命令。

4.为了方便开发.建议直接在uboot顶层Makefile里面设置好ARCH 和CORSS_COMPILE这两个变量的值。

# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
  
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabihf-

三、 U-Boot 烧写与启动

uboot 编译好以后就可以烧写到板子上使用了,这里我们跟前面裸机例程一样,将 uboot烧写到 SD 卡中,然后通过 SD 卡来启动来运行 uboot。使用 imxdownload 软件烧写,命令如下:

chmod 777 imxdownload //给予 imxdownload 可执行权限,一次即可
./imxdownload u-boot.bin /dev/sdb 
//将bin文件通过imxdownload添加头部信息后烧写到SD卡挂载点
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值