樓主: alpha321
打印 上一主題 下一主題

RTX51——Keil的專(zhuān)用于51單片機的嵌入式系統

[復制鏈接]
21
發(fā)表于 2010-7-8 20:48:21 | 只看該作者
22
 樓主| 發(fā)表于 2010-7-28 20:05:13 | 只看該作者
回復20樓irzn
這的確是一個(gè)缺點(diǎn),不過(guò)uc/os-II是提供源碼的,可是并不太適合51。事實(shí)上,我們在做PC編程時(shí),windows的API還是VC/VB的控件,都是不提供源碼的,不過(guò)這也沒(méi)影響我們的正常開(kāi)發(fā).
23
 樓主| 發(fā)表于 2010-7-28 20:22:50 | 只看該作者
RTX51中很有意義的一個(gè)特點(diǎn)是為系統進(jìn)入待機(Idle)或掉電(Power down)狀態(tài)提供了一個(gè)實(shí)現空閑任務(wù)Idle task的宏, 在系統各個(gè)任務(wù)都不執行(執行條件未滿(mǎn)足)時(shí), 使系統自動(dòng)進(jìn)入休眠狀態(tài), 為降低系統功耗提供了操作的可能. 各種51芯片的待機和掉電操作略有不同, 喚醒方式也有所差別. 應用時(shí)可視所用芯片適當選擇. 文檔中提供的一個(gè)例子, 是使通常的51單片機進(jìn)入待機模式的宏定義:
CPU_IDLE MACRO
ORL PCON,#1 ; set 8051 CPU to IDLE
ENDM
在conf_tny.a51中, 定義CPU_IDLE_CODE為空閑任務(wù)的開(kāi)關(guān),設為1時(shí),允許進(jìn)入空閑任務(wù).此時(shí)必須定義CPU_IDLE的宏.
另外,CPU_IDLE也可以不進(jìn)入休眠狀態(tài),而是點(diǎn)亮一個(gè)空閑狀態(tài)指示燈,或熄滅忙碌狀態(tài)指示燈,或設置一個(gè)其他狀態(tài), 具體操作可根據應用而定.
24
 樓主| 發(fā)表于 2010-7-28 21:09:57 | 只看該作者
說(shuō)點(diǎn)關(guān)于操作系統的題外話(huà). 當前炙手可熱的LINUX, 其前身實(shí)際是大名鼎鼎的UNIX, 后者在從巨型機到微型機/工作站上長(cháng)期居于領(lǐng)導地位, 經(jīng)過(guò)多年的發(fā)展, 達到了相當高的技術(shù)水準, 同時(shí)其結構也演化得相當復雜, 多數版本難以在微型機上運行, 更別說(shuō)嵌入式系統了.

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

諸位可看看該系統的特點(diǎn), 實(shí)時(shí)性能不比UCOSII, 圖形性能不比WINDOWS, 難學(xué)難用更是其他系統不及的. 通用設備的驅動(dòng)程序更是奇缺.

為此, 多個(gè)公司對LINUX進(jìn)行了再開(kāi)發(fā), 比如著(zhù)名的REDHAT, 還有國內的紅旗LINUX. 然而, 這樣一來(lái), LINUX不再是自由的了, 要獲得使用權得交費了. 還能稱(chēng)之為自由軟件嗎?

也許這種局面將來(lái)會(huì )有改觀(guān). 關(guān)于這個(gè)問(wèn)題, 有興趣的朋友不妨談?wù)効捶?
25
 樓主| 發(fā)表于 2010-8-5 12:45:59 | 只看該作者
LINUX能發(fā)展到今天而且很流行,自有它的道理,暫且不提。搞嵌入式系統,選LINUX是不錯的,但不能因此一葉障目,認為除LINUX以外再無(wú)其它嵌入式系統,須知山外青山,藝無(wú)止境。
26
 樓主| 發(fā)表于 2010-8-5 12:54:51 | 只看該作者
