• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MSGQ模塊的DSP的應用簡化方案

    基于MSGQ模塊的DSP的應用簡化方案

    作者: 時間:2011-12-18 來源:網絡 收藏

    main()

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

    創建雇主線程。

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

    創建雇員線程。

    打開錯誤消息隊列并創建錯誤線程。

    srio_init to initialize peripheral

    workerThread()

    Loop

    _get message from the worker queue

    確定發送器

    向發送器發送特定數量的消息

    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

    在單個處理器上發送消息

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

    如果MSGQ獲得了沒有待決消息的信息,那么就可運行任務一,但必須讀取隊列標識符,并定位適當的隊列,以免其位于不同的處理器上。通常在啟動時定位隊列對性能幾乎沒有什么影響。此外,任務一在向任務二發送消息之前還必須為消息傳輸分配存儲器。

    一旦任務一發送消息,就不能再對消息進行處理,因為這時MSGQ已擁有該消息,MSGQ會將該消息分配給適當的隊列。任務二獲得了有消息的信息,并準備接收消息。一旦任務二獲得消息,就能夠對消息進行重復使用,并將其發送回任務一。例如,如果兩個任務要將消息來回傳輸,那么就僅需分配開始的消息。若讀取器接收到消息,就能相應地更新內容,然后將其發回。這樣,任務二就能夠處理消息,一旦處理完成,消息就返回到存儲器管理,任務二也就不能再對該消息進行處理。消息傳輸至此完成。消息傳遞可通過為數據移動提供虛擬接口來顯著復雜處理器通信的開發與維護。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 资阳市| 柞水县| 南汇区| 贵南县| 湄潭县| 张家界市| 永嘉县| 洛隆县| 察哈| 宝应县| 旌德县| 东乌珠穆沁旗| 海淀区| 德令哈市| 长春市| 马边| 合山市| 文登市| 西乡县| 伊金霍洛旗| 江达县| 宣化县| 清原| 邳州市| 扬州市| 政和县| 辉县市| 盐源县| 宝兴县| 南丹县| 望谟县| 横峰县| 江华| 成都市| 武清区| 东山县| 资阳市| 曲麻莱县| 玉龙| 崇文区| 福安市|