以RedBoot为例说明Bootloader启动过程.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
以RedBoot为例说明Bootloader启动过程

RedBoot启动流程要领及有关RedBoot的任务 系统加电后: 1. 中断向量表 2. MMU配置(可选) 可能分为以下几种: (1) 32KB ROM + 4MB RAM (2) ROM用完后变为RAM使用 (3) 芯片内部存放 (4) ROM + 外设映射地址 + RAM 3. Cache初始化,紧耦合,与协处理器的通信 4. 堆栈 5. 硬件初始化 6. C语言运行环境初始化 ? 进入shell 7. 跳至Main 目前已添加各种驱动,因此有多种boot方式 Linux镜像中的初始化 /arch/arm/start.s 要求: 1. Cortex A8启动时需要哪些初始化,分别按照哪种次序 2. A8启动时用到的shell 针对i.MX51定制RedBoot 1. 准备linux下ecos的配置工具ecos_config_tools.tar.gz,编译的RedBoot的工具链arm_2008q3.tar.bz2 2. 解压ecos的源码包后,打补丁base补丁+平台相关补丁 3. 针对不同类型的i.MX51板子,配置和编译生成RedBoot RedBoot 一.RedBoot简介 RedBoot是由RedHat公司推出的一款嵌入式系统调试/引导程序,用来替代现有的调试/引导工具CygMon和GDB。RedBoot提供了完整的引导程序环境,包括联网下载和调试,同时为引导镜像提供了简单的Flash文件系统。RedBoot采用eCos开发环境开发,并采用eCos的硬件抽象层作为基础,但可完全脱离eCos环境运行,并可用来引导其他任何一款嵌入式操作系统,如Linux,Windows CE等。 二.RedBoot功能 支持一般Bootloader的功能:硬件初始化和引导操作系统内核 还支持以下功能: 1.支持串口和网络通信协议,与主机可通过串口或网络相连 2.提供命令行接口,用户可进行各种系统操作 3.支持GDB调试 4.支持Flash存储的配置以及Flash文件系统 5.支持引导脚本,可方便启动应用程序或嵌入式操作系统内核 6.可通过BOOTP协议支持网络引导,可配置静态IP地址 RedBoot启动过程一般步骤 Reset入口点:0x0 系统上电复位后跳到内存地址为0x0000处执行,一般此处为 b reset_vector 或 ldr pc, .reset_vector 但是一些平台在此之前需要执行部分代码,主要完成DRAM的配置 #ifdef PLATFORM_PREAMBLE PLATFORM_PREAMBLE #endif // 一般在hal_platform_setup.h定义 //---------------------------------------------------------PLATFORM_PREAMBLE #define PLATFORM_PREAMBLE flash_header //flash header DCD @ 0x400 .macro flash_header b reset_vector .org 0x400 app_code_jump_v: .long reset_vector app_code_barker: .long 0xB1 app_code_csf: .long 0 dcd_ptr_ptr: .long dcd_ptr super_root_key: .long 0 dcd_ptr: .long dcd_data app_dest_ptr: .long 0xAFF00000 dcd_data: .long 0xB17219E9 // Fixed. cant change. #ifdef IMX51_TO_2 dcd_len: .long (56*12) //DCD //DDR2 IOMUX configuration DCDGEN(1, 4, IOMUXC_BASE_ADDR + 0x8a0, 0x200) DCDGEN(2, 4, IOMUXC_BASE_ADDR + 0x50c, 0x20c5) DCDGEN(3, 4, IOMUXC_BASE_ADDR + 0x510, 0x20c5) DCDGEN(4, 4, IOMUXC_BASE_ADDR + 0x83c, 0x2) DCDGEN(5, 4, IOMUXC_BASE_ADDR + 0x848, 0x2) DCDGEN(6, 4, IOMUXC_BASE_ADDR + 0x4b8, 0xe7) DCDGEN(7, 4, IO

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档