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