亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

??

?? uC/OS-II在51上移植的完整源代碼V1.0
??
字號:
關于中斷處理的系列問題

中斷的任務被調度后,再度獲得運行時是從任務被中斷處執行。

    中斷的任務被調度后,再度獲得運行時是從任務被中斷處執行。
    在中斷ISR中調用OSIntExit(), 在OSIntExit()中又調用OSIntCtxSW(),此時堆棧結構如下:
    
    棧頂-->OSIntCtxSW()返回地址 2字節
           OSIntExit()返回地址 2字節
    SP-4-->保存寄存器PUSHALL
           中斷斷點(任務返回地址)
           。。。
    
    可見SP-4就是寄存器信息和中斷返回地址,OSCtxSw()彈棧后就回到了任務斷點。
    
    KEIL調用函數時壓入堆棧的就是2字節的返回地址。
    
    中斷剩余部分沒有被跳過,準確的說是被OSCtxSw借用了。它的內容只有POPALL和RETI,此處沒有錯誤。
    中斷完成后有可能使某些資源滿足,導致阻塞任務就緒,因此要進行任務調度,這樣中斷返回后的任務就不一定是這個被中斷的任務了。
    
    
***************************************************************************************************


在UCOS 中典型的中斷處理被建議成如下:
void OSTickISR(void)
{
    保存處理器寄存器的值;
    調用OSIntEnter()或是將OSIntNesting加1;
    調用OSTimeTick();

    調用OSIntExit();
    恢復處理器寄存器的值;
    執行中斷返回指令;
}

你的程序也是這么做的:
OSTickISR:        
        
        USING 0        
        PUSHALL
        
        CLR  TR0
        MOV  TH0,#70H    ;定義Tick=50次/秒(即0.02秒/次)
        MOV  TL0,#00H    ;OS_CPU_C.C  和  OS_TICKS_PER_SEC
        SETB TR0
        
        LCALL _?OSIntEnter
        LCALL _?OSTimeTick
        LCALL _?OSIntExit
        POPALL        
        RETI


這樣好象有問題,我覺得“ 調用OSIntEnter()或是將OSIntNesting加1;”應放在中斷的第一條語句來執行,以保證在被更高級別中斷打斷之前將OSIntNesting加1,以避免在高級別中斷中發生任務切換。  

如果在“保存處理器寄存器的值”時被打斷;發生任務切換,何時再返回到被打斷的中斷程序很難講了,從切換的原理,好象當被中斷打斷了的任務再次運行時,應是從被高級別中斷打斷的低級別中斷程序里面的斷點處繼續運行,即回到中斷程序把其余下的部分執行完,再返回任務。( 這樣理解請楊大師仔細批評指正一下), 這樣,中斷處理的時間太長了。中斷失去了意義。 


    對!“ 調用OSIntEnter()或是將OSIntNesting加1;”應放在中斷的第一條語句來執行。我當時沒有考慮清楚,這是又一個BUG。
    你的理解正確。
    中斷處理延遲在OS里是很常見的現象,最大中斷處理延遲是評價OS性能的重要指標。這說明CPU的負荷能力是有限的,工程上以最大中斷處理延遲為指標選擇CPU速度,只要延遲在允許的范圍內就可以接受。如果“中斷處理的時間太長了,中斷失去了意義”,那么說明所選CPU的能力不夠。
    在理解OS工作原理的時候,不要想得太理想化,否則總是不得要領,你的思維定勢會誤導你的思考。注意計算機是個離散數字系統,它不能連續運行。有些觀念應該確立,例如:單CPU系統在微觀上串行,在宏觀上并發;實時指在一定時間范圍內完成任務;中斷處理必然有延遲等等。
    
    
    不是你沒考慮清楚,而是UCOS 邵貝貝翻譯的UCOS 書里也是這么寫的,不知UCOS 源碼是依據此而產生一些BUGS?
    而且您設計的調度方案,當程序任務再度運行時,是直接返回到任務。而不是返回到中斷里, 所以當任務再度運行時是回到任務去的,中斷剩余部分就被跳過去了。如果中斷剩余部分有重要的內容,那就有BUG了。
