新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 通過任務分割提高嵌入式系統的實時性

        通過任務分割提高嵌入式系統的實時性

        作者: 時間:2010-01-15 來源:網絡 收藏


        圖3中,Δt是人手按鍵的時間,一般為100~300ms。為了能說明問題,這里取100ms。

        令 t1'-t1=Δt1,t2'-t2=Δt2

        則一次鍵盤的執行時間

        Δt'=t'2-t'1=t2+(t'2-t2)-[t1+(t'1-t1)]=

        t2+Δt2-t1-Δt1=

        t2-t1+(Δt2+Δt1)=

        Δt+(Δt2-Δt1)

        由圖3可知

        Δt1≤tms Δt2≤5ms

        實際上,由于兩次執行的情況不完全相同,Δt1與Δt2可能會有相當于幾個指令周期的時間差異,但也只是μs級的誤差。而且,這里是以時間片的形式來計算的,所以依然可以認為

        Δt2-Δt1=0

        因而有

        Δt'=Δt+(Δt2-Δt1)=Δt=100ms(20個時間片)

        也就是說,在這20個時鐘片內只執行1次鍵盤,大部分的時間都在空等待。在此期間,中會有20-1=19次其它任務的執行被錯過,圖3中虛線所示就是在此100ms期間被錯過執行的19個任務。顯然,這在大多數多任務中都是不允許的。

        因此,在這個多任務實時中,鍵盤任務是個典型的長任務,要使其它19次任務中斷都有被應用的機會,必須對該鍵盤任務進行

        4.3 鍵盤任務的

        鍵盤的方法是將一次鍵盤任務分成多個小任務,多次任務中斷來完成。我們將其放在任務4中(80ms執行1次)。這樣有ttask4≤ttask≤2ttask4,即可以保證鍵盤任務完整可靠地執行,又了CPU的效率。圖4是分割后的鍵盤任務的執行過程。

        本文引用地址:http://www.104case.com/article/152132.htm



        從圖4可以看出,1次完整的鍵盤任務是由2~3次任務中斷來完成的。情況a中,每一次任務中斷發生在ta1時刻,在接下來的一個時間片(5ms)內,檢測到有鍵按下,調用查詢值任務;第一次任務中斷發生在ta2時刻,在接下來的一個時間片(5ms)內,檢測到按鍵已釋放,跳轉并執行相應鍵處理程序。

        情況b中,第二次任務中斷時(tb2時刻),鍵還沒有松開,因此實際上什么也不做;第三次中斷(tb3時刻)才跳到與鍵值對應的子程序。

        這樣的分割,每個子任務都可以在5ms 內完成。如果系統中還有大于5ms的長任務的話,可按此法繼續進行分割;如果沒有的話,系統任務級響應時間一定小于5ms。這樣,此系統的大大,由100ms到5ms。本刊網絡補充版(http://www.dpj.com.cn)中,介紹了此任務改進后的部分源程序。

        結語

        任務分割,可以顯著地提高多任務系統的。本文改進后的源程序已經在基于MC68HC908GP32的溫室控制器中成功地運行過。除此以外,還成功地對LED和SCI任務進行了分割。改進后,除了大大提高外,CPU的執行效率也有顯著提高。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江都市| 礼泉县| 锦州市| 大田县| 彰武县| 顺昌县| 泉州市| 句容市| 沙河市| 岚皋县| 宜阳县| 鸡泽县| 凉城县| 乌兰浩特市| 珠海市| 大城县| 嘉鱼县| 吉林市| 荔浦县| 乐东| 余姚市| 铜梁县| 顺平县| 龙井市| 冷水江市| 子长县| 广河县| 本溪| 泾川县| 朝阳区| 墨江| 资讯 | 万年县| 逊克县| 长岭县| 秀山| 年辖:市辖区| 甘肃省| 全州县| 海兴县| 洪雅县|