色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RTX51 Tiny內核在實際應用中的概念和問題探討

電子設計 ? 來源:網絡整理 ? 作者:佚名 ? 2020-03-27 08:00 ? 次閱讀

引 言

μVision是德國Keil公司開發的單片機IDE軟件,最初主要用于8051系列單片機,目前也有支持ARM系列單片機的專用版本MDK-ARM。TX51 TINY是RTX51 FULL的子集,僅支持按時間片循環任務調度,支持任務間信號傳遞,最大16個任務,可以并行地利用中斷。具有以下等待操作:超時、另一個任務或中斷的信號。但它不能進行信息處理,不支持存儲區的分配和釋放,不支持占先式調度。RTX51 TINY一個很小的內核,完全集成在KEIL C51編譯器中。更重要的是,它僅占用800字節左右的程序存儲空間,可以在沒有外放數據存儲器的8051系統中運行,但應用程序仍然可以訪問外部存儲器。RTX51 TINY下文簡稱為內核。

目前在8051系列單片機上使用多任務實時操作系統,絕大多數應用都選擇了RTX51 Tiny。本文就其在實際應用中的一些概念和具體問題進行了探討。RTX51Tiny內核的版本為1.06,C51編譯器版本為7.50。

1 、RTX51 Tiny中有沒有主程序的問題

一般來說,C語言中主程序就是指main()函數。實際上RTX51 Tiny的主程序是以匯編代碼的形式位Rtx51tny.A51文件中,在程序的最后:

RTX51 Tiny內核在實際應用中的概念和問題探討

在通常的應用中,一般都是將RTX51 Tiny內核做成lib文件,使用的時候直接調用相應的系統函數即可,在應用程序中沒有體現,用戶也無需關心。這造成了一部分用戶的誤解,以為RTX51沒有main()函數。

內核完全集成在KEIL C51編譯器中,以系統函數調用的方式運行,因此可以很容易地使用KEIL C51語言編寫和編譯一個多任務程序,并嵌入到實際應用系統中。

另外,使用RTX51 Timy時用戶程序中不需要包含main()函數,它會自動從任務0開始運行;如果用戶程序中包含main()函數,則需要利用os_cre-ate_task()函數來啟動RTX51實時操作系統。這段話前一部分是正確的,前文也對此做了解釋。但后一部分則值得商榷。在RTX51操作系統中,是存在main()函數的,只不過存在于庫文件RTX51tny.lib之中,用戶的應用程序中不能再包含main()函數。任務0為應用程序的入口,所有其他任務都在任務0中創建。

2 、存儲空間占用

RTX51tiny操作系統小巧精悍,能極大地提高程序的可讀性及可維護性,但也占用了一定的存儲空間。這是一種以空間換取性能的辦法。由于RTX51操作系統占用了存儲空間,如果不外擴存儲器,則至少需要8052系列以上的單片機。在Keil自帶的幫助文件GS51.PDF中,對比做了詳細的介紹。其中有關存儲空間方面的信息是:RAM需求為7字節DATA,外加每個任務占用3字節IDATA空間;代碼量(即ROM)約900字節。

3 、關于使用os_wait()函數定時的問題

RTX51 Tiny內核中,TIMESHARING的默認值為5,以外部時鐘振蕩器頻率為12 MHz計算,任務輪轉時間為50 ms。如果想定時1個30 ms的時間間隔,在任務比較重時,使用os_wait(K_TMO,3,0)將得不到準確的結果。因為別的任務的執行時間已經占據了1個任務的輪轉時間50 ms,超出了20 ms。如果任務比較多,同時任務的負擔都比較重,相應的誤差時間會更大。

主要完成os_wait函數。任務調用os_wait函數,掛起當前任務,等待一個或幾個間隔(K_IVL)、超時(K_TMO)、信號(K_SIG)事件。如果所等待的事件已經發生,繼續執行當前任務;如果所等待的事件沒有發生,則置相應的等待標志后,掛起該任務,轉任務切換程序段(switchingnow)切換到下一任務。

