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

電子工程網

標題: RTX51——Keil的專用于51單片機的嵌入式系統 [打印本頁]

作者: alpha321    時間: 2009-11-12 22:02
標題: RTX51——Keil的專用于51單片機的嵌入式系統
  RTX51是一款非常緊湊的用于51單片機的嵌入式系統,支持多任務、中斷和時間片調度。特別是RTX51 Tiny,能用于真正的51單片系統。該系統在Keil UV2上可用,且帶調試支持。經過多年的改進,RTX51已經很成熟。
    本人認為,在51的簡單應用中,這個輕量級的RTX51還是很實用的。有哪位用過,不妨交流一下自己的看法,本人在此先行謝過。
  RTX51很容易使用,在此提供一個例子,單片機控制兩個LED亮滅閃爍。
rtx_tes.rar (669 Bytes)
其中設置如下


作者: lelee007    時間: 2009-11-12 22:24
這個OS局限性太大,沒什么大的實際用途

對網絡應用支持么?

而且現在的MCU越來越便宜了,復雜、對性能有需求的,51很難勝任

RTX51學學就可以了
作者: alpha321    時間: 2009-11-13 10:31
非常感謝,樓上說的沒錯,RTX51專用于51單片機。
如果需要網絡應用,可以選其它架構的片子。
在這里我不妨就事論事,在可以用51的場合,51芯片和RTX51還是搭配的。
試看更低端的MCU,有的連C都不支持。好在51的資料豐富,開發工具還算不錯,也很便宜。
作者: alpha321    時間: 2009-11-13 10:46
如果我沒有記錯,wangkj的顯卡就用了51,“stc51單片機主控,cpld+sdram實現顯卡硬件”。當然,這位的應用做得很高端,本人望塵莫及。
作者: alpha321    時間: 2009-11-13 17:47
一個簡單的例子,51直接驅動兩個LED亮滅閃爍。
// ===========================================
//                        test project for RTX51 Tiny
// ===========================================
#include   
// 包含RTX51 tiny頭文件
#include   

// ---------------------------------------------------------------
// 指示燈口線定義
sbit LED0 = P1^0;
sbit LED1 = P1^1;

// ---------------------------------------------------------------
// 定義閃爍周期。為突出差異,兩個周期設為不同的值。
const unsigned char ucDly0 = 53;
const unsigned char ucDly1 = 137;

// =========================================
// 第一個任務“_task_ 0”,系統啟動默認加載的任務
void job0(void) _task_ 0
{
    static bit LED_Flag = 0;

        // 加載另一個任務
        os_create_task(1);
        
        while(1)
        {
                // 指示燈輸出
                LED0 = LED_Flag;
                // 位寄存器取反
                LED_Flag = ~LED_Flag;
                // 延時等待,RTX51系統過程調用
                os_wait2(K_TMO, ucDly0);
        }
}

// ---------------------------------------------------------------
// 第二個任務,除了沒有“加載另一個任務”外與第一個任務基本相同
void job1(void) _task_ 1
{
    static bit LED_Flag = 0;

        while(1)
        {
                LED1 = LED_Flag;
                LED_Flag = ~LED_Flag;
               
                os_wait2(K_TMO, ucDly1);
        }
}

// =========================================
作者: alpha321    時間: 2009-11-19 14:45
上面是該例子的源代碼,其中沒有用到時間片調度,CONF_TNY.A51中只改了兩個默認的參數:INT_CLOCK,設為9216是為在fosc = 11.0592MHz時得到10MS的系統調度周期;TIMESHARING設為0,禁止時間片調度。
作者: alpha321    時間: 2009-11-21 09:23
  該例子中可以看出RTX51應用的特點,沒有C程序中常用的main()過程,只有用_task_關鍵字定義的任務,每個任務是一個封閉閉的循環。main()的功能已被RTX51接管了;系統等待調用os_wait2()。其實還有os_wait1(),os_wait()兩個等待過程,三者之間功能略有差異,具體可參考“C:\Keil\C51\HLP\TR51.CHM”。
  還有其它可供調用的RTX51系統例程,可以參考RTX51的函數說明。
