<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一個(gè)搶先式“裸奔“系統(tǒng)的設(shè)計(jì)

          一個(gè)搶先式“裸奔“系統(tǒng)的設(shè)計(jì)

          作者: 時(shí)間:2012-12-16 來源:網(wǎng)絡(luò) 收藏

          摘要:在一些資源比較緊張的中,使用RTOS有時(shí)未必能夠較好地滿足系統(tǒng)較高的實(shí)時(shí)性要求。在軟件設(shè)計(jì)時(shí),可以借鑒搶先式RTOS實(shí)時(shí)調(diào)度內(nèi)核的方法,實(shí)現(xiàn)更為高效的任務(wù)調(diào)度算法,從而實(shí)現(xiàn)系統(tǒng)更高的實(shí)時(shí)性要求。
          關(guān)鍵詞:;;

          引言
          這是2007年筆者在基于的工控系統(tǒng)里采用的軟件技術(shù)。系統(tǒng)中有兩個(gè)以主從方式通過I2C總線進(jìn)行數(shù)據(jù)通信的節(jié)點(diǎn),作為I2C總線的從機(jī)節(jié)點(diǎn),因MCU性能限制了數(shù)據(jù)傳輸速率,因而每次通過總線傳輸30個(gè)字節(jié)的數(shù)據(jù)需要持續(xù)占用幾十ms的時(shí)間。由于在進(jìn)行I2C總線通信的這段時(shí)間里,系統(tǒng)將不能響應(yīng)輸入和改變輸出(類似系統(tǒng)停頓),這么長的時(shí)間延遲對于有較高實(shí)時(shí)要求的工控系統(tǒng)顯得難于容忍。
          為此,最初考慮解決問題的辦法有3個(gè):
          ①打斷和拆分?jǐn)?shù)據(jù)包,采用多次傳輸?shù)霓k法。這樣做不但需要修改從機(jī)的軟件,多個(gè)數(shù)據(jù)包的連接又讓軟件變得復(fù)雜起來,所以這不是個(gè)很好的辦法。
          ②由于I2C總線在進(jìn)行數(shù)據(jù)傳輸中,波特率較低,存在大量短時(shí)delay(),可以采用定時(shí)中斷,在定時(shí)中斷中只變換一次電平后就返回,從而在后臺(tái)完成數(shù)據(jù)發(fā)送。但這樣就導(dǎo)致中斷服務(wù)中必須執(zhí)行一個(gè)很龐大的狀態(tài)機(jī)判斷,中斷服務(wù)中大量的判斷也非常耗時(shí)耗力,且調(diào)試也不方便。
          ③采用RTOS技術(shù),但在80C51系統(tǒng)上使用RTOS,再精練的實(shí)時(shí)調(diào)度,每個(gè)tick的時(shí)間都很難低于1 ms。經(jīng)測試,I2C總線傳輸中途遇到1 ms以上的傳輸中斷,會(huì)產(chǎn)生總線超時(shí)錯(cuò)誤,因而在本系統(tǒng)中即使采用RTOS也未必能很好地解決問題。
          通過一段時(shí)間對RTOS的分析和研究,最后在80C51的裸奔系統(tǒng)中嵌入特別定制的精練的來完成主要任務(wù)和I2C總線任務(wù)的并行執(zhí)行,最終獲得了很好的效果。
          下面就來詳細(xì)地講述這個(gè)定制的的編程技巧。

          1 I2C總線通信子程序
          對I2C總線的時(shí)序在此就不作介紹了,下面是部分基于Keil C51模擬主I2C總線的通信子程序代碼如下:
          a.JPG
          b.JPG
          上面是基于80C51模擬I2C總線的通信程序,其中的HIGH、LOW是1、0的宏定義,idelay()提供時(shí)序要求的一段時(shí)間的延時(shí)。
          不難看出,這和通常的模擬I2C總線的通信子程序完全一樣。事實(shí)上,我也是直接使用了以前的子程序。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();