事實上,用戶程序的運行是陣發性的,在一段時間內任務會比較繁忙,而在另一段時間可能會處于空閑狀態。如果使用os_wait(K_TMO,count,0)函數進行定時,則在不同的時間段會得到不同的結果。所以,要實現較為精確和穩定的定時,最好還是使用os_wait(K_IVL,count,O)函數,而不是os_wait(K_TMO,count,O)。除非延時時間很長,如超過了所有任務的輪轉時間總和,os_wait(K_IVL,count,O)和os_wait(K_TM0,count,O)的延時效果才會相同。

4 、INT_CLOCK的設置與延時計算

RTX5 Tiny中與延時相關的2個參數為INT_CLOCK和TIMESHARING。先來看Rtx5ltny.A51源程序中的一段:

RTX51 Tiny內核在實際應用中的概念和問題探討

從上面的程序段可以看出,RTX51 Tiny內核使用Timer0作為硬件定時器,Timer0工作在方式1(16位計數方式)。因此,如果想增加定時器溢出時間,可以修改INl_CLOCK的定義。但不能無限制地增大,最大只能到216一1,即65 535。如果單片機采用12 MHz的晶振,則每次定時器溢出的最長時間為65.535ms。如果INT_CLOCK的定義值超過了這個數據,并不能達到預期的結果。例如,把INT_CLOCK定義為100 000(Oxl86AOH),那么實際上INT_CLOCK為34 464(Ox86AOH)。本來是想定時100 ms,實際上得到的卻是34.4 ms。因此,在設置具體延時時間時必須仔細計算。

系統的任務輪轉時間等于每次定時器溢出時間與TIMESHARING的乘積。因此,要將系統的任務輪轉時間設置為特殊的時長,可以通過INT_CLOCK與TIME-SHARING兩個參數的不同組合來實現。不過在一般的應用當中,都是采用其系統的默認值,無須修改。

5、 修改內核配置的基本過程

RTX51 TINY的用戶任務具有以下幾個狀態。(1)RUNNING:任務處于運行中,同一時間只有一個任務可以處于“RUNNING”狀態。(2)READY:任務正在等待運行,在當前運行的任務時間片完成之后,RTX51 TINY運行下一個處于“READY”狀態的任務。(3)WAITING:任務等待一個事件。如果所等待的事件發生的話,任務進入“READY”狀態。(4)DELETED:任務不處于執行隊列。(5)IME OUT:任務由于時間片用完而處于“TIME OUT”狀態,并等待再次運行。(6)該狀態寫“READY”狀態相似,但由于是內部操作過程使一個循環任務被切換而被冠以標記。

RTX51TNY.A51為RTX51 Tiny的核心程序,包括所有的函數定義,不需要改動。通常改動的是配置程序CONF_TNY.A51,主要內容如下。

INT_REGBANK EQU 1:定時器中斷時使用的寄存器組默認值是寄存器組1,一般無需改動。

INT_CLOCK EQU 10000:硬件定時器零TimerO的溢出時間,即1個滴答(tick)的時間長度。默認值是10 000個機器周期。對于傳統的MCS51單片機來說,1個機器周期為12個時鐘周期。如果采用12 MHz的晶振,那么每個機器周期將為lμs,1個滴答的時長為10 ms。

TIMESHARING EQU5:定義時間片輪轉(round-robin timeout)時間,默認值為5個滴答(1個滴答為Tim—erO的1次溢出)。如果INT_CLOCK為10 000,時鐘頻率為12 MHz,則1個時間片的輪轉時間為50 ms,即每個任務每次最大可獲得的執行時間為50 ms。如果TIME-SHARING定義為O,則禁止時間片輪轉。

RAMTOP EQU 0FFH:定義CPU堆棧可使用的最高RAM地址,默認值為地址OFFH(256-1)。FREE_STACK EQU 20:配置堆棧大小為20字節,默認值為20(經常需要改動)。用戶可根據自己的實際需要進行修改,一般情況下需要配置或修改的內容主要有INT_CLOCK、TIMESHAR-ING、FREE_STACK。

