ARM嵌入式系统中U-Boot与Linux内核参数传递详解

0 下载量 38 浏览量 更新于2024-09-02 收藏 84KB PDF 举报
嵌入式系统/ARM技术中的BootLoader与Linux内核的参数传递是一个关键环节,尤其是在硬件多样化的环境中。本文主要关注于AT91RM9200处理器系统,这是一种基于ARM920T内核的高性能微处理器,支持多种接口和存储器配置,如SDRAM和NorFlash。 BootLoader在嵌入式系统中扮演着至关重要的角色,它的主要职责包括初始化硬件、加载Linux内核以及传递启动参数。U-Boot作为一种通用的BootLoader,支持ARM、PowerPC、X86和MIPS等多种架构,适应了不同硬件平台的需求。 本文的硬件平台选择AT91RM9200,其特点包括240MHz CPU频率,集成内存管理单元、EBI接口、SMC和SDRAM/NorFlash控制器。启动时,BootLoader从NorFlash中读取内核映像文件zImage,通常从0x10000000地址开始执行。 BootLoader的设计和实现遵循ARM体系结构的标准规范,并在此基础上进行定制。例如,除了基础的引导功能,本文所述的BootLoader针对AT91RM9200硬件特性,增加了代码搬运功能。整个过程从电源上电到加载内核,大致步骤如下: 1. 系统上电后,BootLoader首先从NorFlash启动,根据处理器的BMS引脚设置确定启动地址。 2. BootLoader执行时,会将内核映像zImage加载到内存中,通常选择SDRAM的起始地址0x20000000。 3. 随后,BootLoader处理启动参数的传递,这些参数可能包括设备树信息、配置选项等,对内核的初始化至关重要。 4. 完成参数传递后,BootLoader将控制权交给内核,启动Linux-2.6.19.2内核,开始系统的正常运行。 理解并掌握BootLoader与内核参数传递的过程,对于开发和调试嵌入式系统具有实际价值,能够确保系统在不同硬件平台上稳定、高效地启动和运行。此外,开发者还需要熟悉所用BootLoader的源代码,以便进行必要的修改和扩展,以满足特定应用的需求。