久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4105|回復: 0
打印 上一主題 下一主題
收起左側

uC/OS-II任務間的同步通信

[復制鏈接]
跳轉到指定樓層
樓主
ID:51024 發表于 2014-8-10 12:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    當你開始去學習uC/OS-ii的時候,心里面肯定有底,覺得自己的單片機或者某些語言學的還算是可以,然后當接到復雜的系統,或者在某些邏輯方面難以用簡單的過程控制去實現的時候,很多時候心里面總有一個想法,如果有某樣一種方法能夠使我很容易的搞定那該多好啊!在很大程度上操作系統不是說你想讓自己的項目中添加就一定可以添加的(拿uC/OS-ii為例),因為在使用OS的時候,工程師們往往會面臨很多的問題,是否會?是否熟悉?這個項目是否一定得去使用,有時候我自己都被這個問題所困擾,因為我也是剛剛開始接觸uC/OS-ii,其實我們并不用時刻去考慮這個問題,還是得把重心放在學習這個系統上面,當自己確實對其可以駕馭的時候,同時某個項目搞不定了,那么你一定會想到應該使用OS了,那么就很順其自然的運用到了,用的好或者差就是自己所掌握的情況了。上面是我自己學習uC/OS-ii以來一直難以想通的地方,在學習的過程中時刻想著在自己以前做過的項目里面加入uC/OS-ii,也許這樣就感覺十分的“高大上”了,其實不然,用的好確實厲害,如果生搬硬套可能會導致系統都沒法工作,而且不知道自己究竟想干嘛……
    由于平時也很忙,所以沒有太多的時間去寫一些東西,只能利用周末了,這次的主題是“通信”和“同步”,對于這兩個詞我們并不陌生,通信嘛……不就是相互交換東西,你的給我,我的給你,同步---說白了就是相對靜止,共同進步的意思,在uC/OS-ii中的通信和同步是相對任務而言的,需要記住的地方是在OS中,所有的對象都是任務,一切的工作都是圍繞任務在轉動,對于task而言,我們所想到的是OSTCB(任務控制塊),后面會具體講到這個的作用,對于通信而言,需要靠事件(EVENT)來完成,那么就有了一個新的名詞(OSECB),在uC/OS-ii中事件包括:信號量(semaphore其中互斥信號量留在后面進行說明)、消息郵箱(mail-box)、消息隊列(query)。
    信號量(Sem):通過字面意思可以了解到是信號(flag),作為標志使用,主要做判斷,就好比是只能有了鑰匙才可以開門這樣子,所以sem就如同這個鑰匙,任務只有得到了sem才可以運行,換句話說就處在了Running狀態,沒有得到sem的任務處于waiting或者pending狀態。
    消息郵箱(M-box):郵箱就是傳消息的,任務與任務之間可以通過郵箱來交換信息,其實這個時間和sem也挺像的,只有獲得了消息才可以使任務處于Running狀態,只不過相比sem而言可能會高端一點點,功能多了一些----可以傳值了,因為畢竟是郵箱嘛,可以裝東西。
    消息隊列(Query):消息隊列,一聽就是一整個隊列,很多很多的意思,其實它的功能和m-box的功能差不多,只不過是m-box的升級版,傳遞的值變得很多了,畢竟是隊列嘛……m-box有的功能,query都存在!這就是它的優勢,可以傳遞很多的值。
    對于初學者來說關于事件處理的函數有很多,一下在都不知道從何下手去看和實驗,這里介紹在uC/OS-ii任務間通信最為關鍵的兩個函數:OS***Pend()和OS***Post(),其中的***表示具體事件。對于他們的執行過程我們可以通過Debug來理清楚,具體如下:當事件控制塊(OSECB)中的相關量為空,例如sem中的cnt為0或者m-box為null的時候,只要有任務調用OS***Pend()的時候會引發任務切換(不是處在中斷中),當前任務被掛起,如果事件控制塊中的相關量不為空則任務正常運行,當任務中調用了OSTimeDly()函數(前面講過其作用),則會進行一次任務調度。如果ECB中的相關量為空,任務調用OS***Pend()的時候會產生任務切換,當前任務執行被斷開了,假設斷開點為A,并將當前任務掛起,如果在另一個任務中調用OS***Post()時,會對事件的相關量進行改變,例如sem中的cnt加1或者m-box不在為空,則同時會切換到waiting狀態下等待這些信號的最高優先級任務中,并且在斷開點處繼續運行該任務,如果說沒有任務處于waiting狀態,則任務會正常運行。事件操作的基本流程如上所述。有一點需要注意,出了空閑任務之外的所有任務必須在任務中合適的位置調用系統提供的函數OSTimeDly(),使當前任務的運行延時一段時間并進行一次任務調度,以讓出CPU的使用權,使低優先級的任務得以運行。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级免费毛片 | 国产精品色 | 国产激情免费视频 | 超碰地址 | 亚洲免费精品一区 | 国产精品揄拍一区二区 | 亚洲自拍偷拍视频 | 九色91视频 | 男女羞羞视频大全 | 亚洲伊人精品酒店 | 亚洲成人精品一区 | 中文视频在线 | 成人av高清在线观看 | 日本激情视频在线播放 | 国产精品久久av | 欧美精品一区二区蜜桃 | 日韩在线h | 天天色天天射天天干 | 日韩高清在线 | 日韩中文字幕一区二区 | 欧美video | 日韩欧美在线不卡 | 中文字幕99 | 亚洲高清在线观看 | 日韩在线视频播放 | 色香蕉在线 | 看毛片的网站 | 日韩成人免费中文字幕 | 亚洲精品电影 | 国产精久久久久久久妇剪断 | 成人久久网 | 亚洲精品国产一区 | 久久免费香蕉视频 | 欧美性受xxxx白人性爽 | 精品一区二区视频 | 国精日本亚洲欧州国产中文久久 | 久久亚洲视频网 | 欧美日产国产成人免费图片 | 日韩精品一区二区三区视频播放 | 国产欧美一区二区三区另类精品 | 精品91久久|