作者: alpha321    時間: 2009-12-5 08:00
RTX51用MCS51匯編語言寫成,KEIL是不提供源碼的,但不影響正常使用。UV2中附帶的例子很不錯,TRAFFIC是一個應用RTX51 TINY的交通燈控制程序,其中用了UART通信,重寫了putchar()、getkey()等過程,以適應RTX51任務調用。
作者: alpha321    時間: 2009-12-11 10:11
交通燈控制程序TRAFFIC,其功能是控制一個供行人通過的路口的交通指示燈,忙碌時段內車輛通行方向為綠燈,行人通行方向為紅燈。行人要通過時,按下按鍵,交通燈轉換為車輛通行方向為紅燈,行人通行方向為綠燈,讓行人通過,稍后恢復為車輛通行。空閑時段內車輛通過方向黃燈亮滅閃爍。如果系統與串行終端連接,則終端上顯示控制器內部的實時時間,可以通過終端設置控制器的時間,忙碌時段的開始時間和結束時間。
這是一個典型的過程控制例子,其中的單片機系統等待的時間較長,工作狀態轉換也較頻繁,程序如果用前后臺方式設計,工作量大而且容易出錯。用RTX51 則程序很簡潔,實時性能也不錯。
作者: alpha321    時間: 2009-12-11 10:31
TRAFFIC中有效的任務劃分為:
1)實時時間計時CLOCK;
2)行人通過時的按鍵輸入KEYREAD;
3)忙碌時交通燈控制LIGHTS;
4)空閑時交通燈控制BLINKING;
5)終端命令接收COMMAND;
6)終端輸入時ESC捕獲GET_ESC。
其中KEYREAD、COMMAND和CLOCK始終運行,LIGHTS和BLINKING交替運行,GET_ESC只在終端輸入時運行。
作者: alpha321    時間: 2009-12-19 17:08
其實,用RTX的更方便的是功能的裁剪。TRAFFIC中的功能,用前后臺編程也可以很方便地實現,有興趣的可以試試。但是,以上提到的各個任務,在前后臺系統中要做增減是很費勁的,而用RTX則很方便,刪除一個任務本身和等待該任務的信號的操作即可,修改的地方很少,幾乎不留痕跡。可以試試在前后臺系統上的修改過程是如何繁瑣。
作者: ydz0515    時間: 2010-2-2 11:01
支持LZ。像TRAFFIC這樣的例子,如果不使用RTX51,即使高手也做不了那么完善。

看到不少研究生以RTX51_TINY應用方法做論文課題,其實教授也用不好,愿意的話在這里貼幾篇碩士論文,結果是用錯了。當然評委也是蒙古教授,學生能研究到這個程度就不錯了,畢竟中國還沒有一個博士或者教授能寫的出來51_RTOS 呀.
作者: alpha321    時間: 2010-3-15 00:09
非常感謝樓上的回帖!

其實我是這樣理解的, 國內不是寫不出51_RTOS, 很大程度上是不屑于去寫. 我從來不敢低估各位國內同行的實力, 甚至我都認為某些國內同行技術實力和創造性絕不亞于國外同行. 政策和資金方面的引導那不是咱搞技術的能確定的, 在此不提.

其實51是不適合用來做論文的,就算做出來也不見得能通過答辯或發表, 在這方面它顯得技術含量不高, 沒人會當回事. 前幾年我接觸過一個研究生, 做DSP + ARM9 + USB + FS + IP/TCP, 視頻采集處理 + 壓縮存儲 + 主機端程序.  不到一年時間, 從原理圖, PCB, 算法, 軟件都搞定. 結果有人給評優秀, 根本不問那是怎么搞出的.

