先讲讲BSP和BootRom之间的区别BSP只与“target/config/”下对应目录相关
romInit.s定义系统的入口romInit函数,系统上电最先执行的代码。romInit禁止CPU中断,设置初始堆栈,配置DRAM控制器等少数CPU设置后调用第一个C程序romStart。进一步硬件初始化有sysLib.c中定义sysHeInit函数完成。romInit.s中的硬件初始化会在sysALib.s或sysLib.s重复一遍。因为vxworks程序只需要BootRom提供参数串和启动代码。而不依赖于BootRom的硬件初始化(除了RAM初始化)。BootRom和Vxworks的无关行是一个原则,若不遵循这个原则,就会出现Vxworks和BootRom的关联修改。
从宏观角度看来,一般是先加载BootRom;BootRom在加载VxWorks应用,并跳转到Vxworks的入口sysInit执行;VxWorks有可能根据启动的脚本文件加载应用模块。整个过程完成后,系统进入多任务环境。
对于PC兼容体系结构,CPU不能从这样的存储器中获取指令执行,而需要BIOS的辅助。BIOS讲启动盘的引导扇区复制到主内存空间,再跳内存的指定地址执行。BIOS本身所处的存储器时CPU可直接访问执行的。BIOS再加载程序映象时哟自己的规范,比如引导扇区的位置和大小等。BootRom自己能满足这样的要求,比如说大小,BootRom比一个扇区大了许多。BIOS不能直接加载BootRom,而只能先加载辅助的小程序Vxld。由于大小限制,Vxld不支持完善的文件系统,所以要求启动盘上的BootRom文件必须连续存放。Vxld再加载BootRom。由于硬件环境限制,Vxld必须做的非常小,不能启动保护模式和支持翻检系统,因而限制了所能减灾程序映象的大小和内存加载位置。启动盘(如软盘)的大小也会限制程序映象的大小。
也有可能由于环境影响,出现BootRom与Vxworks映象融合在一起的情况,可以直接从Rom启动但是不灵活。
映象分类 类型
功能 BootRom,VxWorks,目标模块,vxworks_rom
运行位置 ROM运行[rom-resident],RAM运行的
压缩 压缩的,非压缩的
文家格式 标准执行格式(如ELF),Hex格式(支队Rom型的映象而言),而进制格式
符号表 Standalone,包含符号表和tshell等