<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 基于MPC8280 多通道控制器驅動的研究與實現(xiàn)

          基于MPC8280 多通道控制器驅動的研究與實現(xiàn)

          作者: 時間:2010-12-07 來源:網(wǎng)絡 收藏

          3.2 中斷處理

          當一個MCC 產(chǎn)生中斷請求時,CP 將中斷信息寫入循環(huán)中斷表,然后修改T/RINTPTRR并設置MCCM 寄存器中相應的TINT 或者RINTx 比特。當MCC 中斷到達內核后由內核調用中斷處理函數(shù)。中斷處理函數(shù)首先清除中斷,然后根據(jù)MCCE[RINTx]和MCCE[TINT]的值來處理相應的循環(huán)中斷表。

          3.3 接收數(shù)據(jù)

          數(shù)據(jù)接收程序通過一個先進先出的消息隊列和中斷處理程序相配合來完成數(shù)據(jù)的接收。當MCC 的某個接收到數(shù)據(jù)后會設置相應的中斷事件比特位。之后中斷處理函數(shù)將收到的數(shù)據(jù)進行封裝后發(fā)送到消息隊列。數(shù)據(jù)接收任務從消息隊列接收數(shù)據(jù),然后根據(jù) MCC 號調用相應的由用戶安裝的數(shù)據(jù)接收回調函數(shù)。最后由回調函數(shù)完成數(shù)據(jù)的處理。

          3.4 發(fā)送數(shù)據(jù)

          數(shù)據(jù)的發(fā)送過程由通信協(xié)處理器完成。數(shù)據(jù)發(fā)送函數(shù)將所發(fā)送的數(shù)據(jù)復制到所使用通道的緩沖區(qū),然后設置相應的控制寄存器,由通信協(xié)處理器完成數(shù)據(jù)從緩沖區(qū)到線路接口的發(fā)送。數(shù)據(jù)發(fā)送完成后通信協(xié)處理器設置中斷寄存器MCCE 相應的RINT 比特位。并由中斷處理程序通知數(shù)據(jù)發(fā)送函數(shù)數(shù)據(jù)發(fā)送已完成。

          4 結束語

          程序在 處理器的VxWorks5.5 操作系統(tǒng)上進行了測試。MCC 通道工作在Transparent 模式下,對多種數(shù)據(jù)模式進行長時間的數(shù)據(jù)收發(fā)表明該能較穩(wěn)定地運行。

          由于該的中斷處理函數(shù)檢查所有循環(huán)中斷表的條目并將收到的數(shù)據(jù)從 MCC 通道的數(shù)據(jù)緩存發(fā)送到消息隊列,由此引入了較大的處理延遲,在數(shù)據(jù)量較大時甚至有可能會造成數(shù)據(jù)丟失。改進的關鍵在于中斷處理函數(shù)和數(shù)據(jù)接收函數(shù)的配合。作為一種改進方法可考慮在中斷處理函數(shù)內僅執(zhí)行那些必須的操作,如清除中斷,重新設置相關寄存器參數(shù)等。將數(shù)據(jù)處理放在另外一個單獨的任務中去執(zhí)行,并盡量減少數(shù)據(jù)搬移次數(shù),優(yōu)化所執(zhí)行的操作等。最終在程序運行的速度和所完成的功能之間作合適的折中,從而獲得所需的性能。

          本文引用地址:http://www.ex-cimer.com/article/156903.htm

          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();