這樣理解對不對呢?

    uC/OS-II一進入中斷,理論上應立即原語執行OSIntNesting+1,以便后續中斷了解中斷嵌套情況,不至于在中斷嵌套里切換任務。我認為原作此處是個BUG。有些CPU要求中斷后必須至少執行一條指令,這期間不會嵌套中斷,那么這條指令就可以是OSIntNesting+1原語操作或者關中斷(以便原語操作),這樣中斷嵌套就被嚴密監視了,不會漏掉導致判斷錯誤。
    任務切換是通過模擬一次中斷實現的,它和硬件中斷產生的堆棧樣式相同。在中斷嵌套里不會執行任務切換,所有嵌套中斷都使用被中斷任務的堆棧空間,在最后一個中斷快要退出時進行任務調度。
    此時中斷剩余部分只有兩個內容:POPALL和RETI,再沒有其他內容,更不用說重要內容了。如果不需調度,中斷正常完成,否則,保存現場到TCB,切換任務到高優先級。現場內容包括了斷點返回地址,中斷剩余部分沒有被跳過,它保存在此任務的TCB里,下次調度到此任務時,OSCtxSw借用這個中斷的剩余部分,直接返回到任務斷點繼續執行任務。因為OSCtxSw也是模擬一次中斷,棧與這個中斷的剩余部分一模一樣,可以直接借用。
    中斷的重要工作均被完成后才會切換任務,最后一個中斷剩余的退出部分讓給OSCtxSw,假想成發生了一次切換中斷(切換中斷模擬的就是硬件中斷),而不是硬件中斷。
    第一次任務切換時沒有中斷棧,就人工模擬一個。在硬件中斷里本身就有一個棧,那就直接拿過來用。


***************************************************************************************************

看了您的大作,對其中無任務切換中斷的處理好象有點想不通。你在串口中斷程序中不作任務切換,所以不調用OSIntEnter(),OSIntNesting沒增加;當有更高級別的中斷嵌套發生時,則有可能發生任務切換。這樣串口中斷的堆棧壓入和彈出分別在不同任務堆棧中,這樣是否會造成堆棧混亂?
是不是即使無任務切換中斷處理都應成對調用OSIntEnter()和 OSIntExit()?如果調用會有什么壞影響嗎? 
SerialISR:
        
        USING 0        
        PUSHALL
        CLR  EA
        LCALL _?serial        
        SETB EA
        POPALL        
        RETI