我想說的是, 搞論文別搞51, 搞51別搞論文. 這甚至可以說不是同一個行業. 我也實話說如果想解決學習或應用中的問題, 可以適當參考一下我的帖子, 如果做論文, 不只是我的帖子, 就是這個網站, 恐怕也難滿足這樣的期望吧.
作者: alpha321    時間: 2010-3-15 00:14
有一陣子沒時間來發帖了, 對不住關注該話題的各位. 有機會我會把以前做過的一些應用貼上來, RTX51 和 UC/OS-II的都有, 希望對各位有用.  現在的問題是我有好長時間不搞51了, 也沒時間整理那些東西, 非常抱歉.
作者: ncschen    時間: 2010-5-17 13:57
學習學習
作者: alpha321    時間: 2010-5-19 00:34
RTX51應用中的各任務多由 task 0 創建, 在建立各任務后, 在 task 0 的最后將該任務本身刪除: os_delete_task( 0 );
作者: supergame111    時間: 2010-6-30 15:23
好好學習學習
作者: yuzhigan    時間: 2010-7-6 21:25
回復17樓supergame111
值得好好學習
作者: yuzhigan    時間: 2010-7-6 21:25
謝謝分享,好東西
作者: irzn    時間: 2010-7-7 15:45
不提供源代碼很不方便啊
作者: hyingsheng    時間: 2010-7-8 20:48
收藏了 謝謝啊 很好
作者: alpha321    時間: 2010-7-28 20:05
回復20樓irzn
這的確是一個缺點,不過uc/os-II是提供源碼的,可是并不太適合51。事實上,我們在做PC編程時,windows的API還是VC/VB的控件,都是不提供源碼的,不過這也沒影響我們的正常開發.
作者: alpha321    時間: 2010-7-28 20:22
RTX51中很有意義的一個特點是為系統進入待機(Idle)或掉電(Power down)狀態提供了一個實現空閑任務Idle task的宏, 在系統各個任務都不執行(執行條件未滿足)時, 使系統自動進入休眠狀態, 為降低系統功耗提供了操作的可能. 各種51芯片的待機和掉電操作略有不同, 喚醒方式也有所差別. 應用時可視所用芯片適當選擇. 文檔中提供的一個例子, 是使通常的51單片機進入待機模式的宏定義:
CPU_IDLE MACRO
ORL PCON,#1 ; set 8051 CPU to IDLE
ENDM
在conf_tny.a51中, 定義CPU_IDLE_CODE為空閑任務的開關,設為1時,允許進入空閑任務.此時必須定義CPU_IDLE的宏.
另外,CPU_IDLE也可以不進入休眠狀態,而是點亮一個空閑狀態指示燈,或熄滅忙碌狀態指示燈,或設置一個其他狀態, 具體操作可根據應用而定.
作者: alpha321    時間: 2010-7-28 21:09
說點關于操作系統的題外話. 當前炙手可熱的LINUX, 其前身實際是大名鼎鼎的UNIX, 后者在從巨型機到微型機/工作站上長期居于領導地位, 經過多年的發展, 達到了相當高的技術水準, 同時其結構也演化得相當復雜, 多數版本難以在微型機上運行, 更別說嵌入式系統了.

LINUX的作者別開生面, 將UNIX結構作了一個恰當的修改(這種修改現在被認為是獨創), 得到了LINUX內核. 該內核生逢其時, 有GNU的支持, 不同的版本被大量用于服務器和嵌入式系統, 伸縮性很強的系統性能使這只小企鵝大顯神威.

諸位可看看該系統的特點, 實時性能不比UCOSII, 圖形性能不比WINDOWS, 難學難用更是其他系統不及的. 通用設備的驅動程序更是奇缺.

為此, 多個公司對LINUX進行了再開發, 比如著名的REDHAT, 還有國內的紅旗LINUX. 然而, 這樣一來, LINUX不再是自由的了, 要獲得使用權得交費了. 還能稱之為自由軟件嗎?

