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 秒
- 倒计时前按下任意键可以中断 Linux 内核的启动,并进入 U-Boot 终端。
- 未完待续……
更多内容
- CSDN博客:@Hello阿尔法
- 哔哩哔哩:@Hello阿尔法
- 知乎:@Hello阿尔法