




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VxWorks應(yīng)用設(shè)計(jì)中科信軟培訓(xùn)中心六、VxWorks中斷和定時(shí)器6.1中斷設(shè)備向CPU發(fā)送中斷,通知CPU發(fā)生了某些事件加載用戶自定義的程序,在中斷到達(dá)時(shí)執(zhí)行該程序中斷服務(wù)程序不是一個(gè)任務(wù)設(shè)備上的板上定時(shí)器是一個(gè)常見的中斷源,可以通過(guò)它來(lái)理解中斷
中斷處理舉例
中斷向量表handler中斷號(hào)硬件中斷↗ISR包裝代碼Handler:SaveregistercallroutineRestoreregisterRET↗用戶ISRmyISR(){…}↗
設(shè)置中斷處理程序VxWorks提供函數(shù)intConnect(),它允許將指定的C函數(shù)與任意中斷相聯(lián)系STATUSintConnect(){VOIDFUNCPTR*vector;/*要聯(lián)系的中斷向量*/VOIDFUNCPTR*routine;/*中斷發(fā)生時(shí)要調(diào)用的函數(shù)*/intparameter;/*傳遞給中斷處理函數(shù)的參數(shù)*/}該函數(shù)將指定的C函數(shù)與指定的中斷向量相聯(lián)系,函數(shù)的地址存放在這個(gè)中斷向量中。當(dāng)發(fā)生中斷時(shí),系統(tǒng)調(diào)用該函數(shù)。
中斷堆棧大多數(shù)體系結(jié)構(gòu)的CPU的ISR使用相同的中斷堆棧中斷堆棧在系統(tǒng)啟動(dòng)時(shí)分配堆棧大小由宏ISR_STACK_SIZE控制,默認(rèn)值在configAll.h中定義堆棧必須足夠大,以保證能夠處理系統(tǒng)最壞情況下的中斷嵌套ISR沒(méi)有任務(wù)控制塊(TCB),并且所有的ISR共享一個(gè)堆棧
VxWorks中斷處理流程保存CPU寄存器從中斷控制器讀中斷向量號(hào)順序調(diào)用該中斷服務(wù)程序通知中斷控制器中斷服務(wù)程序結(jié)束恢復(fù)CPU寄存器返回
中斷和優(yōu)先級(jí)
ISR的使用限制ISR執(zhí)行完成之前,其它任務(wù)不能執(zhí)行ISR中不能調(diào)用某些VxWorks函數(shù),尤其是,ISR不能被阻塞–不能調(diào)用semTake()–不能調(diào)用malloc(),free()–不能調(diào)用I/O系統(tǒng)函數(shù)(如printf())–不能調(diào)用使用浮點(diǎn)協(xié)處理器的程序非法指令或總線錯(cuò)導(dǎo)致硬件異常時(shí),該任務(wù)被掛起,其他任務(wù)繼續(xù)執(zhí)行如果ISR沒(méi)有context被掛起,vxworks將在低端內(nèi)存保存對(duì)異常的描述,并重啟系統(tǒng)
如何使用ISR保持ISR盡量短,因?yàn)镮SR–會(huì)延遲低或相同優(yōu)先級(jí)的中斷–延遲所有的任務(wù)–調(diào)試起來(lái)比較困難避免在ISR中使用浮點(diǎn)指針操作盡量將有些工作放到任務(wù)中去完成–持續(xù)時(shí)間長(zhǎng)的工作–不是非常重要的工作
中斷與任務(wù)間的通信共享存儲(chǔ)器和環(huán)緩沖區(qū)–ISR與任務(wù)共享變量、存儲(chǔ)器和環(huán)緩沖區(qū)信號(hào)量–ISR釋放信號(hào)量,任務(wù)等待接收信號(hào)量消息隊(duì)列–ISR發(fā)送消息,任務(wù)等待接收消息,如果消息隊(duì)列滿,該消息被丟棄管道–ISR向管道寫消息,任務(wù)讀消息
調(diào)試中斷中斷處理程序可以調(diào)用logMsg()向系統(tǒng)輸出診斷信息logMsg(“foo=%d\n”,foo,2,3,4,5,6)向tLogTask發(fā)送請(qǐng)求為我們實(shí)現(xiàn)printf()的功能和printf()相似,但必須注意–參數(shù)必須為4字節(jié)–函數(shù)有6個(gè)入口參數(shù)使用具有系統(tǒng)級(jí)調(diào)試的機(jī)制進(jìn)行調(diào)試–WDBAgent–emulator6.2定時(shí)器系統(tǒng)時(shí)鐘中斷服務(wù)程序看門狗定時(shí)器輔助時(shí)鐘定時(shí)器板上的定時(shí)器會(huì)周期性地中斷CPU定時(shí)器使得用戶自定義的程序可以周期性地執(zhí)行,這對(duì)下列情況非常有用–輪詢硬件–檢查系統(tǒng)錯(cuò)誤VxWorks提供對(duì)兩種定時(shí)器的相同的接口–系統(tǒng)時(shí)鐘–輔助時(shí)鐘
系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘完成下列工作–增加ticks計(jì)數(shù)(使用tickGet()獲得計(jì)數(shù)值)–更新延時(shí)和超時(shí)計(jì)數(shù)器–檢查循環(huán)調(diào)度默認(rèn)的時(shí)鐘頻率是60HzsysClkRateSet()設(shè)置時(shí)鐘頻率sysClkRateGet()獲得時(shí)鐘頻率sysClkRateSet()通常在系統(tǒng)啟動(dòng)時(shí)進(jìn)行設(shè)置(VxSim方式下可以隨時(shí)設(shè)置)輔助時(shí)鐘相關(guān)函數(shù)sysAuxClkConnect()sysAuxClkRateGet()sysAuxClkRateSet()sysAuxClkEnable()sysAuxClkDisable()
看門狗定時(shí)器系統(tǒng)時(shí)鐘的一個(gè)用戶接口能夠使C程序在一個(gè)給定延時(shí)后開始執(zhí)行一旦延時(shí)超時(shí),指定的程序開始執(zhí)行作為系統(tǒng)ISR的一部分,要遵守ISR的編程要求
創(chuàng)建看門狗定時(shí)器創(chuàng)建一個(gè)看門狗定時(shí)器–WDOG_IDwdCreate()–返回wotchdogid或NULL或ERROR啟動(dòng)(或重啟)一個(gè)看門狗定時(shí)器STATUSwdStart(wdId,delay,pRoutine,parameter)wdId由wdCreate返回的watchdogIddelay要延時(shí)的tickspRoutine當(dāng)延時(shí)超時(shí)時(shí),要調(diào)用的程序parameter傳遞給程序的參數(shù)wdStart()可以在超時(shí)時(shí)運(yùn)行看門狗程序,要想周期性執(zhí)行,看門狗程序必須調(diào)用wdStart()自己重新啟動(dòng)
使用看門狗定時(shí)器使用看門狗定時(shí)器可以使一段程序周期性地執(zhí)行wdId=wdCreate();wdStart(wdId,DELAY_PERIOD,myWdIsr,0);voidmyWdIsr(param){doit(param);wdStart(wdId,DELAY_PERIOD,myWdIsr,0);}doit程序可以–輪詢某些硬件設(shè)備–解鎖某些任務(wù)–檢查系統(tǒng)是否出現(xiàn)錯(cuò)誤
停止看門狗定時(shí)器要取消原來(lái)已經(jīng)啟動(dòng)的看門狗定時(shí)器STATUSwdCancel(wdId)要?jiǎng)h除一個(gè)看門狗定時(shí)器(并取消原先啟動(dòng)的定時(shí)器)STATUSwdDelete(wdId)輪詢的實(shí)現(xiàn)任務(wù)級(jí)輪詢的實(shí)現(xiàn)
taskD
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商平臺(tái)網(wǎng)店債權(quán)債務(wù)處理及代償合同
- 污水凈化設(shè)施建設(shè)與在線監(jiān)測(cè)系統(tǒng)運(yùn)行維護(hù)協(xié)議
- 網(wǎng)絡(luò)數(shù)據(jù)安全等級(jí)測(cè)評(píng)服務(wù)補(bǔ)充協(xié)議
- 網(wǎng)絡(luò)游戲虛擬貨幣發(fā)行與游戲行業(yè)自律補(bǔ)充協(xié)議
- 輸血服務(wù)質(zhì)量控制流程與應(yīng)急預(yù)案
- 整形醫(yī)院市場(chǎng)部職責(zé)與挑戰(zhàn)
- 新能源風(fēng)能發(fā)電標(biāo)準(zhǔn)必要專利授權(quán)與設(shè)備集成服務(wù)協(xié)議
- 恐怖片群眾演員報(bào)酬結(jié)算及安全保障合同
- 智能倉(cāng)儲(chǔ)系統(tǒng)開發(fā)與供應(yīng)鏈協(xié)同服務(wù)合同
- 環(huán)境保護(hù)領(lǐng)域信息管理監(jiān)理措施
- (完整版)六年級(jí)數(shù)學(xué)畢業(yè)考試試卷及答案
- 煤礦安全規(guī)程(2022版)解讀
- 部編版七年級(jí)下冊(cè)《古代詩(shī)歌五首》 閱讀鑒賞題 中考題匯總(背誦 含答案)
- 陳長(zhǎng)興《用武要言》(附要點(diǎn)解析)
- 防災(zāi)減災(zāi)日安全隱患排查臺(tái)賬
- 中國(guó)青光眼指南(2020年)
- 食療營(yíng)養(yǎng)更年期
- 小品搞笑大全劇本完整-搞笑小品劇本:《四大才子》
- 數(shù)學(xué)建模微分方程模型
- 腸結(jié)?。ú煌耆阅c梗阻)中醫(yī)診療方案(試行)
- 成長(zhǎng)禮完整模板
評(píng)論
0/150
提交評(píng)論