VxWorks 6.8启动过程详解

第一步: 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 函数才被连接。</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值