在以上串口中斷程序中,從SETB EA 之后到RETI之間,仍然可被高級別中斷打端,有可能發生任務切換。即使任務的堆棧不亂,那串口中斷程序何時能得以繼續運行也是問題,相當于中端程序中調了一個花費很長時間的子程序, 這樣理解對嗎?

    同意你的觀點!
    我主要是想節省一個任務號,同時提高效率,任務切換太費時間了,中斷的標準處理也比較煩瑣,所以當時采用了關閉中斷的臨界資源處理方式,現在看來這么做是有問題的,這是個BUG。你把它按標準中斷的處理方式做就可以解決這個問題。本來想偷機取巧來著,沒想到漏了破綻,呵呵。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩毛片一二三区| 亚洲三级在线看| 亚洲国产精品久久久久秋霞影院 | 国产欧美日韩在线| 午夜日韩在线电影| 一本大道久久a久久精二百| 久久久亚洲精华液精华液精华液| 亚洲成人动漫在线免费观看| 99麻豆久久久国产精品免费| 久久丝袜美腿综合| 久久99精品一区二区三区三区| 欧洲一区在线观看| 成人欧美一区二区三区| 国产伦精品一区二区三区免费| 欧美精品精品一区| 一二三四区精品视频| www.欧美日韩| 日本一区二区三级电影在线观看| 狠狠狠色丁香婷婷综合激情| 91精品国产一区二区三区香蕉| 一个色综合av| 91极品美女在线| 亚洲免费av高清| 99国产精品国产精品毛片| 欧美国产一区二区在线观看 | 亚洲靠逼com| 成人av影视在线观看| 久久精品亚洲精品国产欧美 | 亚洲女与黑人做爰| 波多野结衣在线aⅴ中文字幕不卡| 久久久久国产精品人| 国产专区欧美精品| 久久影视一区二区| 精品一区二区三区免费观看 | 欧美日韩aaa| 亚洲va韩国va欧美va精品| 欧美视频你懂的| 亚洲无人区一区| 欧美另类久久久品| 日本午夜一区二区| 欧美一区二区三区婷婷月色| 日韩精品电影在线| 欧美一区二区久久久| 蜜桃在线一区二区三区| 日韩欧美综合一区| 国产伦精品一区二区三区免费| 久久综合成人精品亚洲另类欧美| 狠狠色丁香婷婷综合| 国产亚洲精品aa| 成人一区二区视频| 亚洲人成网站精品片在线观看| 99re这里都是精品| 亚洲一区视频在线观看视频| 欧美美女bb生活片| 久久99最新地址| 久久久久国产成人精品亚洲午夜| 成人看片黄a免费看在线| 国产精品久久久久一区 | 久久99热这里只有精品| 久久美女高清视频| 成人精品视频一区| 一区二区三区在线看| 91精品免费在线| 韩国一区二区在线观看| 国产精品女主播av| 欧美撒尿777hd撒尿| 日本麻豆一区二区三区视频| 久久亚洲捆绑美女| 9人人澡人人爽人人精品| 亚洲一区二区三区四区五区黄 | 欧美久久久一区| 久久不见久久见免费视频7| 中文字幕成人网| 在线亚洲欧美专区二区| 舔着乳尖日韩一区| 欧美精品一区男女天堂| 99久久精品久久久久久清纯| 午夜精品福利一区二区三区蜜桃| 精品久久久久久久久久久久久久久久久| 国产传媒日韩欧美成人| 一区二区三区自拍| 日韩美女视频一区二区在线观看| 成人在线视频首页| 视频精品一区二区| 欧美极品少妇xxxxⅹ高跟鞋 | 国产成人av影院| 亚洲精品久久久蜜桃| 日韩精品中文字幕一区二区三区| 成人av在线电影| 日本成人在线视频网站| 国产精品免费免费| 91麻豆精品国产91久久久使用方法 | 国产在线视频精品一区| 亚洲日本va午夜在线影院| 日韩三级.com| 欧美在线一区二区| 国产精品88av| 亚州成人在线电影| 中文字幕一区二区视频| 日韩一区二区在线看片| 91一区二区在线| 激情国产一区二区 | 国产欧美综合色| 在线播放中文字幕一区| gogogo免费视频观看亚洲一| 日韩精品国产欧美| 亚洲色图制服诱惑| 欧美精品一区二区三区久久久| 色综合天天综合狠狠| 国产真实精品久久二三区| 亚洲高清中文字幕| 国产精品电影一区二区三区| 日韩美女视频一区二区在线观看| 91黄色激情网站| 成人黄色a**站在线观看| 毛片av中文字幕一区二区| 一区二区免费看| 国产精品妹子av| 精品久久久久香蕉网| 欧美日韩卡一卡二| 色哟哟亚洲精品| 播五月开心婷婷综合| 精品亚洲国产成人av制服丝袜 | 亚洲欧美国产77777| 国产三级精品在线| 欧美一级在线视频| 欧美三级日韩三级国产三级| 一本高清dvd不卡在线观看| 国产传媒欧美日韩成人| 美女视频网站久久| 无吗不卡中文字幕| 亚洲二区在线观看| 一区二区理论电影在线观看| 自拍av一区二区三区| 日本一区二区免费在线观看视频| 精品免费一区二区三区| 日韩视频免费直播| 日韩一级黄色片| 日韩一区二区三区三四区视频在线观看 | 午夜不卡av免费| 亚洲一本大道在线| 一区二区三区在线观看动漫| 亚洲欧洲国产日韩| 自拍偷拍亚洲激情| 国产精品不卡一区| 国产精品不卡一区二区三区| 国产精品每日更新| 国产精品久久一卡二卡| 国产精品午夜在线| 国产精品久久久久aaaa樱花| 国产精品久久夜| 亚洲欧洲日产国产综合网| 日韩一区在线看| 亚洲女与黑人做爰| 亚洲一区在线观看免费| 亚洲国产成人av网| 石原莉奈在线亚洲二区| 日本视频一区二区三区| 秋霞电影网一区二区| 日本不卡123| 国模少妇一区二区三区| 国产另类ts人妖一区二区| 国产超碰在线一区| av在线不卡电影| 色一情一伦一子一伦一区| 欧美性色欧美a在线播放| 欧美三级三级三级爽爽爽| 91精品国产综合久久婷婷香蕉| 欧美一区二视频| 精品久久久久久久一区二区蜜臀| 久久综合色播五月| 亚洲国产精品成人综合| 亚洲欧洲国产日本综合| 亚洲一区二区黄色| 日韩av在线播放中文字幕| 久久99国产精品麻豆| 粉嫩在线一区二区三区视频| 91污在线观看| 欧美日韩在线精品一区二区三区激情| 欧美精品一二三| 精品成人免费观看| 国产精品国产三级国产| 亚洲一级二级三级在线免费观看| 日韩—二三区免费观看av| 国产麻豆欧美日韩一区| av不卡一区二区三区| 欧美日韩国产区一| 精品国一区二区三区| 亚洲欧洲另类国产综合| 一区二区三区小说| 青青青爽久久午夜综合久久午夜| 激情欧美日韩一区二区| 91麻豆自制传媒国产之光| 欧美日本免费一区二区三区| 久久婷婷国产综合精品青草| 亚洲精品乱码久久久久久黑人| 欧美96一区二区免费视频| 国产盗摄一区二区三区| 欧美亚洲国产一区二区三区va | 国产精品免费网站在线观看|