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