linux uart 二进制_嵌入式Linux引导以及UBoot移植介绍

引言:本文简明扼要的介绍了嵌入式Linux的引导过程,X86体系的引导过程以及几种常见嵌入式处理器的引导过程,U-Boot的移植的基本步骤、常用命令如何使用。通过本文可以对嵌入式Linux的引导从概念到实际操作有一个总体清晰的认识

b59d25a5302dc6f1355525773e205602.png

1.启动顺序

1.1  Bootloader

  • Bootloader(引导加载程序)本质上是一小段程序,其基本功能在于:

  • 基本的硬件初始化

  • 从闪存存储,网络或其他类型的非易失性存储中加载应用程序二进制文件(通常是操作系统内核)。

  • 可能会对应用程序二进制文件进行解压缩

  • 执行申请

除此基本功能之外,大多数Bootloader(引导加载程序)实现了Shell命令集以执行不同操作。

  • 从存储或网络中加载数据,内存检查,硬件诊断和测试等

1.2 基于BIOS-X86的引导

  • x86处理器通常安装在在一块包含BIOS程序的非易失性存储器主板上。

  • 在基于BIOS的旧x86平台上:BIOS负责基本的硬件初始化和从非易失性存储中加载一小段代码。

  • 这段代码通常是第一阶段的引导程序bootloader,它将加载完整的引导程序bootloader本身。

  • bootloader可以解析文件系统,因此内核映象可以直接从普通文件系统中加载。

  • 此顺序与现代基于EFI的系统不同。

d3a4ab2c9e76905d70b2f899019355af.png 

用于X86体系Linux的bootloader常用的有以下两种:

  • GNU GRUB(GRand UnifiedBootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。

详细信息请参考:http://www.gnu.org/software/grub/

  • syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。

    Syslinux常被用于自网络或者可移动存储介质(如USB/CD-ROM)引导 Linux

    详细信息请参考:https://kernel.org/pub/linux/utils/boot/syslinux/

1.3  嵌入式CPU的引导

Case 1:CPU内部无引导代码

17a723ff14ffea81792badfe1fae9b97.png

  • CPU上电后,CPU开始在固定地址入口执行代码

  • CPU没有提供其他引导机制

  • 硬件设计必须确保已连接存储芯片(如NOR闪存芯片)这样就可以在CPU启动的地址访问它并执行指令

  • 第一级引导程序必须在此地址编程在该存储芯片中(如NOR)

  • NOR是强制性的,因为它允许随机访问,NAND不允许

注:这种方案已不常用,因为需要NOR FLASH

Case2:CPU内具有引导代码

  • CPU在ROM中具有集成的引导代码。如:AT91 CPU上的BootROM,OMAP上的“ ROM代码”,等等。具体细节取决于CPU体系结构

  • 此引导代码能够将第一级引导加载程序从存储设备加载到内部SRAM(因为DRAM尚未初始化)。 存储设备通常可以是:MMC,NAND,SPI闪存,UART(通过串行线传输数据)等等。

  • 第一阶段的引导程序:  由于硬件限制,尺寸有限(SRAM比较贵),  由CPU供应商或社区项目提供

  • 此第一阶段引导程序必须初始化DRAM和其他硬件设备,并将第二阶段的引导程序加载到RAM

  • 因为本文专注嵌入式领域,故接下来将描述几种常见的嵌入式处理器的引导过程。

1.2.1  ARM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值