1. 程式人生 > >學習筆記——工作中的Vxworks嵌入式作業系統

學習筆記——工作中的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);