也許這種局面將來會有改觀. 關于這個問題, 有興趣的朋友不妨談談看法.
作者: alpha321    時間: 2010-8-5 12:45
LINUX能發展到今天而且很流行,自有它的道理,暫且不提。搞嵌入式系統,選LINUX是不錯的,但不能因此一葉障目,認為除LINUX以外再無其它嵌入式系統,須知山外青山,藝無止境。
作者: alpha321    時間: 2010-8-5 12:54
前面提的RTX51,多指RTX51 tiny, 這是RTX51的一個片內RAM支持版本, 隨KEIL編譯器一塊提供,占用很小的內部RAM空間,完成任務的調度. RTX51 FULL為片外RAM支持版本, 進程調度現場保存較大的在片外RAM中, 支持的系統數據交換方式也更豐富, 如數據郵箱等(RTX51 tiny 只支持信號).
作者: xubin_hh    時間: 2010-8-5 13:08
先看看
作者: alpha321    時間: 2010-8-19 20:24
RTX51 Tiny固定用定時器T0作為系統時鐘發生器,一般系統中設置系統時鐘周期為10ms左右.如上面例子中定時常數設為"9216".但對于時間要求很苛刻的應用,如LED數碼管掃描,將其作為獨立的任務來調度,10ms左右的周期太長了.在RTX51 Tiny中提供了在T0系統時鐘中斷例程中執行代碼的方式,可用來保證滿足這種實時限制,把動態LED數碼顯示的周期性掃描驅動獨立成為一個子過程,在T0中斷例程中調用即可.
作者: hotpower    時間: 2010-8-25 21:24
不錯,先學好這些。
去掉51兩字即可用于ARM
作者: alpha321    時間: 2010-9-3 12:45
感謝hotpower.
在Keil RealView中,RTX系列中間件更全面,包括RTX內核、IP協議棧、SD卡文件系統等,都是基于ARM的32位組件。關于這些組件,本人并不太了解,因此不敢在此妄加評論。但可以肯定的是,RTX應該比我前邊提到的RTX51功能更強大。對此有了解的朋友,不妨介紹介紹RTX。
作者: daoyuan79    時間: 2010-9-6 11:46
感覺這方面的資料很少,
作者: alpha321    時間: 2010-9-8 18:28
回復31樓daoyuan79
不是資料少,是國內用的人少.其實在每個Keil的版本下都有RTX51的,還有詳細的文檔和例子.只不過這些文檔是英文的,看的人不多.
作者: mqxc    時間: 2010-9-15 21:51
謝謝分享
作者: noescape    時間: 2010-9-17 22:28
學習學習了
作者: wenjin0386    時間: 2010-9-19 10:34
做個記號!
作者: alpha321    時間: 2010-9-28 19:11
RTX51 TINY對資源的占用很少,其用戶指南上邊提到所需代碼空間(CODE)最大為900字節,實際應用中可能比該值小.占用的內部數據空間(DATA)為7字節,另外每增加一個任務,堆棧空間會多占用3字節,但任務最多為16個.RTX51 TINY固定占用T0作為系統定時器,用寄存器組(BANK)0作為系統使用的組,但允許用戶的中斷例程使用其他寄存器組.
作者: alpha321    時間: 2010-9-30 07:58
通常在C51中,如果選擇只用一個寄存器組,則在進入中斷例程時,將PSW,ACC,R0-R7全部壓入堆棧,即使該中斷例程沒有使用其中的任何寄存器.如果為中斷例程分配了寄存器組,則進入中斷時僅切換寄存器組,R0-R7并不壓棧.
作者: zengguangjun    時間: 2010-9-30 12:04
資源緊張時可以選擇ProtoThread,有興趣的可以試試。
作者: alpha321    時間: 2010-10-8 17:26
回復38樓zengguangjun
感謝38樓!
這也是一種不錯的方案,http://code.google.com/p/protothread/有這種內核的介紹.
作者: @︻$▅▆▇◤    時間: 2010-10-9 11:44
LZ不錯哦。
學東西最好是從最小的東西學起,這樣慢慢延伸出去,效果最好。
作者: renmingcan    時間: 2010-10-10 12:55
我就會用51tiny顯示個LED
作者: alpha321    時間: 2010-10-12 18:48
象其它的嵌入式操作系統一樣,RTX51Tiny在具體應用的時候,也需要根據項目的功能設計做相應的任務劃分,明確各任務擔當的具體功能以及任務之間的聯系.這個問題似乎與RTX51Tiny本身無關,只要做過設計的都明白這些,不管是否用嵌入式操作系統,這個思路是最基本的.
  在我前面舉的LED的例子中,兩個任務之間是沒有聯系的,實際應用中很少有這種相互之間完全獨立的任務共存于一個完整的應用系統中.比如一個數據采集-控制系統中,可能有這樣的任務:
1)系統初始化;
2)傳感器數據采集;
3)數據換算和處理;
4)控制運算和輸出;
5)數據和狀態顯示;
6)參數設定.
  這是一個簡單的例子,除任務1)外,其他任務都是在系統中循環執行的,任務3)需要任務2)的輸出數據作為運算的基礎,任務4)需要任務3)的結果作為控制的依據.任務5)則作為當前狀態的顯示,采用其他任務的狀態信息和數據.任務6)的設定結果則作為其他任務的輸入信息.
  設想這樣一個應用功能的系統,盡量簡化它的具體操作,然后劃分成幾個任務,分別按RTX51Tiny的任務編寫要求寫好任務,調試并運轉正常.然后看看這樣的任務在不用RTX51Tiny的前后臺系統中又如何實現調度.這將對理解嵌入式操作系統有幫助.有興趣的不妨將這些任務移植到其它操作系統上試試,比如LINUX上(當然不是51平臺了).
