正点原子Linux系统移植开发学习笔记01UBoot编译

一,U-Boot 简介
         Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段
bootloader 程序。
        这段bootloader 程序会先初始化 DDR 等外设,然后将 Linux 内核从 flash(NAND, NOR FLASH, SD MMC ) 拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实
际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader Linux 内核的关系
就跟 PC 上的 BIOS Windows 的关系一样, bootloader 就相当于 BIOS
        uboot 的全称是 Universal Boot Loader, uboot 是一个遵循 GPL 协议的开源软件,uboot 是一个裸机代码,可以看作是一个裸机综合例程。
        uboot 官网为 http://www.denx.de/wiki/U-Boot/.
        正点会提供3种uboot:
二,U-Boot 初次编译
        首先在 Ubuntu 中安装 ncurses 库,否则编译会报错
sudo apt-get install libncurses5-dev

        Ubuntu 中创建存放 uboot 的目录,然后在此目录 下新建一个名为“alientek_uboot”的文件夹用于存放正点原子提供的 uboot 源码。

        使用如下命令对其进行解压缩:

tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2
1 512MB(DDR3)+8GB(EMMC) 核心板
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
        命令中 ARCH=arm 设置目标为 arm 架构, CROSS_COMPILE 指定所使用的交叉编译器。
        第一条命令相当于“make distclean ”,目的是清除工程,一般在第一次编译的时候最好清理一下工程。
        第二条指令相当于“make mx6ull_14x14_ddr512_emmc_defconfig ”,用于配置 uboot , 配置文件为 mx6ull_14x14_ddr512_emmc_defconfig
        最后一条指令相当于 “make -j12 ”也就是使用 12 核来编译 uboot
        u-boot.bin 就是编译出来的 uboot 二进制文件。u-boot.imx 文件就是添加头部以后的 u-boot.bin,u-boot.imx 就是我们最 终要烧写到开发板中的 uboot 镜像文件。
        新建一个 shell 脚本文件,每次只需要执行 shell 脚本即可完成编译工作。
        mx6ull_alientek_emmc.sh 的 shell 脚本文件:
1 #!/bin/bash
2 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
3 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- (加空格) 
mx6ull_14x14_ddr512_emmc_defconfig
4 make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
        第 1 行是 shell 脚本要求的,必须是“ #!/bin/bash ”或者“ #!/bin/sh ”。
        第 2 行使用了 make 命令,用于清理工程,也就是每次在编译 uboot 之前都清理一下工程。
        第 3 行也使用了 make 命令,用于配置 uboot
        第 4 行有 4 个参数,用于编译 uboot ,通过第 3 行配置好 uboot 以后就可以直接“ make ”编
uboot 了。
        mx6ull_alientek_emmc.sh
./mx6ull_alientek_emmc.sh
2 256MB(DDR3)+ 512MB(NAND) 核心板
1 #!/bin/bash
2 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
3 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- (加空格) 
mx6ull_14x14_ddr256_nand_defconfig
4 make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
  mx6ull_alientek_nand.sh
./mx6ull_alientek_nand.sh
三,U-Boot 烧写与启动
        
        uboot 编译好以后就可以烧写到板子上使用了,这里我们跟前面裸机例程一样,将 uboot
烧写到 SD 卡中,然后通过 SD 卡来启动来运行 uboot 。使用 imxdownload 软件烧写,命令如
下:
chmod 777 imxdownload //给予 imxdownload 可执行权限,一次即可
./imxdownload u-boot.bin /dev/sdd //烧写到 SD 卡,不能烧写到/dev/sda 或 sda1 设备里面!
        等待烧写完成,完成以后将 SD 卡插到 I.MX6U-ALPHA 开发板上, BOOT 设置从 SD 卡启
动,使用 USB 线将 USB_TTL 和电脑连接,也就是将开发板的串口 1 连接到电脑上。打开
MobaXterm ,设置好串口参数并打开,最后复位开发板
        在 MobaXterm 上出现“ Hit any key to stop autoboot: ”倒计时的时候按下键盘上的回车键,默认是 3 秒倒计时,在 3 秒倒计时结束以 后如果没有按下回车键的话 uboot 就会使用默认参数来启动 Linux 内核了。如果在 3 秒倒计时结束之前按下回车键,那么就会进入 uboot 的命令行模式。
四,U-Boot 命令使用
        太多了,大家自己查文档一一详细学习。
  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值