美国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存储技术有深入了解,并且需要仔细调整和测试引导代码,以确保系统的正常运行。
- 粉丝: 3
- 资源: 954
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- YoloX目标检测算法的结构原理及其应用优化
- java-leetcode题解之Populating Next Right Pointers in Each Node.java
- java-leetcode题解之Plus One.java
- java-leetcode题解之Play with Chips.java
- java-leetcode题解之PIO.java
- java-leetcode题解之Permutation Sequence.java
- java-leetcode题解之Permutation in String.java
- java-leetcode题解之Perfect Squares.java
- java-leetcode题解之Path with Maximum Gold.java
- java-leetcode题解之Path Sum III.java