U-Boot 简介
Linux 系统启动需要 bootloadr 程序。
bootloader程序 先初始化 DDR(内存条,Double Data Rate 双倍速率同步动态随机存储器 )等 外设,后 Linux内核从flash( 非易失性内存( Non-Volatile ),NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。
uboot ( Universal Boot Loader)遵循 GPL 协议的开源 裸机代码
uboot 官网为 http://www.denx.de/wiki/U-Boot/
飞思卡尔 uboot官网
三种uboot
U-Boot 编译
Ubuntu 中安装 ncurses 库(Linux系统下的图形支持的函数库,字符终端处理库,包括面板和菜单)
sudo apt-get install libncurses5-dev
解压 uboot-imx-2016.3-2.1.0.tar.bz2
tar -vxjf uboot-imx-2016.3-2.1.0.tar.bz2
/* v 显示指令执行过程
* x 解压缩文件
* j bzip2 进行压缩
* f <备份文件> 压缩文件
*/
编译uboot
/*
* ARCH 设置为arm架构
* CROSS_COMPILE 指定交叉编译器
* V=1 显示编译工程
*/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabif- distclean //清除工程
make ARCH=arm CROSS_COMPILE=arm-linux-gnuabif- mx6ull_14x14_ddr512_emmc_defconfig //配置 uboot
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 // 4核编译 uboot
U-Boot 烧写与启动
在 SecureCRT 上出现“Hit any key to stop autoboot: ”
倒计时的时候 按回车键,进入 uboot 的命令行模式。
倒计时结束,没有按回车键, uboot 使用默认参数启动 Linux 内核
uboot 的命令行模式,左侧会有 “ => ” 标志
uboot 打印信息
/*
* 1月 Jan 2月 Feb 3月 Mar 4月 Apr
* 5月 May 6月 Jun 7月 Jul 8月 Aug
* 9月 Sep 10月 Oct 11月 Nov 12月 Dec
*
*/
U-Boot 2016.03 (Feb 12 2020 - 12:29:00 +0800) // 版本号:2016.03 编译时间:括号里
CPU: Freescale i.MX6ULL rev1.1 528 MHz (running at 396 MHz) // CPU 信息 主频
CPU: Industrial temperature grade (-40C to 105C) at 46C // 工业级 温度
Reset cause: POR // 复位原因
Board: MX6ULL 14x14 EVK // 板子名字
I2C: ready // I2C 准备就绪
DRAM: 512 MiB // 内存大小
MMC: FSL_SDHC: 0, FSL_SDHC: 1 // MMC/SD 卡控制器
Display: ATK-LCD-7-1024x600 (1024x600) // LCD 型号
Video: 1024x600x24 // 分辨率 格式
** Unrecognized filesystem type **
In: serial // 标准输入
Out: serial // 标准输出
Err: serial // 标准错误
switch to partitions #0, OK // 分区 0
mmc0 is current device // 默认存储器
Net: FEC1 // 网卡信息
Normal Boot // 成功提示
Hit any key to stop autoboot: 0 // 倒计时
=> // 命令行
U-Boot 命令使用
输入 help”或者“?”,按回车,可查看当前 uboot 所支持的命令
//查看 base 详细用法
? base
help base
信息查询命令
// 查看板子信息
bdinfo