BootLoader与Linux内核参数传递详解

需积分: 16 2 下载量 87 浏览量 更新于2024-09-19 收藏 233KB PDF 举报
"bootloader与linux内核参数传递.pdf" 本文主要探讨了BootLoader与Linux内核之间的参数传递机制,特别是针对嵌入式系统中的实现。BootLoader是嵌入式系统启动过程中的关键组件,负责初始化硬件环境,加载操作系统内核,并传递启动参数。由于嵌入式系统的多样性,BootLoader也有各种不同实现,比如通用的U-Boot,它可以适应多种架构,如ARM、PowerPC、X86、MIPS等。 文章以基于AT91RM9200处理器的系统为例,该处理器是Atmel公司基于ARM920T内核的产品,拥有内存管理单元,最高可运行在240MHz频率。系统配置包括64MB的SDRAM,其地址为0x20000000,以及8MB的NorFlash,地址为0x10000000。BootLoader需要根据这样的硬件配置来执行初始化任务。 BootLoader的设计与实现通常遵循ARM体系结构下的规范,如内核源代码文档中所述。在完成基本的硬件初始化和内核加载之外,特定的BootLoader可能还会包含针对硬件特性的定制功能,例如代码搬运。在AT91RM9200的BootLoader流程中,系统上电后,会从NorFlash启动,执行BootLoader程序,然后将内核映像(通常是zImage)加载到SDRAM中。 在参数传递方面,文章提到了Tagged list结构,这是一种常用的方法,用于将BootLoader阶段收集的硬件配置信息和设置传递给Linux内核。Tagged list由一系列结构体组成,每个结构体表示一个特定的参数或配置项,如内存大小、串口设置等。BootLoader创建这个参数链表,并在内核启动时解析和处理这些参数。 Linux内核在启动时,会检查和处理这些Tag,根据接收到的参数来配置自身以适应具体的硬件环境。这个过程对于确保内核正确运行和充分利用硬件资源至关重要。在AT91RM9200的案例中,BootLoader不仅需要将内核加载到正确的内存位置,还需要提供关于SDRAM和NorFlash等硬件设备的信息。 总结来说,BootLoader与Linux内核参数传递是嵌入式系统启动流程中的重要环节,涉及到BootLoader的初始化任务、硬件参数的收集、Tagged list的构建以及内核的接收和解析。这一过程对于理解嵌入式系统的启动流程和优化系统性能有着基础性的作用。