作者: alpha321    時間: 2010-10-16 13:45
這也是題外話. 具體的應用和操作系統本身沒有必然的關系, 比如可以在一個復雜的操作系統上做一個相對簡單的應用, 也可以基于一個簡單的操作系統甚至是前后臺做一個相當復雜的應用,這都有現成的很多例子.
  當然, 隨著越來越復雜的應用需求, 平臺也越來越復雜, 操作系統功能也越來越強, 這也是有目共睹的事實. 作為嵌入式操作系統內核學習的實驗, 我們不妨以簡單直觀的LED燈作為應用, 在此基礎上舉一反三, 掌握核心的知識并達到運用自如.
作者: dory    時間: 2010-10-21 16:05
xuexi!!!
作者: dory    時間: 2010-10-21 16:05
再xuexi !!!!
作者: deedzhaoyun    時間: 2010-10-21 17:14
寫的好,下載回去看看.
作者: alpha321    時間: 2010-10-26 17:20
前邊提到的中斷例程問題, 其實很多相對簡單的中斷例程不妨用匯編語言編寫, 比如前邊提到的LED數碼管動態掃描, 可以避免C51在進入中斷例程時把沒有影響到的R0-R7,PSW逐個入棧,退出中斷例程前又逐個出棧形成的執行時間(這個有時很重要)和代碼及堆?臻g上的浪費. 畢竟51的速度和空間都是有限的. 有些特殊的地方, 匯編語言能發揮獨到的優勢.
作者: hzndskj    時間: 2010-10-27 21:49
正在搞這個,有幫助。
作者: ddllxxrr    時間: 2010-12-23 14:16
好資料我正找呢
作者: hzh557    時間: 2011-3-2 14:43
呵呵,強
作者: ywwork2011    時間: 2011-3-4 10:29

作者: linhao2011    時間: 2011-3-10 09:56
學習,以后的再謙虛點,牛人太多了,呵呵
作者: alpha321    時間: 2011-3-13 20:45
還是題外話,
如果大家不嫌51太老,我推薦一款很經典的片子,CY7C68013,支持USB2.0的FULL SPEED 及 HIGH SPEED 的 DEVICE端接口,51的架構能做到如此高速實屬不易。更可取的是,該芯片系列支持二次枚舉,即芯片內部不用事先寫入固件程序,在插到PC機的USB口時,驅動程序將MCU所需的目標程序通過USB下傳到片內RAM開始執行。這個特性比較適合僅和PC機連接工作的高速設備。
作者: 海中孤島    時間: 2011-3-20 16:47
學習
作者: dadaowai    時間: 2011-4-12 21:36
學習,以后的再謙虛點,牛人太多了,呵呵
作者: klyzh2003    時間: 2011-4-20 20:05
51裝操作系統,有點小材大用嫌疑!
作者: kongchau    時間: 2011-4-29 21:47
學習中。。。
作者: 古木風    時間: 2013-5-27 22:44
原來我想多了
作者: 18821911106    時間: 2014-7-27 19:37

謝謝分享,好東西
作者: JZS    時間: 2015-1-23 22:51
剛入門的,來看看
作者: pcbkey    時間: 2015-2-22 14:10
支持一下
作者: lucent    時間: 2015-5-26 11:28
呵呵。技術不分高大尚,夠用為原則。
作者: red178    時間: 2020-5-29 08:47
學習中……。




歡迎光臨 電子工程網 (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 欧美二区视频 | 国产伦精一区二区三区视频 | 99re热久久精品这里都是精品 | 中文国产成人精品少久久 | 国产精品玖玖玖在线观看 | 我不卡影视 | 亚洲国产精品成人综合色在线婷婷 | 特级做a爰片毛片免费看一区 | 高清性色生活片久久久 | 日本在线观看一级高清片 | 国产精品手机网站 | 国产网站免费 | 丝袜美女小说 | 91在线精品免费观看 | 99re2| 日本一区不卡在线观看 | 久久羞羞视频 | 99久久免费国产精精品 | 555www成人网| 久久综合精品国产一区二区三区 | 久久99精品久久久66 | 青青青视频免费观看 | 一区二区三区午夜 | 亚洲第一页乱 | 污网站免费观看在线高清 | 国产精品国内免费一区二区三区 | 朝鲜一级一级妇女毛片 | 老司机福利精品视频 | 免费视频亚洲 | 天堂在线观看免费观看 | 亚洲三级网址 | 成品人短视频app | 200款禁用app软件免费大全 | 四虎.coms3u8| 国产精品香蕉在线一区二区 | 91青草视频| 欧美在线完整高清观看 | 草逼视频网址 | 毛片资源网 | 粉嫩极品国产在线播放 | 大焦伊人|