2 几种不同的 BOOTROM 的比较
针对上述三种不同的 VxWorks 映象,可以生成以下几种不同的 BOOTROM,主要体现
在执行搬移程序 romStart( )( 位于 bootInit.c 文件中)时不同:
2.1 用于可加载 VxWorks 映象的 BOOTROM
由图 1 所示可知,用于可加载 VxWorks 映象的 BOOTROM 包含两部分:起始引导程序
(BootStrap Programs)和 ROM 引导程序(ROM Boot Programs)。
起始引导程序驻留在 ROM 中,主要包含:
汇编级的硬件初始化程序 romInit.s,用于系统的基本初始化,设置一些重要寄存
器的初始值,进行存储器的映射
搬 移 程 序 bootInit.c , 将 ROM 引 导 程 序 拷 贝 至 RAM 的 高 端 地 址
RAM_HIGH_ADRS,然后跳转到此处执行 ROM 引导程序。
ROM 引导程序起初存放在 ROM 中,初始化时被拷贝到 RAM 中,主要用于系统的进
一步初始化,并配置加载方式,将 VxWorks 映象加载至 RAM。可分为三种不同的类型:
压缩的 ROM 引导程序,在拷贝的过程中需要解压缩,在 RAM 中执行
未压缩的 ROM 引导程序,可直接拷贝,在 RAM 中执行
驻留 ROM 的 ROM 引导程序,仅拷贝 ROM 引导程序的数据段,代码段仍旧在
ROM 中执行
在 Tornado 开发环境中,通过在主窗口点击 Build|Build Boot ROM…可以选择生成以上
三种 BOOTROM,分别为:bootrom_uncmp.hex(未压缩的 BOOTROM),bootrom.hex(压缩
的 BOOTROM),bootrom_res.hex(驻留的 BOOTROM)。
静态连接到可加载的 VxWorks 映象的系统初始化代码执行并完成整个初始化过程。
引导过程成功以后,RAM 中 ROM 引导程序占用的空间(从 RAM_HIGH_ADRS 开
始)可以重新被系统利用。
图 1 中所示的各地址含义为:
LOCAL_MEM_LOCAL_ADRS 是 RAM 的起始地址
RAM_LOW_ADRS 是 VxWorks 的加载点,也是 VxWorks 代码段的起始位置
FREE_RAM_ADRS 是 VxWorks 映象的结束点。通常也是系统内存池和目标服务
器内存池的起始地址
RAM_HIGH_ADRS 是 ROM 引导程序的加载点。它也是 ROM 引导程序(除驻留
ROM 引导程序之外)的代码段的起始位置,或驻留 ROM 引导程序数据段的起始
位置。