圖說嵌入式系統(tǒng)兩大法門:注冊機制與消息機制

時間:2014-05-29

來源:網絡轉載

導語:相對注冊機制,消息機制是大家所熟悉的一種底層向上層傳遞的方式,msOS采用uC/OS-II,標配為業(yè)務邏輯與菜單界面兩個任務,業(yè)務邏輯為高優(yōu)先級,支持消息隊列,設備發(fā)送的消息,都在業(yè)務邏輯中處理。

注冊機制在嵌入式系統(tǒng)編程中很少提到,但回調函數(shù)大家經常接觸,以軟件定時器為例:

軟件定時器設備通過函數(shù)Start把FunctionCallback作為參數(shù)傳入定時器設備中保存,之后開啟定時器,延時1000ms之后,定時器就會直接調用FunctionCallback,所以這個FunctionCallback就叫做回調函數(shù)。類似處理器的中斷一樣。

注冊機制類似回調函數(shù)性質,只是把概念擴展到變量,上層應用通過注冊函數(shù)地址或者變量地址到設備中保存,當設備中這個地址對應的函數(shù)被激活或者變量值有改變,就調用這個函數(shù)或者更改這個變量值,以此達到底層對上層的信息傳遞。

以ADC設備為例,我們看一下注冊機制的應用。首先在ADC設備device_adc.c中定義一個用于注冊變量地址的指針數(shù)組RegisterPointerBlock,初始值必須要指向一個空變量,否則若指向了一些有用的地址而導致這個地址對應的數(shù)據改變,會引起不可預測問題。

在設備中引入注冊機制,應用層只需要把變量的地址注冊到設備中,設備自己可以通過這個地址修改數(shù)據,這樣解放了應用層,讓應用層不需要關心如何獲取數(shù)據。但是,注冊機制也存在一些缺陷,那就是操作的數(shù)據,必須要原子操作,否則會導致兩個應用層與設備同時修改一個數(shù)據的異常存在,出現(xiàn)數(shù)據錯誤,這個是需要避免的。

相對注冊機制,消息機制是大家所熟悉的一種底層向上層傳遞的方式,msOS采用uC/OS-II,標配為業(yè)務邏輯與菜單界面兩個任務,業(yè)務邏輯為高優(yōu)先級,支持消息隊列,設備發(fā)送的消息,都在業(yè)務邏輯中處理。

需要注意的是,msOS是采用的是uC/OS-II,它屬于RTOS,業(yè)務邏輯與菜單界面雖然是兩個獨立的任務,但并不是同時運行的,一個時刻只能運行一個任務,業(yè)務邏輯的任務優(yōu)先級高于菜單界面,所以在沒有消息的時候,業(yè)務邏輯任務(LogicTask)在PendMessageQueue函數(shù)中掛起等待消息到來,這個時候退到菜單界面任務(MenuTask)執(zhí)行,一旦按鍵設備檢測到按鍵并通過PostMessageToLogicTask發(fā)送消息,就會激活業(yè)務邏輯任務,讓業(yè)務邏輯任務搶占菜單界面任務運行。按鍵設備的運行是基于系統(tǒng)節(jié)拍的,它是在中斷中運行,優(yōu)先級比任務高,不會被任務搶占。

中傳動網版權與免責聲明:

凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.surachana.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯(lián)網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

如涉及作品內容、版權等問題,請在作品發(fā)表之日起一周內與本網聯(lián)系,否則視為放棄相關權利。

關注伺服與運動控制公眾號獲取更多資訊

關注直驅與傳動公眾號獲取更多資訊

關注中國傳動網公眾號獲取更多資訊

最新新聞
查看更多資訊

熱搜詞
  • 運動控制
  • 伺服系統(tǒng)
  • 機器視覺
  • 機械傳動
  • 編碼器
  • 直驅系統(tǒng)
  • 工業(yè)電源
  • 電力電子
  • 工業(yè)互聯(lián)
  • 高壓變頻器
  • 中低壓變頻器
  • 傳感器
  • 人機界面
  • PLC
  • 電氣聯(lián)接
  • 工業(yè)機器人
  • 低壓電器
  • 機柜
回頂部
點贊 0
取消 0