VxWorks启动流程
镜像种类不同,VxWorks的启动过程会有所不同。我们项目中使用的是加载型VxWorks镜像

函数 |
函数功能 |
所在文件 |
bootTask() |
(a) 通过createBootLineFromFlash()从FLASH_ADRS中读出配置信息,组装bootline字符串到BOOT_LINE_ADRS (b) 调用autoboot() |
bootMain.c |
autoboot() |
延迟5s,等待用户输入 超时后调用sysInit() |
bootMain.c |
sysInit() |
(a) 锁住中断 (b) 禁用缓冲 (c) 用缺省值初始化系统中断表(仅i960) (d) 用缺省值初始化系统错误表(仅i960) (e) 初始化处理器寄存器到一缺省值 (f) 使回溯失效 (g) 清除所有悬置中断 激活usrInit(),指明启动类型 |
sysALib.s |
usrInit() |
(a) 调用sysStart() 对bss清零 (b) 调用cacheLibInit() 支持cache (c) 调用excVecInit(),初始化所有系统和缺省中断向量 (d) 调用sysHwInit(), usrCacheEnable() (e) 调用usrKernelInit() |
prjConfig.c |
usrKernelInit() |
依次调用classLibInit(),taskLibInit()qInit(),workQInit(), kernelInit() |
Target\config \comps\src \usrKernel.c |
kernelInit() |
初始化并启动内核。 (a)激活intLockLevelSet(); (b)从内存池顶部创建根堆栈和TCB (c)调用taskInit(), taskActivate(),用于usrRoot(); (d)调用usrRoot() |
kernelLib.h |
usrRoot() |
依次调用 usrKernelCoreInit(),memPartLibInit(),memInit(), usrMmuInit(),sysClkInit(), usrIosCoreInit(),usrKernelExtrsInit(),usrIo***traInit(), usrNetworkInit(),selectInit(),usrToolsInit(), cplusDemanglerInit(),usrAppInit() |
prjConfig.c |
usrAppInit() |
依次调用 startWdTask(), appMain() |
usrAppInit.c |
最后更新:2017-04-03 12:55:36
上一篇:
vxWorks驱动架构
下一篇:
lindo与lingo软件有什么区别?
人工智能芯片FPGA与ASIC的产业分析
不要重复发明轮子:C++重用的5重境界(4)——继承接口DLL
『每日一题 2012-04-18』将真分数分解为埃及分数
[Android] SurfaceView使用实例
《iOS6 application development》学习之路:No.1
看看你这个软件测试人是什么水平
准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
C语言中如何写一个简单可移植而又足够随机的随机数生成器
error: ‘ostream_iterator’ was not declared in this scope
MongoDB Kill Hang问题排查记录