前面提的RTX51,多指RTX51 tiny, 這是RTX51的一個(gè)片內RAM支持版本, 隨KEIL編譯器一塊提供,占用很小的內部RAM空間,完成任務(wù)的調度. RTX51 FULL為片外RAM支持版本, 進(jìn)程調度現場(chǎng)保存較大的在片外RAM中, 支持的系統數據交換方式也更豐富, 如數據郵箱等(RTX51 tiny 只支持信號).
27
發(fā)表于 2010-8-5 13:08:07 | 只看該作者
先看看
28
 樓主| 發(fā)表于 2010-8-19 20:24:51 | 只看該作者
RTX51 Tiny固定用定時(shí)器T0作為系統時(shí)鐘發(fā)生器,一般系統中設置系統時(shí)鐘周期為10ms左右.如上面例子中定時(shí)常數設為"9216".但對于時(shí)間要求很苛刻的應用,如LED數碼管掃描,將其作為獨立的任務(wù)來(lái)調度,10ms左右的周期太長(cháng)了.在RTX51 Tiny中提供了在T0系統時(shí)鐘中斷例程中執行代碼的方式,可用來(lái)保證滿(mǎn)足這種實(shí)時(shí)限制,把動(dòng)態(tài)LED數碼顯示的周期性?huà)呙栩寗?dòng)獨立成為一個(gè)子過(guò)程,在T0中斷例程中調用即可.
29
發(fā)表于 2010-8-25 21:24:38 | 只看該作者
不錯,先學(xué)好這些。
去掉51兩字即可用于A(yíng)RM
30
 樓主| 發(fā)表于 2010-9-3 12:45:11 | 只看該作者
感謝hotpower.
在Keil RealView中,RTX系列中間件更全面,包括RTX內核、IP協(xié)議棧、SD卡文件系統等,都是基于A(yíng)RM的32位組件。關(guān)于這些組件,本人并不太了解,因此不敢在此妄加評論。但可以肯定的是,RTX應該比我前邊提到的RTX51功能更強大。對此有了解的朋友,不妨介紹介紹RTX。
31
發(fā)表于 2010-9-6 11:46:49 | 只看該作者
感覺(jué)這方面的資料很少,
32
 樓主| 發(fā)表于 2010-9-8 18:28:58 | 只看該作者
回復31樓daoyuan79
不是資料少,是國內用的人少.其實(shí)在每個(gè)Keil的版本下都有RTX51的,還有詳細的文檔和例子.只不過(guò)這些文檔是英文的,看的人不多.
33
發(fā)表于 2010-9-15 21:51:34 | 只看該作者
謝謝分享
34
發(fā)表于 2010-9-17 22:28:12 | 只看該作者
學(xué)習學(xué)習了
35
發(fā)表于 2010-9-19 10:34:50 | 只看該作者
做個(gè)記號!
36
 樓主| 發(fā)表于 2010-9-28 19:11:13 | 只看該作者
RTX51 TINY對資源的占用很少,其用戶(hù)指南上邊提到所需代碼空間(CODE)最大為900字節,實(shí)際應用中可能比該值小.占用的內部數據空間(DATA)為7字節,另外每增加一個(gè)任務(wù),堆?臻g會(huì )多占用3字節,但任務(wù)最多為16個(gè).RTX51 TINY固定占用T0作為系統定時(shí)器,用寄存器組(BANK)0作為系統使用的組,但允許用戶(hù)的中斷例程使用其他寄存器組.
37
 樓主| 發(fā)表于 2010-9-30 07:58:06 | 只看該作者
通常在C51中,如果選擇只用一個(gè)寄存器組,則在進(jìn)入中斷例程時(shí),將PSW,ACC,R0-R7全部壓入堆棧,即使該中斷例程沒(méi)有使用其中的任何寄存器.如果為中斷例程分配了寄存器組,則進(jìn)入中斷時(shí)僅切換寄存器組,R0-R7并不壓棧.
38
發(fā)表于 2010-9-30 12:04:01 | 只看該作者
資源緊張時(shí)可以選擇ProtoThread,有興趣的可以試試。
39
 樓主| 發(fā)表于 2010-10-8 17:26:46 | 只看該作者
回復38樓zengguangjun
感謝38樓!
這也是一種不錯的方案,http://code.google.com/p/protothread/有這種內核的介紹.
40
發(fā)表于 2010-10-9 11:44:46 | 只看該作者
LZ不錯哦。
學(xué)東西最好是從最小的東西學(xué)起,這樣慢慢延伸出去,效果最好。
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页