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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于MSGQ模塊的DSP的應(yīng)用簡化方案

          基于MSGQ模塊的DSP的應(yīng)用簡化方案

          作者: 時間:2011-12-18 來源:網(wǎng)絡(luò) 收藏

          main()

          if processor 0: 打開雇主消息隊列并

          創(chuàng)建雇主線程。

          if processor 1: 打開雇員消息隊列并

          創(chuàng)建雇員線程。

          打開錯誤消息隊列并創(chuàng)建錯誤線程。

          srio_init to initialize peripheral

          workerThread()

          Loop

          _get message from the worker queue

          確定發(fā)送器

          向發(fā)送器發(fā)送特定數(shù)量的消息

          bossThread()

          _locate to locate worker queue

          Loop

          _alloc message

          使用要接收的多個消息來填充消息。

          MSGQ_setSrcQueue to embedded boss’s message queue

          MSGQ_put message to reader

          Loop

          MSGQ_get message from the boss queue

          errorThread()

          Loop

          MSGQ_get message from the error queue

          Log MQT error via LOG_printf

          在單個處理器上發(fā)送消息

          下面將介紹在單個處理器上發(fā)送和接收消息的幕后情況,這個過程分為任務(wù)一和任務(wù)二。任務(wù)二由操作系統(tǒng)進行調(diào)用,打開MSGQ隊列,并為該消息隊列指定 “pend”與“post”函數(shù)。如果沒有消息,則使用“pend”函數(shù),在而向消息隊列發(fā)送消息時則調(diào)用“post”函數(shù)。

          如果MSGQ獲得了沒有待決消息的信息,那么就可運行任務(wù)一,但必須讀取隊列標(biāo)識符,并定位適當(dāng)?shù)年犃校悦馄湮挥诓煌奶幚砥魃?。通常在啟動時定位隊列對性能幾乎沒有什么影響。此外,任務(wù)一在向任務(wù)二發(fā)送消息之前還必須為消息傳輸分配存儲器。

          一旦任務(wù)一發(fā)送消息,就不能再對消息進行處理,因為這時MSGQ已擁有該消息,MSGQ會將該消息分配給適當(dāng)?shù)年犃?。任?wù)二獲得了有消息的信息,并準(zhǔn)備接收消息。一旦任務(wù)二獲得消息,就能夠?qū)ο⑦M行重復(fù)使用,并將其發(fā)送回任務(wù)一。例如,如果兩個任務(wù)要將消息來回傳輸,那么就僅需分配開始的消息。若讀取器接收到消息,就能相應(yīng)地更新內(nèi)容,然后將其發(fā)回。這樣,任務(wù)二就能夠處理消息,一旦處理完成,消息就返回到存儲器管理,任務(wù)二也就不能再對該消息進行處理。消息傳輸至此完成。消息傳遞可通過為數(shù)據(jù)移動提供虛擬接口來顯著復(fù)雜處理器通信的開發(fā)與維護。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();