romInit.s : romInit
设置机器状态字及其它硬件相关寄存器,关闭中断,禁止程序和数据
CACHE,初始化内存,并设置堆栈指针
bootInit.c : romStart( )
将ROM中的程序搬移至RAM中
bootConfig.c : usrInit( )
设置cache 的工作模式,板级硬件初始化,调用sysHwInit(
),usrKernelInit ( ) ,KernelInit ( ),初始化Win内核,产生根任务 usrRoot( )
bootConfig.c : usrRoot( )
初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,产生任
务bootCmdLoop
bootConfig.c : bootCmdLoop( )
调用自动引导程序autoboot( ),此函数若成功则不返回
bootConfig.c: autoboot( )
延时7s,以默认参数启动
用户按键中断
bootConfig.c :bootCmdLoop( )
启动命令行用于配置VxWorks启动参数
bootConfig.c: bootLoad( )
加载VxWorks映象,并转向它进行重启
等待超时
用户输入‘@ ’
BootStrap程序
在ROM中执行
ROM Boot程序
被搬移到RAM中执行
3.1.1 BOOTROM的启动过程
1、 目标板加电之后,程序指针指向RESET中断程序入口处,开始执行初始化程序romInit.s,设置机器状态字及其它硬件相关
寄存器,关闭中断,禁止程序和数据CACHE,初始化内存,并设置堆栈指针,保存启动类型,调用romStart( )。
2、 程序跳到第一个C程序bootInit.c的函数romStart( )入口地址,根据堆栈中的参数决定是否清零内存RAM(如是冷启动
(cold start)则清零),根据不同的bootrom文件,把ROM中数据段和文本段拷贝到RAM(如果ROM代码是压缩的,还要解
压);
3、 程序跳到RAM入口地址(文件bootConfig.c中函数usrInit( ) ),根据用户配置来设置cache的工作模式,清零bss段,初始
化异常处理程序,进行板级硬件初始化sysHwInit( )。
4、 启动多任务内核KernelInit( ),执行usrRoot任务。在该任务中初始化串口,创建console终端设备。创建bootCmdLoop任
务,根据单板设计选择不同方式加载VxWorks映像文件,如通过串口、网口、硬盘等方式。
3.1.2 VxWorks映象的启动过程
VxWorks进入点sysInit()