• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 在Nexar上如何實現RTOS51的嵌入式系統

    在Nexar上如何實現RTOS51的嵌入式系統

    作者: 時間:2010-06-22 來源:網絡 收藏

    構建基于操作軟件工程
    中創建基于RTOS的工程,需要創建一個工程,其中包括一個用戶配置文件(user.oil),用戶設計源文件(*.c,*.h);并在配置選項中設定編輯,編譯,鏈接及調試環境參數。當修改用戶配置文件(user.oil),系統將會在目標代碼中重建RTOS庫。完成嵌入式系統工程編譯后,TASKING調試器可以利用ORTI協議(OSEK實時接口協議)完成嵌入式系統的實時調試。同時,在中支持軟件的仿真調試功能。

    本文引用地址:http://www.czjhyjcfj.com/article/151784.htm

    以下我們將結合一個實例來簡要介紹一下一個完整的基于的嵌入式系統設計過程。

    首先:創建一個新的嵌入式系統工程
    1、選擇菜單 [menus]File>>New>>Project>>Embedded Project,在工程欄中將會顯示新建的嵌入式系統工程名,選擇菜單[menus]File>>Save Project,在對話框中修改工程名稱,然后Save。在工程欄中選擇File View選項,在工程中將會列出所有屬于當前工程的文件。注:Structure Editor選項用于編輯工程中文件間的鏈接關系。

    圖1.1 新創建嵌入式系統工程

    圖1.2工程欄----嵌入式工程

    2、在嵌入式系統工程添加用戶配置文件(myrtos.oil)及系統控制源代碼(mymain.c)。選擇菜單[menus]File>>New>>C Source Document 及Text Document;也可以在工程欄中選中嵌入式系統工程名,然后點擊鼠標,選擇[popups]Add New to Project>>C file 及Text Document。保存文件,重新命名為mymain.c及myrtos.oil。

    圖1.3 工程欄----創建原理圖

    為了便于演示,在這個嵌入式系統工程中僅涉及到了用戶配置文件(myrtos.oil)及系統控制源代碼(mymain.c)兩個文件。實際上,用戶可以根據軟件設計的需要添加函數頭文件及子程序源代碼。在工程建立后,Nexar將自動生成一個 makefile(在本項目中為myrtos.mak),在該文檔中包含了嵌入式系統構架規則;在每次重編譯時,Nexar將會按照makefile中的設定更新嵌入式工程目標代碼。在嵌入式系統工程中RTOS庫的建立是通過OIL文件中的參數設定。

    其次:編輯系統應用文檔
    1、在文檔mymain.c中編寫用戶源代碼如下,然后保存;
    #include osek/osek.h> //OSEK/OSEK.H 內核系統函數頭文件

    DeclareTask(task0); //申明任務0
    DeclareTask(task1); //申明任務1
    DeclareTask(task2); //申明任務2
    DeclareEvent(EV0); //定義事件0
    DeclareEvent(EV1); //定義事件1
    DeclareAppMode(Ap1); //定義任務運行模式

    int main(int argc)
    {
    (void)argc; //系統傳遞參數 argc
    StartOS(Ap1); //調用系統函數 StartOS()
    return 1;
    }

    TASK(task0) //任務0子程序代碼
    {
    EventMaskType event;
    ActivateTask(task1); //調用任務1子程序
    while(1)
    {
    WaitEvent(EV0 | EV1); //調用系統事件判定函數 WaitEvent()
    GetEvent(task0,event); //調用系統事件傳遞函數GetEvent()
    ClearEvent(event); //調用系統事件釋放函數 ClearEvent()
    if(event EV0)
    {
    ActivateTask(task2); //調用任務2子程序

    }
    else if (event EV1)
    {
    ActivateTask(task1); //調用任務1子程序
    }
    }
    }

    TASK(task1) //任務1子程序代碼
    {
    SetEvent(task0,EV0);
    TerminateTask();
    }

    TASK(task2) //任務2子程序代碼
    {
    SetEvent(task0,EV1);
    TerminateTask();
    }
    2、在文檔myrtos.oil中編寫用戶配置文件,然后保存;
    #include osek/osek.oil> //OSEK/OSEK.OIL RTOS51內核系統配置文件

    CPU myRTOS //構架一個基于RTOS的應用代碼myRTOS
    {
    OS StdOS //定義一個基于RTOS的操作系統結構StdOS
    {
    /* All debug switches are enabled */
    STATUS = EXTENDED; //
    STARTUPHOOK = FALSE;/*TRUE;*/ //上電自加載函數使能
    ERRORHOOK = FALSE; //錯誤信息函數使能
    SHUTDOWNHOOK = FALSE; //關閉函數使能
    PRETASKHOOK = FALSE; //預先定義任務調用函數使能
    POSTTASKHOOK = FALSE; //已調用任務函數使能
    USEGETSERVICEID = FALSE; //用戶收發函數調用使能
    USEPARAMETERACCESS = FALSE; //
    USERESSCHEDULER = FALSE; //用戶任務調用計劃函數使能

    /* tetris does not undergo application resets */
    MULTISTART = FALSE; //多任務控制使能
    /* shuts down the system in case of stack overflow */
    STACKMONITOR = TRUE; //堆棧監控使能
    /* let us have ORTI information */
    ORTI = TRUE; //ORTI協議調用使能(注:運行debug時,需設定為true)
    EVENT EV0; //定義事件0
    EVENT EV1; //定義事件1
    APPMODE Ap1; //定義運行模式
    TASK task0 //設定任務0的運行模式
    {
    PRIORITY = 9; //優先級設定1-255,越大表示優先級高
    SCHEDULE = FULL; //執行任務計劃
    ACTIVATION = 1; //激活狀態
    AUTOSTART = TRUE {APPMODE=Ap1;}; //自動調用,true表示任務系統自動調用功能使能
    EVENT = EV0; //定義任務中運行的事件
    EVENT = EV1;
    };
    TASK task1 //設定任務1的運行模式
    {
    PRIORITY = 5;
    SCHEDULE = FULL;
    ACTIVATION = 1;
    AUTOSTART = FALSE;
    };
    TASK task2 //設定任務2的運行模式
    {
    PRIORITY = 5;
    SCHEDULE = FULL;
    ACTIVATION = 1;
    AUTOSTART = FALSE;
    };
    };

    3、設定嵌入式系統工程參數:
    在嵌入式系統設計中通過選擇工程菜單[menus]Project>>Project Options,打開對話框Options for Embedded Project *.PrjEmb(如圖2.1)。在圖2.1右上角的設定選項中選擇TASKING TSK51x/TSK52x;然后,在處理器域中選擇當前嵌入式工程的軟核對象(如TSK51A)。在C編譯域中存儲器模式屬性選中variables in XDATA并使能 allow reentrant function功能框。(注:對初學者而言,可以簡單的通過將所有功能選項設定為系統默認狀態,如圖2.1中紅色標注部分)。

    圖2.1嵌入式系統參數設定欄

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 科技| 铜鼓县| 涞源县| 靖江市| 宁河县| 南康市| 博野县| 岳普湖县| 黄石市| 永丰县| 保德县| 大理市| 前郭尔| 青神县| 卢氏县| 观塘区| 彭山县| 正镶白旗| 吴川市| 微博| 共和县| 沅江市| 府谷县| 洛南县| 大连市| 山西省| 吉木萨尔县| 宁国市| 民权县| 白玉县| 泰顺县| 九龙县| 高邮市| 中宁县| 德兴市| 永顺县| 澜沧| 家居| 锡林郭勒盟| 分宜县| 临沂市|