美国WindRiver公司的实时嵌入式系统VxWorks和美国Motorola公司MPC860系列处理器已经广泛的应用在通信行业的通信产品中,在用VxWorks系统进行开发时,会生成两个文件,一个是BootRom文件,此文件类似Windows中的BIOS,是引导文件,完成内存初始化,内核初始化,基本硬件的初始化并最终引导VxWorks系统启动,另外一个是VxWorks文件,此文件中包括VxWorks系统内核及上层应用程序,而这两个文件在MPC860的开发中一般都存储在两片不同的
在VxWorks开发中,FlashBOOT通常指的是BootRom,它是一个独立的引导程序,负责初始化硬件,设置内存管理单元(MMU),加载VxWorks内核,并启动操作系统。BootRom的作用类似于个人计算机上的BIOS,它在系统启动时运行,然后将控制权交给VxWorks。在基于Motorola MPC860系列处理器的系统中,BootRom和VxWorks通常被分别存储在两片不同的Flash芯片中,以保持系统引导和操作系统的分离,确保稳定性和可靠性。
然而,为了节省成本和简化硬件设计,开发者可能会考虑将BootRom和VxWorks内核合并到同一片Flash中。这可以通过对Flash的地址空间进行分区和映射来实现。例如,可以将Flash划分为两个区域:一个用于BootRom(地址范围如0xFFF00000~0xFFF80000),另一个用于VxWorks(如0x04080000~0x04800000)。在系统启动时,PC指针会指向BootRom的起始地址(如0xFFF00100)执行引导代码,随后BootRom会加载VxWorks内核到其指定的内存区域,并启动操作系统。
实现这一目标的关键在于修改BootRom的初始化代码,尤其是romInit.s文件,以配置Flash的片选(Chip Select)和地址映射。在示例代码中,可以看到对BR0和BR1的配置,BR0用于BootRom,BR1用于VxWorks所在的Flash。通过设置BR寄存器(Bank Register)和OR寄存器(Option Register),可以定义Flash的起始地址、页面大小以及其他特性。
具体步骤如下:
1. 修改romInit.s中的片选配置,确保BootRom和VxWorks的Flash区域被正确地映射到内存。
2. 确保BootRom代码能够识别新的地址映射,并能正确加载VxWorks内核。
3. 在构建过程中,将BootRom和VxWorks文件合并到同一片Flash中,按照预定的地址分布存放。
4. 调整BootRom代码,使其在加载VxWorks后能够跳转到VxWorks的入口点,开始执行操作系统。
这种整合方法需要对VxWorks引导过程、处理器架构以及Flash存储设备的特性有深入理解。在实际操作中,必须谨慎处理,以防止因地址映射错误或BootRom修改不当导致的系统启动失败。此外,考虑到不同版本的VxWorks可能有不同的引导机制,因此在不同版本之间进行这种优化时,还需要特别注意兼容性问题。
去掉VxWorks开发中的FlashBOOT,即将BootRom与VxWorks合并到同一片Flash中,是一种降低成本和简化硬件设计的方法。但这需要对嵌入式系统、处理器、VxWorks操作系统以及Flash存储技术有深入了解,并且需要仔细调整和测试引导代码,以确保系统的正常运行。