U-Boot在S3C4bob综合体育官方入口4B0上的移植方法
  • 时间:2022-06-21
  • 点击率:

Bootloader 给嵌入式操作系统提供板上硬件资源信息,并进一步加载、引导嵌入式操作系统。由于Bootloader 的功能直接与CPU和微处理器系统相关,所以不同的CPU体系将需要不同的Bootload-er。除了依赖于CPU的体系结构外,Bootloader 实际上也依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板,即使它们使用同一种CPU 构建,要想让运行在其中一块上的Bootloader程序也能运行在另一板子上,通常也都需要修改Bootloader 的源程序。本文作者使用基于ARM7TDMI 核的S3C44B0微处理器构建的嵌入式开发板,附有嵌入式开发必须的一些板上硬件资源,针对性地提供了Bootloader的移植方法,可以应用在基于ARM7 系列处理器的嵌入式系统应用开发中。U-Boot 运行及移植条件分析嵌入式系统的硬件部分不可能是完全一致的,由于嵌入式系统需要硬件与软件的配合才能正常工作,因此,需要针对硬件系统进行有关引导程序的设计。对于嵌入式系统来说,引导程序比较复杂,一般采用对基本符合硬件体系要求的现有引导程序进行修改,然后加以应用的方法设计引导程序,这就是引导程序的移植。在移植操作前,需要完成两个工作,一个是寻找一个比较适合的引导程序,另一个就是对所要移植的软件进行分析,结合已有硬件系统,找出移植的条件。本文选择U-Boot 作为引导程序,移植工作就是使原有的U-Boot 能够在本文给定的硬件系统中运行。U- Boot是德国DENX小组开发的用于多种嵌入式CPU的Bootloader引导程序,支持PowPC、ARM、MIPS、m68 K 等多种处理器平台,易于裁剪和调试。U-Boot 遵循GPL (通用公共许可) 公约,完全开放源代码。U-Boot 主要特性如表1所列。 U-Boot 运行分析Boot向嵌入式操作系统提供板上硬件资源的信息,并进一步加载和引导嵌入式操作系统。由于Bootloader的功能与CPU和微处理器系统直接相关,不同的CPU系统需要不同的boot loader。除了CPU的架构,Bootloader实际上还取决于具体嵌入式板级设备的配置。也就是说,对于两个不同的嵌入式板卡,即使是用相同的CPU构建的,如果一个板卡上运行的Bootloader程序可以在另一个板卡上运行,通常需要修改Bootloader的源程序。本文作者利用基于ARM7TDMI内核的S3C44B0微处理器搭建了一个嵌入式开发板,附带了嵌入式开发所必需的一些板载硬件资源,并提供了Bootloader的移植方法,可应用于基于arm 7系列处理器的嵌入式系统的应用开发。U-Boot运行及移植条件分析嵌入式系统的硬件部分不可能完全一致。由于嵌入式系统需要硬件和软件的配合才能正常工作,所以需要为硬件系统设计引导程序。对于嵌入式系统,引导程序是复杂的。引导程序一般是通过修改现有的基本满足硬件系统要求的引导程序,然后应用,这就是引导程序的移植。在进行移植操作之前,需要完成两项工作,一是找到合适的引导程序,二是对要移植的软件进行分析,结合现有的硬件系统找出移植条件。本文选用U-Boot作为引导程序,移植工作就是让原来的U-Boot在本文给出的硬件系统上运行。U- Boot是德国DENX集团开发的Bootloader引导程序,用于各种嵌入式CPU。支持PowPC、ARM、MIPS、m68 K等各种处理器平台。,且易于裁剪和调试。U-Boot遵循GPL(通用公共许可证)约定,其源代码完全开放。表1列出了U-Boot的主要特性。U-Boot的运行分析

U-Boot的引导过程主要分为两个阶段,即stage1和stage2。Stage1是用汇编语言写的,通常和CPU的架构有关,比如设备初始化代码,在start中实现。S Stage2是一个C语言程序,用来加载操作系统内核。它具有可读性和可移植性,通过board中的start-armboot()函数实现,U-Boot的c Stage1如图1所示。

图1  U-Boot stage1 初始化过程图1 U-Boot阶段1初始化过程

stage2 包括以下步骤;①初始化本阶段要使用到的硬件设备; ②检测系统内存映射; ③将kernel映像和根文件系统映像从FLASH上读到RAM空间中; ④为内核设置启动参数; ⑤调用内核。在调试阶段,操作系统内核是通过U-Boot下载到SDRAM中,调试完毕可以将内核烧写到FLASH中。本文选用的内核是u Clinux,在FLASH 中的分布如图2 所示,这些地址可以通过修改include/ con2figs/ smdk4110.h 文件进行配置。内核运行时的RAM地址必须与u Clinux配置的运行地址相一致。由于FLASH的存储空间有限,存放在FLASH中的u Clinux核心是经过压缩的。U-Boot将压缩的u2Clinux kernel加载到SDRAM 地址0x0C300000如图3所示,如果选择启动u Clinux,则压缩的u Clin2ux核将自解压到0x0C008000,然后再跳转到该处并开始运行。图 3中0x0C100000是U-Boot将自身的stage2的代码复制到SDRAM的起始地址,0x0C700000是默认的Load地址空间,用于 U-Boot的升级与调试,在需要升级或修改U-Boot时,将更新的U-Boot映像加载到这里,然后通过原有的U-Boot从SDRAM烧写到 FLASH覆盖原来的U-Boot,这样可以减少烧写FLASH 的次数。移植条件分析2阶段2包括以下步骤:①初始化此阶段要使用的硬件设备;②检测系统内存映射;③从FLASH中读取内核镜像和根文件系统镜像到RAM空;④设置内核启动参数;⑤调用内核。在调试阶段,通过U-Boot将操作系统的内核下载到SDRAM中,调试后可以将内核烧录到FLASH中。本文选用的内核是u Clinux,其在FLASH中的分布如图2所示。这些地址可以通过修改include/ con2figs/ smdk4110.h文件来配置。内核运行时的RAM地址必须与u Clinux配置的运行地址一致。由于FLASH 空存储空间有限,存储在FLASH中的u Clinux内核被压缩。U-Boot将压缩的u2Clinux内核加载到SDRAM地址0x0C300000,如图3所示。如果选择启动UCClinux,压缩后的UCC Linux 2内核会自我解压到0x0C008000,然后跳转到那里开始运行。在图3中,0x0C100000是U-Boot将其自身的stage2代码复制到SDRAM的起始地址,0x0C700000是默认加载地址空,用于U-Boot的升级和调试。当U-Boot需要升级或修改时,这里加载更新后的U-Boot镜像,然后把原来的U-Boot从SDRAM烧到FLASH,覆盖原来的U-Boot。移植条件分析

移植操作的目的,是为了在嵌入式开发板上用于引导嵌入式操作系统u Clinux 及其应用。根据Bootloader 运行的分析结果,把Bootloader可移植条件分为如下两种情况。(1) 硬件资源完全支持条件。在完全不改变U-Boot程序源代码的条件下,选用U-Boot程序完全支持的嵌入式微处理器,并且选用U-Boot完全支持的主板配置资源。基本移植条件即是通过分析U-Boot下的board目录和cpu目录,订制开发板,使开发板的配置与之相适应,但是这种情况与实际开发不太吻合。


客服QQ: 点击这里
地址:台州市寨金路899号电子时代广场5116室 客服QQ:329435596
Copyright © 2022 bob综合体育官方入口 版权所有

08980-89895656

服务时间:7X10小时