新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 搭建使用 RTX51-Tiny 的 C51 Keil 項目環境

        搭建使用 RTX51-Tiny 的 C51 Keil 項目環境

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

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

        最近 1 個月一直在利用業余時間研究 STC12A5C60S2 單片機及其應用,用于放松每天搞 SharePoint 后的緊張心情和頭腦。(事實證明,能放松那才怪!)

        本文引用地址:http://www.104case.com/article/201611/322748.htm

        在折騰完了 LCD 1602、LCD 12864(并、串)、PCF 8563(時鐘芯片)、nRF24L01(無線通信)、矩陣鍵盤、LN 298(H 橋電機驅動)、光耦計數器、HC-SR 04(超聲波測距)之后,決定放棄“白癡”一樣基于中斷、定時器循環的“多任務”程序,上操作系統。否則,后面我想寫略微復雜的應用是幾乎不可能的。

        下面這個就是我使用的 STC12A5C60S2 單片機最小系統,自帶 U 轉串芯片,所有 IO 口引出,燒片調試很方便:

        這種小板要說缺點,也是有的,就是沒有安裝孔,整個板只能“飄”著,靠杜邦線的張力來固定(呃,也就是沒有固定:),所以后來用到小車上面時,只能像這樣在底部焊“支架”再安裝到洞洞板上:

        操作系統的選擇

        最開始考慮的是 uc/OS-II。因為名氣大(經常看到),功能強(聽上去),而且我買的書里面也是介紹這個操作系統。

        us/OS-II 的任務調度是完全基于任務優先級的搶占式調度方式,正在執行的低優先級任務可以被處于“READY”狀態的高優先級任務打斷。這點在 STC12A5C60S2 里面通過設置硬件中斷優先級也可以實現,但我不可能任何任務都是中斷吧。所以還是得用操作系統。

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

        然后,開始考慮 RTX-51。因為 C51 開發工具 Keil 里面自帶 RTX-51 操作系統,且直接支持在 Keil 中編譯調試,頗有吸引力 :)

        RTX-51 有 2 個版本:Full 和 Tiny。

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

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

        Tiny 版本不占用 xData,RAM 占用也很少(7+3×任務數),比較合適。至于缺點,只能用了才知道。Tiny 版是開源的,源碼是匯編。國內有人對照著寫自己寫了個操作系統,叫做Small RTOS51。

        Small RTOS 51 的作者陳明計,當年是因為找不到合適的單片機操作系統,“一怒之下”自己動手寫了這個既有 Tiny 版本資源占用少的優點,又能支持搶占式任務調度的操作系統。(自己不爽,就創造一個,這似乎是很多牛人和新技術出現的根本動力??!所以說,沒有好輪子用的時候,就要自己發明新的輪子。)

        RTX-51 Tiny 使用還是很簡便的,網上隨便翻翻,馬上就找到了可用的指南(基于RTX51的單片機軟件設計),作者寫得很好,10 分鐘就看懂了,然后開始動手。

        搭建環境

        項目名字叫做 Wave。

        首先,建立好項目目錄結構。每個子目錄放對應的內容,要不然,所有文件都堆在項目文件夾下面,你很快就暈了:

        上面圖中,

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

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

        然后,開 Keil IDE 新建一個項目,放在剛剛的目錄下面:

        Keil IDE 有試用版的。試用版有全部功能,唯一的限制是只能編譯 2K 以內的目標代碼。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蓝山县| 遂宁市| 宁安市| 甘南县| 太仓市| 加查县| 阜平县| 黄山市| 水富县| 呼和浩特市| 滦南县| 武义县| 鹤峰县| 古丈县| 登封市| 岳阳市| 泌阳县| 内江市| 崇阳县| 武宁县| 安阳县| 射阳县| 行唐县| 府谷县| 尉氏县| 搜索| 治县。| 大石桥市| 黄陵县| 金乡县| 乳源| 东阿县| 吕梁市| 昌邑市| 沙湾县| 静海县| 凤城市| 灯塔市| 兰溪市| 福清市| 台前县|