xWorks嵌入式系統下視頻監控系統通信的研究
圖3 用狀態機實現幀同步的狀態轉換圖
利用FSM處理異步通信同步的好處是:當通信協議發生變化時,可以很容易地對軟件進行移植工作. 因為在數據鏈路層,所有幀格式都是由幀頭+ 數據+ 校驗字的方式所組成,只需要改變同步字和校驗方式就可以完成數據鏈路層的數據接收和應答.
(3) 用生產者—消費者問題實現數據同步通信數據同步通信過程實際上等同于生產者—消費者問題( Producer-Consumer Problem) . 生產者—消費者問題是一個著名的進程同步問題,它描述的是: 用一群生產者進程生產消息,并用此消息提供給消費者進程消費. 為使生產者進程和消費者進程能并發執行,在它們之間設置一個具有N 個緩沖區的緩沖池,生產者進程可將它所生產的消息投入一個緩沖區中,消費者進程可從一個緩沖區中取得一個消息消費. 盡管所有的生產者進程和消費者進程都是以異步方式進行,但它們之間必須保持同步,即不允許消費者進程到一個空緩沖區中去取消息,也不允許生產者進程到一個已裝有消息但該消息未被取走的緩沖區中投放新消息.
采用共享數據的方法簡化了數據交換,但在多進程數據通信過程中卻可能發生錯誤,使數據內容被破壞. 為解決問題,可利用信號量的互斥性加以同步保護,獲得對緩沖區(數據) 的獨占訪問,見圖4.
圖4 使用信號量的緩沖區管理圖
圖 4 中,假設緩沖池包含10 個緩沖區,一個任務通過調用BufReq ( ) 可以從緩沖區管理器中獲得一個緩沖區,用BufRel ( ) 釋放該緩沖區到緩沖區管理器中. 緩沖區管理器共有10 個信號量,當所有的信號量都被使用時,再申請緩沖區的任務將被掛起,直到有信號量可以使用為止. 當一個帶有緩沖區的任務完成后,它將調用BufRel ( ) 把緩沖區還給緩沖區管理器.
本文采用計數器信號量來管理緩沖區,與其它信號量相比,計數器信號量的特點在于,它可以保持對信號量釋放次數的追蹤. 信號量每次釋放,計數器加1 ,每次獲取,計數器減1. 當計數器為0 時,試圖獲取該信號量的任務被阻塞. 在中斷服務程序中,可以將數據寫入緩沖區,然后再釋放信號量. 由于它保持對信號量釋放次數的追蹤功能,如果任務暫時無法讀取數據,數據也不會被丟棄.
2、結論
本文所研究的視頻監控系統,是嵌入式技術的典型. 嵌入式系統因其體積小、指令精簡、實時性處理能力強、處理速度快、穩定性好、可擴展性好的特點,在專業性、實時性較強的領域中,發揮著重要的作用. 本文采用硬件抽象層分層設計的思想,實現了應用程序與數據鏈路層設備的無關性,最大限度地實現了軟件的復用性. 文中采用FSM 和計數器信號量實現了異步通信的幀同步,這種方法不僅適用于串行通信,而且對于其它通信協議的實現都具有借鑒作用.
評論