




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 VxWorks入門介紹 2010/10/1 目錄 VxWorks簡介 BSP及系統(tǒng)執(zhí)行流程 中斷 任務(wù)調(diào)度 任務(wù)切換 任務(wù)創(chuàng)建 定時器 目錄 任務(wù)間通訊 信號量 二進制信號量 消息隊列 socket 集成開發(fā)環(huán)境Tornado的使用 VxWorks簡介 VxWorks組成 VxWorks操作系統(tǒng)由任務(wù)的管理與調(diào)度、任務(wù)的同步與通信、動態(tài)內(nèi)存的管理、時鐘的管理、I/O管理、文件系統(tǒng)等幾部分組成 VxWorks簡介 對于VxWorks ,用戶可裁減掉程序員認(rèn)為沒有使用到的功能,直到只剩下最簡內(nèi)核(可以只有10k左右) 一般使用的VxWorks為標(biāo)準(zhǔn)的單CPU版本。VxFusion為標(biāo)準(zhǔn)的多CPU
2、版本,應(yīng)用程序在多個CPU上運行,但仍然象在一個CPU 上運行那樣進行數(shù)據(jù)的交換、通信與同步。 VxWorks簡介 VxWorks使用統(tǒng)一的API,對于VxWorks支持的不同的CPU、VxWorks的不同版本,API都是一樣的。VxWorks的API是由操作系統(tǒng)內(nèi)核提供的服務(wù)原語搭建起來的。服務(wù)原語,是不可打斷的,這樣可以保證系統(tǒng)調(diào)用的時間盡量小、盡量是常量和可確定 BSP BSP是系統(tǒng)用來管理外設(shè)的部分,由兩部分組成:初始化、驅(qū)動程序。所謂初始化是指從系統(tǒng)上電復(fù)位開始直到wind kernel和usrRoot根任務(wù)啟動的這段時間,系統(tǒng)的執(zhí)行過程。驅(qū)動程序就是一些包含I/O操作的子函數(shù)。 初
3、始化包括:CPU Init、Board Init、System Init。CPU Init初始化CPU的內(nèi)部寄存器。Board Init初始化智能I/O的寄存器,將device打通。System Init為系統(tǒng)的運行準(zhǔn)備數(shù)據(jù)結(jié)構(gòu),進行數(shù)據(jù)初始化。 BSP 系統(tǒng)上電代碼執(zhí)行流程 執(zhí)行流程 中斷 中斷是實時系統(tǒng)非常重要的組成部分,與linux及windows相比, VxWorks對于中斷的相應(yīng)速度和中斷處理程序的處理速度要高很多,實時性最好 對于中斷處理程序,可能引起阻塞的都不能使用,printf可能引起阻塞,如果在中斷處理程序里面需要輸出調(diào)試信息,可以使用logMsg來輸出。中斷里面也不要試圖獲
4、得信號量,接收消息隊列里面的消息等操作。 中斷 中斷包含三層含義 中斷引腳號(或從中斷控制器中得到) 中斷號 中斷向量(對x86是中斷號*4)中斷處理程序和中斷向量必須連接再允許后才能被激活 中斷 對于中斷服務(wù)程序,越簡短越好,為提高VxWorks的中斷服務(wù)程序與任務(wù)的合作性能,最好的機制是信號量。下面例子中我們會看到標(biāo)準(zhǔn)的中斷處理過程。 中斷 典型的中斷處理過程示例: 1。中斷連接: intConnect ( IV_IRQ6, (FUNCPTR) Isr1, 0); 參量1:連接的中斷向量 參量2:中斷服務(wù)程序 參量3:中斷服務(wù)程序的參量 中斷 中斷允許: 2。intEnable( (int
5、)IV_IRQ6 ); 參量:中斷向量 3。中斷處理程序 中斷 Isr1() 關(guān)中斷; 清中斷; semGive(SemId1);/*釋放信號量*/ 中斷 4。中斷處理任務(wù) task1() for(;) semTake (SemId1, WAIT_FOREVER) 開中斷; 任務(wù)間調(diào)度 VxWorks無條件的使用基于優(yōu)先級的任務(wù)間調(diào)度 對于同等優(yōu)先級的任務(wù),如果基于時間片輪循沒有打開,任務(wù)采取先到先運行,運行完畢再交出cpu,如果打開,則輪流使用cpu。 任務(wù)里如果有死循環(huán),比它優(yōu)先級低的任務(wù)都不能運行 任務(wù)切換 任務(wù)切換速度:us量級,Cache關(guān)閉時上升到10us量級。 任務(wù)的創(chuàng)建 VxW
6、orks創(chuàng)建任務(wù),如下例所示創(chuàng)建名為task1的任務(wù): taskSpawn(“tTask1”,55,0,10000,(FUNCPTR) task1,0,0,0,0,0,0,0,0,0,0); 參量1:任務(wù)名 參量2: 任務(wù)優(yōu)先級 任務(wù)的創(chuàng)建 參量3:創(chuàng)建時可選參量 參量4:任務(wù)堆棧尺寸 參量5:創(chuàng)建的任務(wù) 參量615:任務(wù)的參量 定時器 VxWorks使用3種定時器 time0:用于系統(tǒng)時鐘,可用sysClkRateSet()改變速率,默認(rèn)值時60次/秒,一般我們改為100次/秒,系統(tǒng)時鐘變?yōu)?0ms等級。 VxWorks下的watchdog基于timer0,因為是在interrupt尺度,使
7、用必須謹(jǐn)慎,否則會降低系統(tǒng)效率 定時器 time1:用于輔助時鐘,可用sysAuxClkRateSet()改變速度,其精度可以很高,例如1ms,除驅(qū)動外,一般不使用。 time2:用于時標(biāo)(timestamp)。從系統(tǒng)開始運行時就一直遞增,可以用來獲得系統(tǒng)運行時間,在windview工具中被使用。用戶程序也可以通過sysTimestamp()得到運行時間。一般不使用。 Watchdog定時器 使用舉例申明:WDOG_ID WdId1; 初始化創(chuàng)建:WdId1 = wdCreate(); 初始化啟動:wdStart(WdId1 , 1, (FUNCPTR)function1, 0) 參數(shù)1:定時
8、器ID參數(shù)2:延時tick數(shù) Watchdog定時器參數(shù)3:定時器到要調(diào)用的函數(shù)參數(shù)4:要調(diào)用函數(shù)的參數(shù)定時要調(diào)用的函數(shù)function1 wdStart(WdId1 , 1, (FUNCPTR)function1, 0) Watchdog定時器 定時器里面運行的代碼與中斷有同等的優(yōu)先級,對于中斷所有的約束定時器同樣要遵守,會引起阻塞的都不能使用。比如不能使用printf打印,不能接收消息里面的消息,不能試圖獲得一個信號量等。 任務(wù)間通訊 信號量 消息隊列 管道 全局變量 socket 信號量 信號量提供了任務(wù)間最快速通信,可以實現(xiàn)任務(wù)間同步和互斥。 互斥用于資源管理,上鎖對共享資源的訪問。
9、同步可以協(xié)調(diào)任務(wù)間的執(zhí)行。 信號量 信號量的三種類型 二進制 互斥 計數(shù)信號量 信號量 互斥信號量本質(zhì)也是一種二進制信號量,主要用于解決內(nèi)在互斥的問題,優(yōu)先級繼承等情況而優(yōu)化的特殊的二進制信號量 計數(shù)信號量會隨著信號量釋放的次數(shù)改變而改變 二進制信號量最基本,最常用 二進制信號量 最常用最快的信號量,用于同步和互斥 創(chuàng)建信號量的時候,隊列類型已經(jīng)確定。 等待信號量的任務(wù)可以按照優(yōu)先級(SEM_Q_PRIORITY) 或先進先出( SEM_Q_FIFO)的順序排隊。 二進制信號量 二進制同步信號量使用舉例: 申明:SEM_ID SemId1; 初始化: SemId1=semBCreate(SEM
10、_Q_FIFO,SEM_EMPTY); 二進制信號量 任務(wù)一釋放信號量SemId1Task1() semGive(SemId1); 任務(wù)二獲得信號量后繼續(xù)執(zhí)行,否則等 待此信號量 二進制信號量task2()For(;) semTake (SemId1, WAIT_FOREVER) ; 二進制信號量 二進制互斥信號量使用舉例: 申明:SEM_ID SemId1; 初始化: SemId1= semBCreate(SEM_Q_PRIORITY ,SEM_FULL); 二進制信號量 使用function1()semTake(SemId1,WAIT_FOREVER); /*需要保護的代碼*/semGiv
11、e(SemId1); 消息隊列 任務(wù)間通訊使用的最常用的方式 允許長度可變,數(shù)目可變的消息排隊 用在單CPU任務(wù)間通訊 任何任務(wù)可以發(fā)送消息到消息隊列 任何任務(wù)可以從消息隊列接收消息 兩個任務(wù)若需要全雙工通信,需要兩個隊列,一發(fā)一收 消息隊列使用舉例 申明:MSG_Q_ID MsgQ1; 創(chuàng)建: MsgQ1 = msgQCreate(500,300,MSG_Q_FIFO); 參數(shù)1:排隊的最大消息數(shù)量 參數(shù)2:每個消息允許的最大長度 參數(shù)3:操作方式,fifo或優(yōu)先級 消息隊列 發(fā)送msgQSend(MsgQ1, pmsgbuf, length, NO_WAIT, MSG_PRI_NORMAL
12、);參數(shù)1:隊列ID參數(shù)2:要發(fā)送的消息指針參數(shù)3:要發(fā)送的消息長度參數(shù)4:等待的tick數(shù)目 消息隊列 參數(shù)5:操作方式,MSG_PRI_NORMAL 或 MSG_PRI_URGENT 消息隊列 接收Task1()for(;) msgQReceive(MsgQ1, m_buffer, 500, WAIT_FOREVER); 消息隊列 參量1:隊列ID 參量2:接收消息的buffer 參量3:buffer的最大長度 參量4:等待的tick數(shù)目,NO_WAIT不進不進 行等待,行等待,WAIT_FOREVER永遠永遠 等待等待 socket 網(wǎng)絡(luò)是VxWorks和其它系統(tǒng)聯(lián)系的主要途徑。 VxWorks實現(xiàn)了與BSD4.4 TCP/IP兼容的網(wǎng)絡(luò)協(xié)議棧。 通常使用socket編程接口,客戶/服務(wù)器編程來實現(xiàn)VxWorks與其他系統(tǒng),如linux,windows 等其它系統(tǒng)之間的通信 socket SOCKET編程舉例 例子較長,具體可以參見VxWorks Network Programmers Guide5.5 7.2 BSD SOCKET 7.2.2 Datagram Sockets (UDP) 7.2.3 Stream Sockets (TCP) Tornado工具使用 Tornado整個開發(fā)系統(tǒng)包含三部分組成 VxWorks:運行在目標(biāo)板上的高性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年芳香保健師(中級)職業(yè)技能鑒定試題:實踐操作
- 專業(yè)資格認(rèn)證證書持有者能力證明(8篇)
- 安全生產(chǎn)責(zé)任證明書(8篇)
- 愛的力量演講稿篇(5篇)
- 2025年醫(yī)療AI輔助診斷產(chǎn)品注冊審批政策對醫(yī)療數(shù)據(jù)安全的關(guān)注與應(yīng)對策略研究報告001
- 難忘的師生情我的語文老師(8篇)
- 量子計算在2025年金融風(fēng)險管理中的應(yīng)用潛力與風(fēng)險模擬研究報告
- 商業(yè)銀行金融科技人才選拔與培養(yǎng)中的心理素質(zhì)與抗壓能力培養(yǎng)策略報告
- 制造業(yè)數(shù)字化轉(zhuǎn)型數(shù)據(jù)治理與產(chǎn)品生命周期管理策略報告
- 農(nóng)村電商農(nóng)產(chǎn)品上行模式與品牌建設(shè):品牌價值評估與提升路徑報告001
- 0-3歲嬰幼兒護理與急救-嬰幼兒意外傷害急救
- 工貿(mào)企業(yè)重大事故隱患判定標(biāo)準(zhǔn)培訓(xùn)PPT
- 從deepfakes深度偽造技術(shù)看AI安全
- 職業(yè)衛(wèi)生知識培訓(xùn)記錄
- 2022清華大學(xué)強基計劃
- 拌合站生產(chǎn)性試驗成果報告
- SMT拋料改善報告課件
- 泗水眾合口腔門診部急救知識考試附有答案附有答案
- 路基路面工程瀝青路面課程設(shè)計
- 美國AHA心肺復(fù)蘇指南
- 水資源規(guī)劃及利用智慧樹知到答案章節(jié)測試2023年長春工程學(xué)院
評論
0/150
提交評論