国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

RTX51 Tiny內核應用常見問題分析

發布時間:2010-1-13 16:06    發布者:李寬
關鍵詞: Tiny , 內核 , 應用
引言

μVision是德國Keil公司開發的單片機IDE軟件,最初主要用于8051系列單片機,目前也有支持ARM系列單片機的專用版本MDK-ARM。RTX51是其自帶的運行于8051系列單片機上的小型多任務實時操作系統,可用來設計具有實時性要求的多任務軟件。 RTx51有2個版本:RTX51 Tiny和RTX51 Full。RTX51 Tiny是RTX51 Full的子集。RTX51 Tiny自身僅占用900字節左右的程序存儲空間,可以很容易地運行在沒有外部擴展存儲器的8051單片機系統上。

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

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

一般來說,C語言中主程序就是指main()函數。參考文獻[3]稱RTX51 Tiny沒有主程序,其實這是一種誤解。實際上RTX51 Tiny的主程序是以匯編代碼的形式位于Rtx51tny.A51文件中,在程序的最后:



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

另外,參考文獻[4]提到,使用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。如果任務比較多,同時任務的負擔都比較重,相應的誤差時間會更大。

RTX51 Tiny使用os_wait()函數作定時,只有當系統任務較輕時,使用os_wait(K_IVL,count,0)和 os_wait(K_TMO,count,0)才能達到一致的效果;而在任務較重時,使用這2個函數所得到的結果會有很大差別。參考文獻[5]對此做了詳細介紹,此處只作簡單補充。

事實上,用戶程序的運行是陣發性的,在一段時間內任務會比較繁忙,而在另一段時間可能會處于空閑狀態。如果使用 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內核使用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 修改內核配置的基本過程

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,其源程序如下:



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

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

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

結語

本文從具體的內核分析出發,對使用RTX51 Tiny操作系統時的一些概念和應用中的問題進行了闡述和澄清,使大家對RTX5l Tiny有更為清晰的認識。RTX51 Tiny微操作系統的使用,可以使用戶把更多的精力關注在應用本身而無需考慮復雜的底層驅動。而且整個應用軟件系統結構清晰,維護方便,可節省大量的時間和人力。當程序比較復雜時,它的優點就體現得更明顯。然而,由于硬件資源及其自身的限制,對于功能復雜、要求較高的應用來說,就顯得有些吃力了,用戶需要自己編寫功能擴展程序。無論如何,它仍然是8位單片機應用中操作系統的首選。

參考文獻

1. Keil Software Inc.www.keil.com.
2. Keil Software Inc.RTX51 Tiny User's Guide,2004.
3. 付虹,牛國成,胡冬梅,等.RTX51 TINY中任務的建立[J].信息技術,2005(12):85-87.
4. 馮桂平,魯懷偉.關于RTX51TINY的分析與探討[J].單片機與嵌入式系統應用,2008(5):68-70.
5. 邵子揚.RTX51 Tiny 中容易混淆的問題[J].單片機與嵌入式系統應用,2004(5),61-62.
6. 岳洋,曹穎.基于小型操作系統設計實現的無線終端[J].電子測量技術,2008,31(5):170-172.
7. 劉玉宏.KEIL RTX51 TINY內核的分析與應用[J].單片機與嵌入式系統應用,2003(10):23-25.
8. 陽艷,蔣禮,楊科靈,等.嵌入式操作系統RTX51 Tiny 的分析及應用[J].計算機技術與發展,2006,16(6):89-91.
9. 張利軍,蔡友發,寧金銥.RTX51及其在單片機系統中的應用[J].天津工業大學學報,2002,21(2):55-57.

作 者:蘭州大學 賈水英 楊建紅 謝宏偉  來源:《單片機與嵌入式系統應用》 2009(9)
本文地址:http://www.qingdxww.cn/thread-7617-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 安靜高效的電機控制——這才是正確的方向!
  • 無線充電基礎知識及應用培訓教程3
  • PIC18-Q71系列MCU概述
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲激情综合在线 | 欧美影院 | 一级特黄高清完整大片 | 青青在线国产 | 日韩最新网址 | 欧美亚洲国产另类在线观看 | 欧美激情黑人 | 免费观看亚洲视频 | 国产欧美成人一区二区三区 | 我们不能是朋友电视剧免费观看 | 成人宗合网 | 欧美三级在线观看视频 | 美日韩在线观看 | 免费人成毛片乱码 | 国产精品视频免费看 | 毛片精品| 97在线视频免费观看费观看 | 久久人视频 | 九九热线精品视频18 | 欧美特黄视频在线观看 | 99re九精品视频在线视频 | 中文字幕日本一本二本三区 | 中文字幕在线手机播放 | 成人免费久久精品国产片久久影院 | 久久综合一区二区三区 | 日韩一级欧美一级在线观看 | 成人欧美一区在线视频在线观看 | 天天摸夜夜添夜夜添国产 | 日韩中文欧美 | 伊人啪啪网 | 日韩黄色中文字幕 | 佳佳黑高跟极致调教 | 午夜色大片在线观看 | 九九热在线视频观看 | 欧美日韩亚洲精品国产色 | 欧美日韩综合高清一区二区 | 免费看黄的网站在线看 | 色婷婷久久合月综 | 日本成人一区二区 | 亚洲欧洲日韩国产 | 天天做天天玩天天爽天天 |