第一步: romInit( )
romInit 函数作为系统冷启动的第一个函数,会初始化CPU和一段内存,当romInit函数正常初始化成功后,从LOCAL_MEM_LOCAL_ADRS 到 LOCAL_MEM_LOCAL_ADRS + LOCAL_MEM_SIZE的内存可以正常进行读写访问。
第二步: romStart( )
将代码从ROM移植到RAM中,然后,跳到VxWorks 镜像中。romStart函数将跳转到ursInit 函数中。
1. 将数据段和text段的内容拷贝到ROM中。
2. 清除未使用的RAM。
3. romStart函数跳转到RAM的入口函数usrInit。
第三步: usrInit( )
usrInit 函数初始化CPU,关闭其他硬件,为内核初始化做准备。当前有很多功能不能使用,包括(printf 函数)。没有任务上下文,任务控制块(TCB),进程栈,usrInit 函数仅仅只做必要的初始化,ursRoot函数完成整个设备。
1. 初始cache寄存器,在usrInit函数结束时,指令cache和数据cache将被使能。
2. 清空BSS段。在C语言中,所有的未初始化的变量将存在BSS段。代码运行时将未初始化的变量设置为0。
3. 初始中断向量。在使能中断和启动内核前,必须初始化中断。
1) intVecBaseSet函数建立向量基址地址。
2) excVecInit 函数初始化所有的异常中断处理函数。
4. 初始化系统硬件控制器
1) sysHwInit 函数初始化系统硬件寄存器,主要是重新启动和禁止硬件寄存器。
2) 在VxWorks内核中系统的中断向量直到调用ursRoot 函数才被连接。</