機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
AVR單片機(jī)的RTOS-AVRX應(yīng)用
AVR單片機(jī)的RTOS-AVRX應(yīng)用
 更新時(shí)間:2008-8-19 13:44:07  點(diǎn)擊數(shù):68
【字體: 字體顏色

修改 MCU=8535
AAVRMCU=1
GCCMCU=at90s$(MICU)
AVRXMCU=_AT90S$(MCU)_為 ICCMCU=m16
AAVRMCU=3
GCCMCU=atmega16
AVRXMCU=_AT90Megal6_

②重新修改AVRX源碼的serialio.S文件,即根據(jù)不同的單片機(jī)修改串口部分的寄存器定義。需要增添如下代碼:

#if defined(UBRRL)
#define UBRR UBRRL
#endif
#if defined(UBRRH)
sts UBRRH, plh
#endif

③重新編譯內(nèi)核。具體做法是復(fù)制一個(gè)“命令提示符”到AVRX目錄下,運(yùn)行“命令提示符”,鍵入“makegcc”命令后運(yùn)行就完成了AVRX內(nèi)核的重新編譯,會(huì)生成很多的.o文件和avrx.a(chǎn)文件。這些文件在以后的應(yīng)用程序中會(huì)使用。

  至此就完成了AVRX在ATmegal6單片機(jī)上的內(nèi)核移植,接著就可以編寫(xiě)應(yīng)用程序了。

2.2在AVRX上編寫(xiě)應(yīng)用程序

  這時(shí)候要用一個(gè)新的makefile文件,同時(shí)自己的程序可以不和AVRX的內(nèi)核在一個(gè)目錄,但是要指出依賴文件的明確路徑。makefile的框架可以采用Winavr的sam-ple文件夾下的makefile文件框架。這里的難點(diǎn)其實(shí)還是makefile文件的語(yǔ)法問(wèn)題。下面介紹應(yīng)用程序的makefile文件在實(shí)例中需要修改或增加的代碼:

MCU=atmegal6 /*微處理器的名字*/
TARGET=test /*應(yīng)用程序文件名*/
GCCLIB=$(AVRX)/avrx/avrx.a(chǎn)
GCCINC=-I.-I$(AVRX)/avrx-I$(AVR)/avr/inc /*加上相關(guān)的庫(kù)*/
SCANF_LIB_MIN=-Wl,-u,vfscanf-lscanf_min
SCANF_LlB_FLOAT= -Wl,一u,vfscannf-lscanl_flt
SCANF_LIB= /*設(shè)置sacnf函數(shù)庫(kù)的類型,在不使用時(shí)可以
注釋掉,這樣可以減小編譯后的文件太小*/
LDFLAGS+=$(PRIBITF_LlB)$(SCANF_LIB)
$(MATH_LIB) /*新增的連接器參數(shù)設(shè)定*/

3 系統(tǒng)測(cè)試