6 、其他需要注意的問題

①堆棧的大小要設置得合適,太大浪費資源,太小又會出現堆棧錯誤。在系統運行中,有時會發現程序總在某一處死循環,而從邏輯上卻常常分析不出問題之所在,很有可能是堆棧溢出。在conf_tny.a51中有個非常重要的宏STACK_ERROR,其源程序如下:

RTX51 Tiny內核在實際應用中的概念和問題探討

通過仿真發現,程序會在此處死循環。

(Conf_tny.a51)FREE_STACK EQU 20:配置堆棧大小為20字節,默認值為20。選擇合適的堆棧大小,即設置合適的FREE_STACK值,可達到最佳效果。

②同堆棧一樣,輪轉時間片的長度也不宜設置得過大或過小。設置得過大,則一些持續時間較短的事件無法響應。如果輪轉時間設置得過小,則CPU的很大一部分功能被消耗在任務切換上了;如果任務多,處理時間長,無疑會無形中增加系統的負擔。需要根據具體的需要權衡。

結 語

以上分析可以看到這個內核簡潔高效,非常適合于運行在資源較少的單片機上。根據其設計思想,我們也很容易把它移植到其它單片機上。但是它也有缺陷,例如:不支持外部任務切換;不支持用戶使用定時器T0等。這些缺陷的存在,限制了任務切換的靈活性。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7484

    瀏覽量

    163770
  • 內核
    +關注

    關注

    3

    文章

    1372

    瀏覽量

    40282
  • 應用程序
    +關注

    關注

    37

    文章

    3267

    瀏覽量

    57683
