<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è) > 牛人業(yè)話(huà) > 頻繁中斷狂轟亂炸,操作系統很難招架

頻繁中斷狂轟亂炸,操作系統很難招架

作者:光華居士 時(shí)間:2018-12-25 來(lái)源:電子產(chǎn)品世界 收藏

3

本文引用地址:http://dyxdggzs.com/article/201812/396004.htm

春困秋乏夏打盹,睡不醒的冬三月。灑家一面克制著(zhù)午飯后不斷襲來(lái)的陣陣睡意,一面添加著(zhù)接收程序,不過(guò)是從裸機下挪到操作系統的框架下,應該問(wèn)題不大。筆者復制、粘貼、修改,一頓操作猛如虎,掃視一番信心鼓,便開(kāi)始志得意滿(mǎn)地調試起來(lái)。

按了一下器,嗯?仿真器怎么好像和電腦斷開(kāi)連接了?哎,天殺的windows!肯定是windows恰好把仿真器的驅動(dòng)程序給搞死了。筆者重新把仿真器插拔了一番,繼續下載程序、運行、調試。按下器,嗯?沒(méi)反應,把程序停下來(lái),嗯?停不下來(lái)!不死心地重啟了電腦,重新來(lái)過(guò),原來(lái),確乎是一按遙控器就貌似死了機了。

一絲陰影從灑家心頭掠過(guò),盤(pán)旋在腦中的困意也一瞬間消失的無(wú)影無(wú)蹤。不消說(shuō),碰上事了!

夏天,最是一個(gè)容易上火焦躁的時(shí)節,在烈日的威逼下,干渴的大地冒著(zhù)騰騰的熱氣,不住地無(wú)聲喘息。白楊樹(shù)兀自矗立在似火的驕陽(yáng)里,慢慢扇動(dòng)著(zhù)被曬得快要冒煙的綠葉,顯出一副無(wú)精打采的樣子。知了不停地求饒,可是熾熱的太陽(yáng)全然不聽(tīng)它的禱告。鳥(niǎo)兒忍受著(zhù)饑腸轆轆,也不愿意出來(lái)覓食。頂著(zhù)日頭匆匆趕路的俊男靚女們,揮汗如雨,被汗水一遍遍刷過(guò)的臉上早已沒(méi)有了香水的氣息。

時(shí)間不多了,快要提交樣機了,卻碰上這等大問(wèn)題,盡管身處空調房,灑家依然心中發(fā)涼,倍感不爽。

4

灑家揉了揉已然刻上了幾條皺紋的額頭,站起身,茫然環(huán)顧,有的同事正在熱火朝天地打游戲,有的同事看著(zhù)小說(shuō),有的同事叉著(zhù)腰、扎煞著(zhù)胳膊,嘮著(zhù)閑嗑,看我站起身來(lái),隨即送來(lái)帶著(zhù)笑意的目光。哎,多么和諧的場(chǎng)景??!

佛家有謂,因果不欺,自作自受,白話(huà)就是,誰(shuí)的福誰(shuí)享,誰(shuí)的罪誰(shuí)受。他們玩他們的,灑家干灑家的! 

那么,好端端的,程序怎么就死了機呢?看調試器的反應,倒像是跑不動(dòng)了一樣,既如此,統計一下系統負載率吧,ucos正好提供了這項功能。

果不其然,一按遙控器,系統負載率就蹭蹭蹭地摸高到了100%,屢試不爽,本來(lái)系統負載率在百分之二三十之間,只要按下遙控,系統立馬死給你看。

筆者工作多年,身經(jīng)百戰,掰著(zhù)腳趾頭掐指一算,肯定是遙控接收中斷太頻繁了,導致ucos把大量的時(shí)間用在系統調度上,以至于根本就沒(méi)有了空閑時(shí)間,為何如此,且聽(tīng)灑家娓娓道來(lái)。

系統被ucos劃分成多個(gè)任務(wù),這些任務(wù)平時(shí)處于“等待”某些信號的狀態(tài),信號一來(lái),便進(jìn)入“就緒”狀態(tài),倘若沒(méi)有更高優(yōu)先級的任務(wù),處于就緒態(tài)的任務(wù)就得到了MCU的計算資源,進(jìn)入任務(wù)執行程序,執行完后,便再次回到等待狀態(tài)。倘若來(lái)了中斷,ucos便中斷當前任務(wù),存儲系統上下文、任務(wù)上下文,執行中斷服務(wù)程序,然后判斷是否存在被中斷服務(wù)程序推入就緒態(tài)、優(yōu)先級高于被中斷任務(wù)的任務(wù),如果有,進(jìn)入新任務(wù),如果沒(méi)有,恢復被中斷任務(wù)的上下文繼續執行。

ucos本來(lái)在系統的各個(gè)任務(wù)之間調度得好好的,偶爾來(lái)了個(gè)中斷,就存一下任務(wù)上下文,執行以下上文所述的操作,只要中斷次數有限,系統還是可以正常穩定運行的??墒?,一旦中斷非常頻繁,以至于中斷時(shí)間間隔和ucos存儲任務(wù)上下文、執行中斷服務(wù)程序、恢復任務(wù)上下文的時(shí)間很接近的話(huà),顯然,ucos就基本上干不了有用的事情了,它會(huì )把幾乎所有時(shí)間消耗在存儲、恢復任務(wù)上下文這些“輔助性”的操作上。

遙控報文是一連串射頻信號,每個(gè)上升沿都會(huì )觸發(fā)中斷,對于ucos和所選用MCU的主頻來(lái)說(shuō),遙控報文的頻繁中斷簡(jiǎn)直就是狂轟亂炸,搞得操作系統很難招架。

5

行文至此,腦力敏捷的讀者可能會(huì )搶答說(shuō),既然如此,那就不用ucos了,解決方法很簡(jiǎn)單,把操作系統去掉,再換成裸機形式不就可以了嗎?

對此,我只想套用一下《賣(mài)拐》里本山大叔對腦袋大、脖子粗的伙夫范偉的一句評語(yǔ):恭喜你,都會(huì )搶答了!

我們都聽(tīng)說(shuō)過(guò)一個(gè)大致類(lèi)似的典故,說(shuō)有一個(gè)家伙想學(xué)鋼琴,打聽(tīng)學(xué)費幾何,老師問(wèn)清楚這個(gè)家伙有一點(diǎn)基礎之后,就故作高深地說(shuō),如果沒(méi)學(xué)過(guò),學(xué)費1萬(wàn),如果學(xué)過(guò),學(xué)費2萬(wàn)。不等學(xué)員把詫異的眼睛睜圓,老師悠悠地自問(wèn)自答,為什么需要多交費?原因無(wú)他,只是需要多花時(shí)間把你的錯誤習慣改過(guò)來(lái)而已。

筆者在ucos的框架下已經(jīng)寫(xiě)了那么多程序,你提議讓我去掉ucos,然后改寫(xiě)那些依賴(lài)于ucos的任務(wù)、信號、消息機制的諸多代碼?時(shí)日無(wú)多,徒奈其何,哪里有那么多的時(shí)間呢?最好是不僅能去掉ucos,把ucos切割開(kāi),同時(shí)盡量把其它相關(guān)代碼的修改量降到最低,不改那些依賴(lài)它的任務(wù)、信號機制的代碼!

“怎么辦?最簡(jiǎn)單也最困難,飯要粒粒分開(kāi),還要沾著(zhù)蛋,嘿,蛋炒飯?!?/em>




關(guān)鍵詞: 汽車(chē) 遙控

評論


相關(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>