天天看點

嵌入式實時作業系統程式設計學習心得(二)

數字通信

資料不大時,用全局變量作為公共資源,配合中斷通路,以信号量同步之。

資料大時,運用消息隊列機制,把記憶體資料塊作為内容緩沖區。

消息郵箱具有行為同步的功能,當雙方的執行頻度一樣時,消息郵箱很适合,此時的消息是通信雙方的局部變量。(注意,ISR應用static保護局部變量,否則它的局部變量會随其結束而消失)

發送一個字以内的短小消息時,可以利用消息郵箱機制,把資料僞裝成指針傳遞給其他任務。

消息隊列适合以下場合(需要緩沖功能):

1)、通信雙方至少有一方沒有穩定的執行周期;

2)、通信雙方的執行周期都不同。

a)、試用消息隊列需要定義一個消息指針數組,一個消息内容數組;

b)、如果消息内容簡短,可以不需消息内容數組(冒充指針法)。

串行通信

1)、相鄰兩次串行接收中斷的時間間隔必須大于系統死區時間;

2)、接收緩沖的空閑時間必須足夠存放在死區時間内接收的新資料。

(在滿足中斷間隔時間大于死區時間的前提下,将中斷條件設定為接收緩沖區的一半,即使死區時間接近中斷間隔時間,接受過程也是可靠的。)

——《基于嵌入式實時作業系統的程式設計技術》[周航慈] 書摘