收藏 人收藏

    評論

    相關推薦

    多任務實時操作系統RTX51 Tiny概念和應用問題探究

    多任務實時操作系統,可用來設計具有實時性要求的多任務軟件。 RTx51有2個版本:RTX51 TinyRTX51 Full。RTX51
    的頭像 發表于 09-03 17:48 ?5486次閱讀
    多任務實時操作系統<b class='flag-5'>RTX51</b> <b class='flag-5'>Tiny</b>的<b class='flag-5'>概念</b>和應用問題探究

    RTX51 Tiny內核應用中有什么常見問題?

    多任務實時操作系統,可用來設計具有實時性要求的多任務軟件。RTx51有2個版本:RTX51 TinyRTX51 Full。RTX51
    發表于 09-20 08:17

    RTX51 TINY怎么使用?

    RTX51 TINY怎么使用?KEIL RTX51 TINY內核的分析與應用
    發表于 04-28 06:11

    RTX51 Tiny內核應用種常見的問題有哪些?

    本文從具體的內核分析出發,對使用RTX51 Tiny操作系統時的一些概念和應用的問題進行了闡述和澄清,使大家對
    發表于 04-28 06:22

    有哪些措施可以去優化RTX51 Tiny程序呢

    怎樣去配置RTX51 Tiny的硬件定時器呢?怎樣去配置RTX51 Tiny的庫文件呢?
    發表于 01-26 06:06

    RTX51微型實時內核資料

    RTX51 TINY是一個小型實時內核,專為代碼大小是最重要因素的單芯片應用而設計。 RTX51內核只需要900字節的代碼空間,非常適合不
    發表于 08-12 06:18

    KEIL RTX51 TINY內核的分析與應用

    簡要介紹RTX51 TINY 的基本情況和使用方法;詳細分析這個內核的任務管理和內存管理的運行機制, 并給出其主要代碼流程圖。
    發表于 04-16 08:57 ?128次下載

    基于RTX51 TINY的加密短消息通信系統

    介紹一種基于RTX51 TINY的加密短消息通信系統,可以實現手機與手機以及手機與計算機之間的加密短消息通信。
    發表于 06-22 15:10 ?77次下載

    RTX51 TINY的分析

    RTX51 TINY的分析   RTX51 TINY是一種應用于MCS5l系列單片機的小型多任務實時操作系統。它完全集成Keil C5l
    發表于 03-29 15:10 ?5689次閱讀
    <b class='flag-5'>RTX51</b> <b class='flag-5'>TINY</b>的分析

    RTX51 Tiny容易混淆的問題有哪些應該如何解決

    RTX51 Tiny是 Keil uVision自帶的一個小型嵌入式RTOS,具有小巧、速度快、系統開銷小、使用方便等優點。使用RTX51 Tin
    發表于 09-04 17:27 ?2次下載
    <b class='flag-5'>RTX51</b> <b class='flag-5'>Tiny</b><b class='flag-5'>中</b>容易混淆的問題有哪些應該如何解決

    RTX51 Tiny中有哪些問題容易混淆如何解決

    RTX51 Tiny是 Keil uVision自帶的一個小型嵌入式RTOS,具有小巧、速度快、系統開銷小、使用方便等優點。使用RTX51 Tin
    發表于 08-19 17:31 ?2次下載
    <b class='flag-5'>RTX51</b> <b class='flag-5'>Tiny</b>中有哪些問題容易混淆如何解決

    RTX51 Tiny有哪些問題容易混淆

    51單片機專門定制的,所以51單片機上的運行效率比其它一些通用的RTOS性能也要好一些。 但是,由于RTX51 Tiny的相關資料和書籍比
    發表于 07-23 17:37 ?2次下載
    <b class='flag-5'>RTX51</b> <b class='flag-5'>Tiny</b>有哪些問題容易混淆

    RTX51 Tiny中有哪些問題容易混淆

    RTX51 Tiny是 Keil uVision自帶的一個小型嵌入式RTOS,具有小巧、速度快、系統開銷小、使用方便等優點。使用RTX51 Tin
    發表于 07-17 17:38 ?3次下載
    <b class='flag-5'>RTX51</b> <b class='flag-5'>Tiny</b>中有哪些問題容易混淆

    C51單片機與實時系統RTX51(Tiny / Full)

    C51單片機與實時系統RTX51(Tiny / Full)
    發表于 11-18 14:51 ?50次下載
    C<b class='flag-5'>51</b>單片機與實時系統<b class='flag-5'>RTX51</b>(<b class='flag-5'>Tiny</b> / Full)

    RTX51 Tiny用戶手冊

    RTX51手冊 RTX51手冊 RTX51手冊 RTX51手冊
    發表于 08-27 11:41 ?0次下載
    主站蜘蛛池模板: 兽皇VIDEO另类HD| 有人在线观看的视频吗免费| 7723日本高清完整版在线观看| 高hh乱亲女真实| 老司机深夜福利ae 入口网站| 无码AV动漫精品一区二区免费| 99久久精品费精品国产一区二| 吉吉av电影| 无码国产欧美日韩精品| NANANA在线观看高清影院| 久久久免费热线精品频| 性欧美video| 成人在线高清不卡免费视频| 恋夜影视列表免费安卓手机版 | 口内射精颜射极品合集| 亚洲刺激视频| 国产精品JK白丝AV网站| 强开少妇嫩苞又嫩又紧九色 | YELLOW高清视频免费观看| 老司机深夜福利ae 入口网站| 亚洲午夜一区二区电影院| 国产精品免费久久久久影院| 日本无码专区亚洲麻豆| 97影院午夜午夜伦不卡| 老年日本老年daddy| 伊人亚洲综合青草青草久热| 国内精品久久久久久西瓜色吧 | 超大BBWWW| 欧美人xxxxx| 8x华人免费视频| 快播h动漫网| 最近中文字幕2018MV高清在线| 久久99国产精品一区二区| 亚洲精品国产一区二区贰佰信息网| 国产东北男同志videos网站| 日日噜噜大屁股熟妇| 成人免费一级毛片在线播放视频| 欧洲兽交另类AVXXX| YELLOW高清视频免费观看| 泡妞高手在都市免费观看| swag合集120部|