基于MPC8280 多通道控制器驅(qū)動(dòng)的研究與實(shí)現(xiàn)
3.2 中斷處理
當(dāng)一個(gè)MCC 通道產(chǎn)生中斷請(qǐng)求時(shí),CP 將中斷信息寫(xiě)入循環(huán)中斷表,然后修改T/RINTPTRR并設(shè)置MCCM 寄存器中相應(yīng)的TINT 或者RINTx 比特。當(dāng)MCC 中斷到達(dá)內(nèi)核后由內(nèi)核調(diào)用中斷處理函數(shù)。中斷處理函數(shù)首先清除中斷,然后根據(jù)MCCE[RINTx]和MCCE[TINT]的值來(lái)處理相應(yīng)的循環(huán)中斷表。
3.3 接收數(shù)據(jù)
數(shù)據(jù)接收程序通過(guò)一個(gè)先進(jìn)先出的消息隊(duì)列和中斷處理程序相配合來(lái)完成數(shù)據(jù)的接收。當(dāng)MCC 的某個(gè)通道接收到數(shù)據(jù)后會(huì)設(shè)置相應(yīng)的中斷事件比特位。之后中斷處理函數(shù)將收到的數(shù)據(jù)進(jìn)行封裝后發(fā)送到消息隊(duì)列。數(shù)據(jù)接收任務(wù)從消息隊(duì)列接收數(shù)據(jù),然后根據(jù) MCC 通道號(hào)調(diào)用相應(yīng)的由用戶(hù)安裝的數(shù)據(jù)接收回調(diào)函數(shù)。最后由回調(diào)函數(shù)完成數(shù)據(jù)的處理。
3.4 發(fā)送數(shù)據(jù)
數(shù)據(jù)的發(fā)送過(guò)程由通信協(xié)處理器完成。數(shù)據(jù)發(fā)送函數(shù)將所發(fā)送的數(shù)據(jù)復(fù)制到所使用通道的緩沖區(qū),然后設(shè)置相應(yīng)的控制寄存器,由通信協(xié)處理器完成數(shù)據(jù)從緩沖區(qū)到線(xiàn)路接口的發(fā)送。數(shù)據(jù)發(fā)送完成后通信協(xié)處理器設(shè)置中斷寄存器MCCE 相應(yīng)的RINT 比特位。并由中斷處理程序通知數(shù)據(jù)發(fā)送函數(shù)數(shù)據(jù)發(fā)送已完成。
4 結(jié)束語(yǔ)
該驅(qū)動(dòng)程序在基于MPC8280 處理器的VxWorks5.5 操作系統(tǒng)上進(jìn)行了測(cè)試。MCC 通道工作在Transparent 模式下,對(duì)多種數(shù)據(jù)模式進(jìn)行長(zhǎng)時(shí)間的數(shù)據(jù)收發(fā)表明該驅(qū)動(dòng)能較穩(wěn)定地運(yùn)行。
由于該驅(qū)動(dòng)的中斷處理函數(shù)檢查所有循環(huán)中斷表的條目并將收到的數(shù)據(jù)從 MCC 通道的數(shù)據(jù)緩存發(fā)送到消息隊(duì)列,由此引入了較大的處理延遲,在數(shù)據(jù)量較大時(shí)甚至有可能會(huì)造成數(shù)據(jù)丟失。改進(jìn)的關(guān)鍵在于中斷處理函數(shù)和數(shù)據(jù)接收函數(shù)的配合。作為一種改進(jìn)方法可考慮在中斷處理函數(shù)內(nèi)僅執(zhí)行那些必須的操作,如清除中斷,重新設(shè)置相關(guān)寄存器參數(shù)等。將數(shù)據(jù)處理放在另外一個(gè)單獨(dú)的任務(wù)中去執(zhí)行,并盡量減少數(shù)據(jù)搬移次數(shù),優(yōu)化所執(zhí)行的操作等。最終在程序運(yùn)行的速度和所完成的功能之間作合適的折中,從而獲得所需的性能。本文引用地址:http://m.butianyuan.cn/article/156903.htm
評(píng)論