BootLoader 是操作系统内核启动前运行的一段代码,用来初始化硬件、建立内存映射等,当然最主要的功能是加载并引导系统内核的启动。U-Boot 是一个广泛使用的 BootLoader,全称是 Universal Boot Loader,它是一个综合的大型裸机程序,并且具有极大的通用性及可移植性,如今 U-Boot 已经支持多种嵌入式操作系统,应用在多种嵌入式设备中。
在嵌入式 Linux 系统中,U-Boot 的主要作用是为 Linux 内核启动创建好硬件环境,如初始化 DDR、UART 等基础外设,然后将 Linux 内核从 Flash(NAND、NOR FLASH 或 SD 卡、EMMC 等)拷贝到 DDR 中,最后引导 Linux 内核的启动。
系统日志可以用来监控系统的运行状态、跟踪数据,或者故障定位、分析问题等,嵌入式设备启动后,一般我们首先看到的系统日志便是 U-Boot 输出的,其中也包含着许多信息,本文就来分析一下。
U-Boot 2016.03-00007-gef9d4c6 (Sep 25 2023 - 10:17:37 +0800)
# U-BOOT 版本号是 2016.3,编译时间是 2023 年 9 月 25日
CPU: Freescale i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
# 芯片型号为飞思卡尔(已被 NXP 收购)的 i.MX6ULL,主频为 792 MHz,当前运行在 396 MHz
CPU: Industrial temperature grade (-40C to 105C) at 36C
# 这个芯片是工业级 CPU,工作温度范围为 -40~105℃
Reset cause: POR
# 复位模式:POR;i.MX6ULL 有个 POR_B 引脚,将这个引脚拉低即可复位芯片
Board: MX6ULL 14x14 EVK
# 开发板的名称:MX6ULL 14x14 EVK(NXP 官方的开发板)
I2C: ready
# 提示 I2C 已经准备好了
DRAM: 512 MiB
# 板载 DRAM 为 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
# 当前有两个 MMC/SD 设备:FSL_SDHC(0)和 FSL_SDHC(1)
# 一般 FSL_SDHC(0) 为 SD 卡,FSL_SDHC(1) 为 EMMC
Display: TFT43AB-800x480 (800x480)
# 当前的显示设备为 TFT43AB-800x480 (800x480)
Video: 800x480x16
# 屏幕分辨率为 800x480,16 位 RGB
Card did not respond to voltage select!
# 提示没有检测到 SD 卡
reading logo.bmp
# 读入了 logo 图片
391734 bytes read in 30 ms (12.5 MiB/s)
# 数据读取的速度
In: serial
# 标准输入使用串口设备
Out: serial
# 标准输出使用串口设备
Err: serial
# 标准错误使用串口设备
switch to partitions #0, OK
# 切换到 EMMC 的第 0 个分区
mmc1(part 0) is current device
# 显示当前设备是 EMMC
Net: FEC1
# 当前正在使用 FEC1 网口
Error: FEC1 address not set.
# 错误提示 FEC1 网卡地址没有设置
Can't find lt8618!
# 提示没有找到 lt8618 设备
Normal Boot
# 提示要正常启动 Linux 了
Hit any key to stop autoboot: 3
# Linx 内核启动倒计时 3 秒