<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一個(gè)搶先式“裸奔\"系統的設計

一個(gè)搶先式“裸奔\"系統的設計

作者: 時(shí)間:2018-09-07 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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

1 I2C總線(xiàn)通信子程序
對I2C總線(xiàn)的時(shí)序在此就不作介紹了,下面是部分基于Keil C51模擬主I2C總線(xiàn)的通信子程序代碼如下:


上面是基于80C51模擬I2C總線(xiàn)的通信程序,其中的HIGH、LOW是1、0的宏定義,idelay()提供時(shí)序要求的一段時(shí)間的延時(shí)。
不難看出,這和通常的模擬I2C總線(xiàn)的通信子程序完全一樣。事實(shí)上,我也是直接使用了以前的子程序。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>