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

標(biāo)題: 干貨!基于OS應(yīng)用中的中斷處理 [打印本頁(yè)]

作者: 51黑ele    時(shí)間: 2016-5-16 09:44
標(biāo)題: 干貨!基于OS應(yīng)用中的中斷處理
1:基本的ISR要素
    在μC/OS-II和μC/OS-III中,中斷處理中與內(nèi)核相關(guān)的代碼并不一定由應(yīng)用開(kāi)發(fā)人員實(shí)現(xiàn)。
實(shí)時(shí)內(nèi)核可以被視為任務(wù)管理器,是一個(gè)將應(yīng)用開(kāi)發(fā)人員編寫(xiě)的代碼作為任務(wù)集合在一起的軟件模塊。大多數(shù)基于OS的應(yīng)用,不僅僅包含任務(wù)。通常情況下,基于OS應(yīng)用的開(kāi)發(fā)人員會(huì)整合任務(wù)與中斷服務(wù)程序(ISR),以滿(mǎn)足系統(tǒng)需求。
基于OS應(yīng)用中的ISR會(huì)根據(jù)使用內(nèi)核的不同,采用不同的格式。翻閱過(guò)Micriμm的μC/OS-II和μC/OS-III內(nèi)核書(shū)的人,會(huì)了解到μC/OS-II和μC/OS-III中,提供了類(lèi)似于下面的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ù)器來(lái)通知內(nèi)核正在處理中斷,后面,類(lèi)似的調(diào)用OSIntExit(),遞減計(jì)數(shù)器。如果計(jì)數(shù)器減為零(即沒(méi)有額外的中斷嵌套處理),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)用程序開(kāi)發(fā)人員并非總是需要實(shí)現(xiàn)該函數(shù)執(zhí)行的所有操作。某些微控制器的中斷控制器允許OS能夠輕松地將保存寄存器,恢復(fù)寄存器,調(diào)用OSIntEnter()和OSIntExit()的代碼包含在BSP或啟動(dòng)代碼中,應(yīng)用開(kāi)發(fā)人員僅負(fù)責(zé)App_ISR()。很多“經(jīng)典”的ARM處理器,如ARM7和ARM9系列的處理器,使用一個(gè)入口處理中斷請(qǐng)求(IRQ),可以使用這種方法。


確定那些代碼需要寫(xiě)到用戶(hù)自己的ISR中,可以查閱Micriμm的豐富的應(yīng)用文檔,包括μC/OS-III的書(shū),文檔中包含硬件無(wú)關(guān)的內(nèi)容(包括該版本更詳細(xì)的偽代碼),例程介紹和特定硬件平臺(tái)的底層代碼。書(shū)中的示例項(xiàng)目及其他的例子都可以在Micrium公司的網(wǎng)站下載,這些例程也是中斷相關(guān)信息的理想?yún)⒖荚;讦藽/OS-II或μC/OS-III的例程中,至少實(shí)現(xiàn)了一個(gè)ISR-節(jié)拍中斷,內(nèi)核通過(guò)該中斷實(shí)現(xiàn)時(shí)間相關(guān)的服務(wù),很多例程中包含額外的ISR,你可以使用其作為自己代碼的模板。
通過(guò)參考Micriμm例程建立的代碼,可以確保你的ISR工作正常。然而,并不意味著,你的實(shí)現(xiàn)與例程完全一致。在μC/OS-II和μC/OS-III中,ISR不受內(nèi)核管理也是可以的,但需具備一些關(guān)鍵條件。下面將討論這個(gè)話(huà)題。
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格式。本文中,將介紹另一種類(lèi)型的不受內(nèi)核監(jiān)控的ISR。與第一種方式相比,這種方式系統(tǒng)開(kāi)銷(xiāo)小,但它并不適用于所有的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ā)生。換句話(huà)說(shuō),由于它們不涉及任何內(nèi)核服務(wù),永遠(yuǎn)不會(huì)導(dǎo)致其他任務(wù)就緒。這種類(lèi)型的ISR不會(huì)調(diào)用任何導(dǎo)致?lián)屨及l(fā)生的內(nèi)核服務(wù)。
開(kāi)發(fā)不受內(nèi)核監(jiān)控的ISR的關(guān)鍵是ISR嵌套。通常,μC/OS-II和μC/OS-III支持中斷嵌套。然而,開(kāi)發(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ù)。因此,該類(lèi)型的ISR格式如下所示。應(yīng)該指出的是,保存CPU寄存器的方法不一定相同,因?yàn)樗赡懿恍枰4嫠猩婕吧舷挛那袚Q的寄存器。此外,開(kāi)發(fā)不受內(nèi)核監(jiān)控的ISR的開(kāi)發(fā)人員需牢記,前面的ISR代碼中可以添加代碼來(lái)重新啟用中斷,以實(shí)現(xiàn)中斷嵌套,然而,在不受內(nèi)核監(jiān)控的ISR中,這種處理方式是有問(wèn)題的。
NonKernelAwareISR:
    Save CPU registers;
    App_ISR();
    Restore CPU registers;
    Return
在μC/OS-II和μC/OS-III觀察到的中斷例程的不同方式,使得寫(xiě)這些代碼的工作變得有挑戰(zhàn)性。然而,根據(jù)上面的信息和前一篇文章的內(nèi)容,總結(jié)出實(shí)現(xiàn)ISR開(kāi)發(fā)的兩條基本規(guī)則:
應(yīng)用開(kāi)發(fā)人員需基于不同的中斷控制器,實(shí)現(xiàn)中斷相關(guān)的代碼,參考Micriμm的文檔和示例項(xiàng)目來(lái)確定適用于用戶(hù)平臺(tái)的 “典型”的ISR。
如果ISR程序不使用內(nèi)核服務(wù),不會(huì)被使用內(nèi)核服務(wù)的程序中斷,可以使用不受內(nèi)核監(jiān)控的方式實(shí)現(xiàn)ISR,減少系統(tǒng)開(kāi)銷(xiāo)。
基于這些規(guī)則,你可以充分利用嵌入式微控制器的功能,使用任務(wù)和中斷編寫(xiě)可靠的應(yīng)用程序。更多信息可以參考μC/OS-II和μC/OS-III書(shū)及在線(xiàn)文檔。






歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 五月婷综合 | 婷婷综合网| 黑人一级黄色片 | 久久久久久久免费视频 | 国产精品视频专区 | 黄色成人小视频 | 综合导航 | 中文字幕亚洲精品 | 91久久久久久久久 | 欧美美女视频 | 亚洲人成在线观看 | 国产成人一区二区三区 | 四虎影视库 | 亚洲免费看片 | 一级片久久 | 欧美成人精品一区二区三区在线看 | 亚洲精品成人 | 日韩一区二区在线播放 | 久久精品美女 | 毛片资源| 久久av一区二区三区亚洲 | 首尔之春在线看 | 一级片免费播放 | 亚洲激情四射 | 不卡免费视频 | 亚洲高清视频在线观看 | a视频在线观看 | 三级视频在线观看 | 一区二区三区在线观看视频 | 中文字幕一区二区三区视频 | 久久精品二区 | 狠狠干欧美| 91亚洲国产成人久久精品网站 | 日韩午夜在线 | 91精品国产成人观看 | 日本一级大毛片a一 | 激情小说在线视频 | 久草精品视频在线看网站免费 | 青青草在线观看视频 | 久久中文字幕视频 | 成人黄色大片 |