3.1 系統(tǒng)實(shí)時(shí)性測(cè)試

  在實(shí)時(shí)系統(tǒng)中,實(shí)時(shí)系統(tǒng)的實(shí)時(shí)性表現(xiàn)在系統(tǒng)對(duì)外部事件的響應(yīng)能力上。系統(tǒng)通過(guò)中斷來(lái)響應(yīng)外部事件的發(fā)生,并且在用戶中斷程序中做的事要盡量少,把大部分工作留給任務(wù)去做,只是通過(guò)信號(hào)量或者消息機(jī)制來(lái)通知任務(wù)運(yùn)行。Mega16的定時(shí)器2設(shè)為比較匹配輸出模式,在匹配時(shí)間到了之后產(chǎn)生一定周期脈沖輸出,并產(chǎn)生中斷。設(shè)置定時(shí)器1為計(jì)數(shù)模式來(lái)計(jì)數(shù)產(chǎn)生的脈沖輸出。通過(guò)定時(shí)器2的比較匹配中斷服務(wù)子程序來(lái)發(fā)信號(hào)量通知任務(wù)運(yùn)行,并在中斷子程序中不開(kāi)中斷,而在任務(wù)得到信號(hào)后開(kāi)中斷,以實(shí)現(xiàn)中斷處理與任務(wù)運(yùn)行的同步。任務(wù)中對(duì)一個(gè)全局變量計(jì)數(shù),以記錄任務(wù)執(zhí)行的次數(shù)。運(yùn)行一段時(shí)間后,在設(shè)置的匹配時(shí)間里,任務(wù)的運(yùn)行次數(shù)和定時(shí)器1的計(jì)數(shù)一樣,則系統(tǒng)在這段時(shí)間里是能完全響應(yīng)外部事件的。當(dāng)定時(shí)器2的比較匹配時(shí)間設(shè)為大于23 μs時(shí),2個(gè)計(jì)數(shù)是相等的;當(dāng)小于23 μs時(shí),定時(shí)器1計(jì)數(shù)值大于任務(wù)計(jì)數(shù)值,說(shuō)明任務(wù)沒(méi)有完全得到響應(yīng)。這說(shuō)明中斷的進(jìn)入和返回即系統(tǒng)對(duì)外部時(shí)間的響應(yīng)和處理時(shí)間為23 μs,遠(yuǎn)遠(yuǎn)大于其他操作系統(tǒng)在AVR單片機(jī)上移植后的響應(yīng)時(shí)間。

3.2應(yīng)用例程測(cè)試

  這里只對(duì)源文件中的幾個(gè)例程先進(jìn)行簡(jiǎn)單的編譯,然后去掉不必要的代碼,加入自己想測(cè)試的一些代碼,進(jìn)行了定時(shí)器控制模塊、信號(hào)量和消息隊(duì)列以其簡(jiǎn)單組合的測(cè)試,均在ATmega16上達(dá)到了預(yù)期的效果。

4 心得體會(huì)

①AVRX的源碼都是用匯編語(yǔ)言編寫(xiě)的,相對(duì)來(lái)講代碼效率很高,但是由于沒(méi)有詳細(xì)的API介紹文檔,所以最好的入門(mén)方法就是先讀懂RTOS的源碼和例程,然后進(jìn)行修改,再加上自己的代碼逐漸熟練應(yīng)用。

②AVRX需要分配的堆棧為35個(gè)字節(jié)加上任務(wù)代碼需要的額外堆棧,具體的大小取決于每個(gè)進(jìn)程用的本地變量個(gè)數(shù)。比較好的確定分配給任務(wù)堆棧大小的方法是:分配很大的堆棧(如70字節(jié)),運(yùn)行一段應(yīng)用程序后看堆棧到多深(因?yàn)镚CC啟動(dòng)時(shí)把所有內(nèi)存都清0了,這樣很容易看到)。不過(guò),為了安全起見(jiàn),用編譯器或仿真器在估計(jì)堆棧的頂端寫(xiě)入幾個(gè)字節(jié)的0xFFFFF去驗(yàn)證到底達(dá)到了多少字節(jié),然后分配給比測(cè)試結(jié)果多兩個(gè)以上的字節(jié)給這個(gè)任務(wù)。

③啟動(dòng)的最后一個(gè)指令必須跳轉(zhuǎn)到Epilog()。

5 結(jié)論

  AVRX是一個(gè)不錯(cuò)的RTOS,最顯著的特點(diǎn)就是內(nèi)核小,速度快,編譯后大概只需500~700字節(jié),且基本的調(diào)度功能一個(gè)也不少。由于其代碼公開(kāi),結(jié)合不同型號(hào)AVR單片機(jī)的特性,可以在此基礎(chǔ)上進(jìn)行系統(tǒng)的裁減和擴(kuò)展,使之能達(dá)到更好的效果。本文為AVR嵌入式系統(tǒng)的應(yīng)用提供了借鑒。
  • 上一篇: 在C51系統(tǒng)上實(shí)現(xiàn)YAFFS文件系統(tǒng)
  • 下一篇: MC9S12NE64型單片機(jī)的嵌入式以太網(wǎng)連接
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1