VxWorks各部分初始化流程 分类: vxWorks ...

本文详细探讨了VxWorks操作系统的初始化流程,包括各个组件的启动与配置,是理解嵌入式系统运行机制的重要参考资料。
摘要由CSDN通过智能技术生成
一)configAll.h中定义所有定置系统配置的宏
INCLUDED SOFTWARE FACILITIES:定义了基本组件;
EXCLUDED FACILITIES:定义了扩充组件,缺省不包括;
KERNEL SOFTWARE CONFIGURATION:内核运行的基本参数定义,包括文件个数、任务个数等等;
"GENERIC" BOARD CONFIGURATION:板通用属性定义;
"MISCELLANEOUS" CONSTANTS:共享的信号量以及相关对象个数定义;
INCLUDED NETWORK FACILITIES:包括的网络协议组件定义;
EXCLUDED NETWORK FACILITIES:未包括的网络协议组件定义;

二)boot流程(bootrom)
usrInit()
{
intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS)设置中断向量;
excVecInit ()设置异常向量;
sysHwInit ()初始化硬件
usrKernelInit ()配置VXWORK内核;
kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE,启动usrRoot();
}
usrRoot()
{
memInit (pMemPoolStart, memPoolSize);/* XXX select between memPartLibInit */初始化内存;
/* set up system timer */
sysClkConnect ((FUNCPTR) usrClock, 0);/* connect clock interrupt routine */
sysClkRateSet (60);/* set system clock rate */
sysClkEnable ();/* start it */
/*必须的硬件初始化步骤*/
/*启动tboot任务*/
taskSpawn ("tBoot", bootCmdTaskPriority, bootCmdTaskOptions,
bootCmdTaskStackSize, (FUNCPTR) bootCmdLoop,
0,0,0,0,0,0,0,0,0,0);
}
bootCmdLoop()
{
/*根据用户输入走入不同分支*/
autoboot()
/*根据取得的BOOT_LINE_ADRS地址,进入bootLoad流程*/
}
bootLoad()
{
/*根据bootline配置选择启动路径*/
flashLoad() or netLoad()
/*如果从网络启动,网络初始化,静态IP or dhcpGet()*/
}

三)vxWorks启动流程
usrInit() 
/* the first C code executed after the system boots. This routine is called by the assembly language start-up routine sysInit() which is in the sysALib module of the target-specific directory*/
{
sysHwInit ();/* initialize system hardware */
usrKernelInit ();/* configure the Wind kernel */
/* start the kernel specifying usrRoot as the root task */
kernelInit ((FUNCPTR) usrRoot, * )
}
usrRoot()
/* first task to run under the multitasking kernel.  It performs all final initialization and then starts other tasks*/
{
调用 memInit (pMemPoolStart, memPoolSize); /* initialize memory pool */
或memPartLibInit (pMemPoolStart, memPoolSize);/* initialize memory pool */
初始化系统内存池;
调用memShowInit ()初始化内存显示例程;
调用usrMmuInit ()初始化MMU单元;
调用 sysClkConnect ((FUNCPTR) usrClock, 0); /* connect clock ISR */
sysClkRateSet (60); /* set system clock rate */
sysClkEnable (); /* start it */
初始化系统时钟;
初始化_func_selWakeupListInit;
调用 iosInit (NUM_DRIVERS, NUM_FILES, "/null");初始化I/O系统;
安装控制台驱动,创建控制台设备,设置BAND率;
初始化PC控制台设备;
调用 ioGlobalStdSet (STD_IN, consoleFd);
ioGloba
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值