新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 搭建使用 RTX51-Tiny 的 C51 Keil 項(xiàng)目環(huán)境

搭建使用 RTX51-Tiny 的 C51 Keil 項(xiàng)目環(huán)境

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
個(gè)人記錄:
沒(méi)想到stc單片機(jī)除了裸板還能跑系統(tǒng),有些小驚訝。
記得接觸rtx51還是原來(lái)玩pSoC3(51內(nèi)核)的時(shí)候,后來(lái)改成PSoC5換了arm的內(nèi)核就把這部分放下了,今天偶然看到了,居然可以用stc單片機(jī)來(lái)跑,比較有意思。
mark一記。
有時(shí)間了可以對(duì)照著看看。
萬(wàn)方也搜了兩篇文章,有空可以看看別人的設(shè)計(jì):
基于RTX51嵌入式操作系統(tǒng)的智能卡電能表的設(shè)計(jì)
基于RTX51 Tiny操作系統(tǒng)的雙人游戲設(shè)計(jì)
試了一下還挺方便和簡(jiǎn)單的。
系統(tǒng)的初始化可以用main函數(shù)這樣(不太提倡)
voidmain(void)
{init_system();//系統(tǒng)初始化
os_start_system(0);//啟動(dòng)RTX51
}

也可以在task0里面寫(xiě)(最后刪掉task0)
voidstartup_task(void)_task_0
{
init_system();//系統(tǒng)初始化
os_create_task(1);
os_create_task(2);
os_delete_task(0);
}
以下是轉(zhuǎn)載的正文:

最近 1 個(gè)月一直在利用業(yè)余時(shí)間研究 STC12A5C60S2 單片機(jī)及其應(yīng)用,用于放松每天搞 SharePoint 后的緊張心情和頭腦。(事實(shí)證明,能放松那才怪?。?/p>本文引用地址:http://butianyuan.cn/article/201611/322748.htm

在折騰完了 LCD 1602、LCD 12864(并、串)、PCF 8563(時(shí)鐘芯片)、nRF24L01(無(wú)線(xiàn)通信)、矩陣鍵盤(pán)、LN 298(H 橋電機(jī)驅(qū)動(dòng))、光耦計(jì)數(shù)器、HC-SR 04(超聲波測(cè)距)之后,決定放棄“白癡”一樣基于中斷、定時(shí)器循環(huán)的“多任務(wù)”程序,上操作系統(tǒng)。否則,后面我想寫(xiě)略微復(fù)雜的應(yīng)用是幾乎不可能的。

下面這個(gè)就是我使用的 STC12A5C60S2 單片機(jī)最小系統(tǒng),自帶 U 轉(zhuǎn)串芯片,所有 IO 口引出,燒片調(diào)試很方便:

這種小板要說(shuō)缺點(diǎn),也是有的,就是沒(méi)有安裝孔,整個(gè)板只能“飄”著,靠杜邦線(xiàn)的張力來(lái)固定(呃,也就是沒(méi)有固定:),所以后來(lái)用到小車(chē)上面時(shí),只能像這樣在底部焊“支架”再安裝到洞洞板上:

操作系統(tǒng)的選擇

最開(kāi)始考慮的是 uc/OS-II。因?yàn)槊麣獯螅ń?jīng)??吹剑δ軓?qiáng)(聽(tīng)上去),而且我買(mǎi)的書(shū)里面也是介紹這個(gè)操作系統(tǒng)。

us/OS-II 的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先級(jí)的搶占式調(diào)度方式,正在執(zhí)行的低優(yōu)先級(jí)任務(wù)可以被處于“READY”狀態(tài)的高優(yōu)先級(jí)任務(wù)打斷。這點(diǎn)在 STC12A5C60S2 里面通過(guò)設(shè)置硬件中斷優(yōu)先級(jí)也可以實(shí)現(xiàn),但我不可能任何任務(wù)都是中斷吧。所以還是得用操作系統(tǒng)。

結(jié)果網(wǎng)上翻了翻資料,傻眼了。us/OS-II 太xx復(fù)雜了,沒(méi)有一個(gè)網(wǎng)頁(yè)能夠清楚的用幾段話(huà)說(shuō)清楚應(yīng)該怎么用。而且,us/OC-II 到 STC12A5C60S2 需要移植(就是你得改他的源碼,從而適應(yīng)硬件的特殊情況)。呃 … …

然后,開(kāi)始考慮 RTX-51。因?yàn)?C51 開(kāi)發(fā)工具 Keil 里面自帶 RTX-51 操作系統(tǒng),且直接支持在 Keil 中編譯調(diào)試,頗有吸引力 :)

RTX-51 有 2 個(gè)版本:Full 和 Tiny。

Full 需要的資源較多,但支持搶占式任務(wù)調(diào)度和中斷任務(wù),以及任務(wù)間互發(fā)消息;Tiny 不支持搶占式調(diào)度,任務(wù)間也不能互發(fā)消息,但消耗資源少。

Full 版本雖然功能強(qiáng)大,但是占 8K ROM 也就算了,還需要至少 450 字節(jié)的 xData!STC12A5C60S2 總共才 1024 字節(jié)的片上 xData RAM,而且我還要 xData 當(dāng)作液晶屏顯存用呢。想了想,果斷選擇 RTX-51 Tiny。

Tiny 版本不占用 xData,RAM 占用也很少(7+3×任務(wù)數(shù)),比較合適。至于缺點(diǎn),只能用了才知道。Tiny 版是開(kāi)源的,源碼是匯編。國(guó)內(nèi)有人對(duì)照著寫(xiě)自己寫(xiě)了個(gè)操作系統(tǒng),叫做Small RTOS51。

Small RTOS 51 的作者陳明計(jì),當(dāng)年是因?yàn)檎也坏胶线m的單片機(jī)操作系統(tǒng),“一怒之下”自己動(dòng)手寫(xiě)了這個(gè)既有 Tiny 版本資源占用少的優(yōu)點(diǎn),又能支持搶占式任務(wù)調(diào)度的操作系統(tǒng)。(自己不爽,就創(chuàng)造一個(gè),這似乎是很多牛人和新技術(shù)出現(xiàn)的根本動(dòng)力?。∷哉f(shuō),沒(méi)有好輪子用的時(shí)候,就要自己發(fā)明新的輪子。)

RTX-51 Tiny 使用還是很簡(jiǎn)便的,網(wǎng)上隨便翻翻,馬上就找到了可用的指南(基于RTX51的單片機(jī)軟件設(shè)計(jì)),作者寫(xiě)得很好,10 分鐘就看懂了,然后開(kāi)始動(dòng)手。

搭建環(huán)境

項(xiàng)目名字叫做 Wave。

首先,建立好項(xiàng)目目錄結(jié)構(gòu)。每個(gè)子目錄放對(duì)應(yīng)的內(nèi)容,要不然,所有文件都堆在項(xiàng)目文件夾下面,你很快就暈了:

上面圖中,

  • code 放自己的代碼
  • lib 放外部程序庫(kù)的代碼
  • listing 放 Keil 生成的中間文件(方法、變量的內(nèi)存地址映射什么的)
  • output 放 Keil 生成的 HEX 文件
  • document 放文檔

這個(gè)目錄結(jié)構(gòu)和 Keil IDE 里面的“目錄”結(jié)構(gòu)是不一樣的(也不需要一樣)。

然后,開(kāi) Keil IDE 新建一個(gè)項(xiàng)目,放在剛剛的目錄下面:

Keil IDE 有試用版的。試用版有全部功能,唯一的限制是只能編譯 2K 以?xún)?nèi)的目標(biāo)代碼。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