學習筆記——工作中的Vxworks嵌入式作業系統
VxWorks嵌入式作業系統,是美國 Wind River System 公司( 以下簡稱風河公司 ,即 WRS 公司)推出的一個實時作業系統。
我工作中的VxWorks平臺核心板由:OMAP晶片(ARM+DSP)* 2 + FPGA * 1組成。開發工具為Wind River workbench。
一、嵌入式系統架構
該嵌入式軟體由三層組成:作業系統層、中間層、應用層。
作業系統層:存放VxWorks嵌入式作業系統原始碼,已固化到晶片中。
中間層:平臺共性程式,主要負責封裝複雜的資料處理、資料互動、外設初始化等,為應用層提供介面即可。
應用層:顧名思義,實現所有邏輯控制、簡單的資料處理、動作響應、故障判斷及保護等等實際應用。
二、程式執行流程
1. 啟動
使用FTP連線主機板之後,可以看到其中的檔案系統:
其中,在主控板上電之後,系統會自動讀取引導檔案“startup.txt”(剛才百度了一下…這個txt引導的模式好像只有我們在用…噓?),根據startup檔案中的指令,開始執行兩個任務:arm_Main、mai_init。這兩個任務分別是中間層和應用層的入口程式。
2. 週期任務建立
VxWorks中有一個啟動執行緒任務的api介面:taskSpawn()
根據手冊查得 taskSpawn函式原型如下: * int taskSpawn * ( * char * name, // name of new task (stored at pStackBase) * int priority, // priority of new task * int options, // task option word * int stackSize, // size (bytes) of stack needed plus name * FUNCPTR entryPt, // entry point of new task * int arg1, // 1st of 10 req'd args to pass to entryPt * int arg2, * int arg3, * int arg4, * int arg5, * int arg6, * int arg7, * int arg8, * int arg9, * int arg10 * )
使用示例: taskSpawn(TASKNAME_10MS, TPRI_10MSTASK, VX_FP_TASK, PDT10MS_STACK_SIZE, (FUNCPTR)mai_10msPdt,0,0,0,0,0,0,0,0,0,0);