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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5166|回復(fù): 0
收起左側(cè)

干貨!基于OS應(yīng)用中的中斷處理

[復(fù)制鏈接]
ID:115111 發(fā)表于 2016-5-16 09:44 | 顯示全部樓層 |閱讀模式
1:基本的ISR要素
    在μC/OS-II和μC/OS-III中,中斷處理中與內(nèi)核相關(guān)的代碼并不一定由應(yīng)用開發(fā)人員實(shí)現(xiàn)。
實(shí)時(shí)內(nèi)核可以被視為任務(wù)管理器,是一個(gè)將應(yīng)用開發(fā)人員編寫的代碼作為任務(wù)集合在一起的軟件模塊。大多數(shù)基于OS的應(yīng)用,不僅僅包含任務(wù)。通常情況下,基于OS應(yīng)用的開發(fā)人員會(huì)整合任務(wù)與中斷服務(wù)程序(ISR),以滿足系統(tǒng)需求。
基于OS應(yīng)用中的ISR會(huì)根據(jù)使用內(nèi)核的不同,采用不同的格式。翻閱過Micriμm的μC/OS-II和μC/OS-III內(nèi)核書的人,會(huì)了解到μC/OS-II和μC/OS-III中,提供了類似于下面的ISR例子。App_ISR()在該函數(shù)的中間部分調(diào)用,App_ISR()表示ISR應(yīng)用相關(guān)的部分,而該例子的偽代碼部分與內(nèi)核相關(guān)。
ExampleISR:
    Save CPU registers;
    OSIntEnter();
    App_ISR();
    OSIntExit();
    Restore CPU registers;
    Return
ISR中描述的許多操作是為了易于搶占(一個(gè)較高優(yōu)先級(jí)任務(wù)需要從一個(gè)較低優(yōu)先級(jí)的任務(wù)中獲取CPU使用權(quán)的機(jī)制)。偽代碼首先保存寄存器,確保即使App_ISR()的行為使一個(gè)新的任務(wù)就緒運(yùn)行,中斷處理之前正在運(yùn)行的任務(wù)最終能夠恢復(fù)其執(zhí)行。保存寄存器后,調(diào)用OSIntEnter(),遞增計(jì)數(shù)器來通知內(nèi)核正在處理中斷,后面,類似的調(diào)用OSIntExit(),遞減計(jì)數(shù)器。如果計(jì)數(shù)器減為零(即沒有額外的中斷嵌套處理),OSIntExit()運(yùn)行內(nèi)核調(diào)度器,確定ISR應(yīng)該返回被中斷的任務(wù),或者由于App_ISR()的行為,導(dǎo)致中斷的任務(wù)被搶占。
雖然這個(gè)例子的偽代碼被認(rèn)為是μC/OS-II和μC/OS-III中“典型”的ISR,應(yīng)用程序開發(fā)人員并非總是需要實(shí)現(xiàn)該函數(shù)執(zhí)行的所有操作。某些微控制器的中斷控制器允許OS能夠輕松地將保存寄存器,恢復(fù)寄存器,調(diào)用OSIntEnter()和OSIntExit()的代碼包含在BSP或啟動(dòng)代碼中,應(yīng)用開發(fā)人員僅負(fù)責(zé)App_ISR()。很多“經(jīng)典”的ARM處理器,如ARM7和ARM9系列的處理器,使用一個(gè)入口處理中斷請(qǐng)求(IRQ),可以使用這種方法。


