【Linux系统移植】U-Boot编译、烧写与使用

一、U-Boot 简介

Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND, NOR FLASH,SDMMC )拷贝到 DDR 中,最后启动 Linux 内核。

 

二、U-Boot 编译

(1)解压uboot源码
tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2

(2)编译 uboot的命令

1、清除工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

2、配置工程,配置文件为 mx6ull_14x14_ddr512_emmc_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig

3、编译uboot,使用12核编译

make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

4、编译完成

【Linux系统移植】U-Boot编译、烧写与使用_第1张图片

编译前后文件对比:

编译前:

【Linux系统移植】U-Boot编译、烧写与使用_第2张图片

编译后:

【Linux系统移植】U-Boot编译、烧写与使用_第3张图片

u-boot.bin 是编译出来的 uboot 二进制文件。uboot 是个裸机程序,因此需要在其前面加上头部 (IVT DCD 等数据 ) 才能在 I.MX6U 上执行。
 u-boot.imx 是添加头部以后的 u-boot.bin u-boot.imx 就是要烧写到开发板中的 uboot 镜像文件。
 

三、使用 shell 脚本编译

(1)新建mx6ull_tek_emmc.sh shell 脚本文件,写入以下内容。

shell 脚本要求第一行必须是“#!/bin/bash”或者“#!/bin/sh”。

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

(2)给脚本文件可执行权限

chmod 777 mx6ull_tek_emmc.sh

(3)执行脚本文件

./mx6ull_tek_emmc.sh

 

四、U-Boot 烧写与启动

(1)给imxdownload可执行权限

chmod 777 imxdownload

(2)向 SD 卡烧写 bin 文件

./imxdownload u-boot.bin /dev/sdb

(3)启动

使用SecureCRT工具,设置好串口参数并打开,复位开发板。在 SecureCRT 上出现“Hit any key to stop autoboot: ”倒计时的时候按下键盘上的回车键,默认是 3 秒倒计时,在 3 秒倒计时结束以后如果没有按下回车键的话 uboot 就会使用默认参数来启动Linux 内核了。如果在 3 秒倒计时结束之前按下回车键,那么就会进入 uboot 的命令行模式。

【Linux系统移植】U-Boot编译、烧写与使用_第4张图片

 

五、U-Boot 命令使用

U-Boot常见命令表

你可能感兴趣的:(#,Linux学习之路)