1)romInit(),位于romInit.s文件中,功能如下
A)初始化CPU,部分内存,基本的硬件。如果初始化正确,则内存LOCAL_MEM_LOCAL_ADRS到LOCAL_MEM_LOCAL_ADRS+LOCAL_MEM_SIZE是可读可写的。
B)禁止中断,清除CACHE,为下一个函数romStart(位于bootInit.c中)的执行配置启动类型。
2)romStart()位于bootInit.c文件中,功能如下
A)将代码段从FLASH拷贝到ROM中,根据vxWorks镜像类型也需要拷贝数据段,也有可能在拷贝的过程中执行解压缩。
B)清除RAM。
C)跳转到sysInit(位于sysAlib.s中),启动类型的参数需要被传递过去。
3)sysInit()位于sysAlib.s文件中,是RAM的入口,功能如下
A)使CACHE无效,初始化默认的系统中断表,初始化默认的系统故障表,初始化系统寄存器到默认状态。
4)usrInit(),位于usrConfig.c文件中,该函数是VxWorks中第一运行的C代码,功能如下
A)初始化CACHE。
B)清空BSS段。
C)初始化中断向量,分别调用intVecBaseSet()和excVecInit()。
D)初始化系统到一个安静的状态。调用sysHwInit()初始化系统硬件,注意在此函数中不能连接中断和分配内存,因为此时内存和中断都是不能使用,usrRoot之后才可以。
E)调用kernelInit(),此函数是一个库,这个函数会建立一个多任务的运行环境,并且绝不返回,它需要6个参数。
5)kernelInit(),功能如下:
A)调用intLockLevelSet,禁止轮询任务调度模式,创建中断栈,创建一个TCB,并启动任务usrRoot,终止线程usrInit的执行。此时中断可以使用。
6)usrRoot(),,位于usrConfig.c中。功能如下:
A)完成硬件和内核的初始化,然后执行应用代码。
B)usrConfig.c文件只能被复制但不能被修改,但为了调试可以经常性的临时修改,可以通过config,h进行配置。
C)usrRoot调用memInit函数,也可以调用memShowInit()和usrMmuInit()。
D)一旦多任务启动,BSP调用的第一个函数是SysClkConnect(),SysClkConnect()调用sysHwInit2(),sysHwInit2()负责完成任何没有在sysHwInit中完成板卡级别初始化,比如intConect()的调用。
E)接着usrRoot执行一个时钟初始化,设置为60HZ。
F)一旦时钟初始化完成,一些内核模块,如select,I/O子系统是被初始化的。更详细的可以看usrConfig.c,被宏定义config,h和configAll,h配置。
H)如果INCLUDE_WDB被定义,则wdbConfig(位于usrWdb.c中)被调用。如果INCLUDE_USR_APPL被调用,则usrRoot函数则执行默认的USER_APPL_INIT宏。