確定那些代碼需要寫到用戶自己的ISR中,可以查閱Micriμm的豐富的應(yīng)用文檔,包括μC/OS-III的書,文檔中包含硬件無關(guān)的內(nèi)容(包括該版本更詳細(xì)的偽代碼),例程介紹和特定硬件平臺(tái)的底層代碼。書中的示例項(xiàng)目及其他的例子都可以在Micrium公司的網(wǎng)站下載,這些例程也是中斷相關(guān)信息的理想?yún)⒖荚;讦藽/OS-II或μC/OS-III的例程中,至少實(shí)現(xiàn)了一個(gè)ISR-節(jié)拍中斷,內(nèi)核通過該中斷實(shí)現(xiàn)時(shí)間相關(guān)的服務(wù),很多例程中包含額外的ISR,你可以使用其作為自己代碼的模板。
通過參考Micriμm例程建立的代碼,可以確保你的ISR工作正常。然而,并不意味著,你的實(shí)現(xiàn)與例程完全一致。在μC/OS-II和μC/OS-III中,ISR不受內(nèi)核管理也是可以的,但需具備一些關(guān)鍵條件。下面將討論這個(gè)話題。
2:不受內(nèi)核監(jiān)控的中斷處理
基于μC/OS-II和μC/OS-III的應(yīng)用程序中經(jīng)常使用不受內(nèi)核監(jiān)控的ISR,以快速響應(yīng)某些事件。
在中斷處理的第一節(jié),展示了Micriμm的μC/OS-II和μC/OS-III中典型的ISR格式。本文中,將介紹另一種類型的不受內(nèi)核監(jiān)控的ISR。與第一種方式相比,這種方式系統(tǒng)開銷小,但它并不適用于所有的ISR。
不受內(nèi)核監(jiān)控的方式用于不需要使用內(nèi)核服務(wù)的ISR,例如,不需要發(fā)送消息到消息隊(duì)列或給任務(wù)發(fā)信號(hào)量的ISR中。使用不受內(nèi)核監(jiān)控的ISR的前提是,該中斷永遠(yuǎn)不會(huì)導(dǎo)致?lián)屨及l(fā)生。換句話說,由于它們不涉及任何內(nèi)核服務(wù),永遠(yuǎn)不會(huì)導(dǎo)致其他任務(wù)就緒。這種類型的ISR不會(huì)調(diào)用任何導(dǎo)致?lián)屨及l(fā)生的內(nèi)核服務(wù)。
開發(fā)不受內(nèi)核監(jiān)控的ISR的關(guān)鍵是ISR嵌套。通常,μC/OS-II和μC/OS-III支持中斷嵌套。然而,開發(fā)人員在實(shí)現(xiàn)受內(nèi)核管理和不受內(nèi)核管理的ISR時(shí),應(yīng)該努力確保前者不能中斷后者。對(duì)于這種情況,采用優(yōu)先級(jí)機(jī)制是理想的方式,如下圖所示,不受內(nèi)核管理的中斷優(yōu)先級(jí)高于受內(nèi)核管理的中斷。


第一節(jié)中提供的ISR例程中包含了了兩個(gè)內(nèi)核函數(shù)調(diào)用–OSIntEnter()和OSIntExit(),在不受內(nèi)核監(jiān)控的ISR中,不需要這兩個(gè)函數(shù)。因此,該類型的ISR格式如下所示。應(yīng)該指出的是,保存CPU寄存器的方法不一定相同,因?yàn)樗赡懿恍枰4嫠猩婕吧舷挛那袚Q的寄存器。此外,開發(fā)不受內(nèi)核監(jiān)控的ISR的開發(fā)人員需牢記,前面的ISR代碼中可以添加代碼來重新啟用中斷,以實(shí)現(xiàn)中斷嵌套,然而,在不受內(nèi)核監(jiān)控的ISR中,這種處理方式是有問題的。
NonKernelAwareISR:
    Save CPU registers;
    App_ISR();
    Restore CPU registers;
    Return
在μC/OS-II和μC/OS-III觀察到的中斷例程的不同方式,使得寫這些代碼的工作變得有挑戰(zhàn)性。然而,根據(jù)上面的信息和前一篇文章的內(nèi)容,總結(jié)出實(shí)現(xiàn)ISR開發(fā)的兩條基本規(guī)則:
應(yīng)用開發(fā)人員需基于不同的中斷控制器,實(shí)現(xiàn)中斷相關(guān)的代碼,參考Micriμm的文檔和示例項(xiàng)目來確定適用于用戶平臺(tái)的 “典型”的ISR。
如果ISR程序不使用內(nèi)核服務(wù),不會(huì)被使用內(nèi)核服務(wù)的程序中斷,可以使用不受內(nèi)核監(jiān)控的方式實(shí)現(xiàn)ISR,減少系統(tǒng)開銷。
基于這些規(guī)則,你可以充分利用嵌入式微控制器的功能,使用任務(wù)和中斷編寫可靠的應(yīng)用程序。更多信息可以參考μC/OS-II和μC/OS-III書及在線文檔。

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久 | 99热在线观看精品 | 日韩中文一区 | 亚洲福利 | 羞羞午夜| 亚洲综合二区 | 亚洲精品视频免费 | 国产欧美一区二区三区另类精品 | 欧美精品一区二区三区四区 在线 | 久久国品片 | 午夜激情影院 | 亚洲国产成人av好男人在线观看 | 亚洲男人天堂网 | 97色综合 | 91国内视频在线 | 中文字幕高清免费日韩视频在线 | 精品欧美一区免费观看α√ | av手机免费在线观看 | 久久精品国产一区二区电影 | 日韩欧美不卡 | 在线播放国产一区二区三区 | 精品国产一区二区三区日日嗨 | 精品日本中文字幕 | 国产91精品网站 | 成人污污视频 | 国产精品视频播放 | 99re超碰| 奇米久久久 | 在线看无码的免费网站 | 欧美精品久久久久久 | 日日操av| 日韩精品在线免费观看视频 | 天天插天天干 | 中文字幕一区二区三区不卡 | 日本午夜视频 | 国产精品久久久久久影院8一贰佰 | 亚洲成人免费观看 | 午夜免费小视频 | 亚洲精品欧美一区二区三区 | 999国产精品视频免费 | 免费在线观看成人 |