分类: 嵌入式
2012-09-08 00:31:23
bootrom的构成
在开发阶段,VxWorks 操作系统大多采用bootrom+ VxWorks 方式启动,即下载型方式进行。一方面,由于VxWorks本身调试的需要,另一方面,bootrom相比VxWorks内核较小,可以较快地烧录到平台ROM 中。在下载型方式中,bootrom的主要任务就是从主机端(相对运行VxWorks 的目标板而言)通过串口或者网口将VxWorks内核映像载入目标板RAM中,而后跳转到VxWorks 内核映像入口处执行。bootrom 完成的所有工作基本上都是为了下载VxWorks内核映像做准备。
bootrom在构成上基本类似于VxWorks内核本身,即二者使用同一套函数,但是也有一个较大的区别:bootrom使用bootConfig.c文件,而VxWorks内核本身则使用usrConfig.c文件。在下载型启动方式下使用的VxWorks 内核映像由如下文件构成:sysALib.s、sysLib.c、usrConfig.c 和设备驱动程序文件。bootrom 映像则由如下文件构成:romInit.s、bootInit.c、sysALib.s、sysLib.c、bootConfig.c和设备驱动程序。
bootrom 映像中虽然包含sysALib.s 文件代码,但是其并不使用其中定义的任何函数。
sysLib.c 以及设备驱动程序都是相同的,在下载启动方式下,VxWorks 内核映像不包含romInit.s和bootInit.c文件。但是一旦处于产品阶段,当采用ROM 启动方式时,VxWorks 内核映像构成将基本类似于bootrom映像构成,即为:romInit.s、bootInit.c、sysALib.s、sysLib.c、usrConfig.c、设备驱动程序文件。
ROM启动方式下,sysALib.s文件没有使用,但是仍然包含在内核映像中,可以修改系统文件中的相关宏定义,去掉该文件,但如果需要下载型VxWorks 内核映像,还是要加上sysALib.s文件,故建议一直包含该文件。其中romInit.s、bootInit.c、sysLib.c、设备驱动程序与bootrom 中使用的都是同一套文件,然而无论VxWorks映像是基于下载方式的,还是ROM方式的,其总是使用usrConfig.c文件,而bootrom则总是使用bootConfig.c 文件。这两个文件虽然定义有相同的函数(usrInit 和usrRoot),但基本实现却大不相同,bootConfig.c 也进行一些初始化,如当使用网口下载VxWorks 内核映像时,其需要进行网口初始化,但是正如上文所述,bootConfig.c中完成的所有工作都是为了能够从外部主机上下载真正的VxWorks操作系统映像,其本身不具有VxWorks 操作系统功能部件;而usrConfig.c 则不然,其需要完成维持VxWorks 操作系统正常运行时所需的所有组件的初始化工作,所以usrConfig.c才是真正进行VxWorks操作系统的启动工作的。