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問題排查記錄