女女互揉吃奶揉到高潮AV,韩国一级在线电影免费播放,国产又大又硬又粗,处处吻完整高清视频在线观看,精品人妻无码AV一区二区,曰韩无码无遮挡A级毛片,色噜噜狠狠色综合久色AⅤ

  • 歡迎光臨燃?xì)獗硇畔⒕W(wǎng)!
 
當(dāng)前位置: 首頁 » 技術(shù)前沿 » 技術(shù)論文 » 正文

嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的設(shè)計

字體: 放大字體  縮小字體 發(fā)布日期:2007-11-07  作者:肖軍,邵景峰,馬輝,劉文臣  瀏覽次數(shù):1292
1、引言

    近年來,嵌入式實時操作系統(tǒng)接入網(wǎng)絡(luò)后將使遠(yuǎn)程監(jiān)測、遠(yuǎn)程控制、遠(yuǎn)程診斷和遠(yuǎn)程維護(hù)變得越來越容易。從根本上講,嵌入式設(shè)備接入網(wǎng)絡(luò),當(dāng)前基本上所采用的網(wǎng)絡(luò)協(xié)議是基于TCP/IP通信協(xié)議。

    由于嵌入式系統(tǒng)是以計算機技術(shù)為基礎(chǔ)、軟硬件可裁減并對成本、體積、功耗有嚴(yán)格要求的專用系統(tǒng),它對TCP/IP通信協(xié)議的支持有其自身的特點,這些特點也決定嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的體系結(jié)構(gòu)。

    本方案以LPC2210為核心元件研究了嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的硬件電路,同時在μC/OS-Ⅱ平臺上編寫了應(yīng)用軟件程序。

    2、嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的系統(tǒng)整體結(jié)構(gòu)

    嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的硬件原理圖如圖1所示。系統(tǒng)采用PHILIPS公司LPC2210微處理器,外擴一片F(xiàn)LASH SST 39VF160,并接入RTL8019AS以太網(wǎng)芯片(Webchip),再與接口連接器HR901170A相連。并將開放源代碼的TCP/IP協(xié)議棧LwIP移植到μC/OS-Ⅱ系統(tǒng)上。


圖1 硬件結(jié)構(gòu)原理圖

    RTL8019AS以太網(wǎng)芯片(Webchip)是獨立于各種微控制器的專用網(wǎng)絡(luò)接口芯片,它通過標(biāo)準(zhǔn)的輸入、輸出口與MCU相連。具有16位的數(shù)據(jù)總線和24為的地址總線,并且內(nèi)部集成了DMA控制器、ISA總線控制器和集成16k SRAM、網(wǎng)絡(luò)PHY收發(fā)器,兼容NE2k標(biāo)準(zhǔn)。用戶可以通過DMA方式把需要發(fā)送的數(shù)據(jù)寫入片內(nèi)SRAM中,讓芯片自動將數(shù)據(jù)發(fā)送出去;而芯片接收到數(shù)據(jù)后,用戶可以通過DMA方式將其讀出。

    HR901170A是中山市漢仁電子有限公司生產(chǎn)的RJ45接口連接器(帶網(wǎng)絡(luò)變壓器/濾波器),該連接器滿足IEEE802.3和IEEE902.3ab標(biāo)準(zhǔn),能夠較好的抑制電磁干擾。通過HR901170A系統(tǒng)就可以連接到以太網(wǎng)上了。

    該方案設(shè)計相對簡單,硬件電路中采用的LPC2210是PHILIPS公司推出的微處理器,帶有16k RAM,76個通用I/O口,12個獨立外部中斷引腳,集成有8通道的10位A/D,能夠基于芯片設(shè)計復(fù)雜的系統(tǒng)。雖然LPC2210具有較快的訪問速度,但片內(nèi)沒有集成FLASH,所以這里擴展一片16Mbit FLASH SST 39VF160保存用戶程序。其架構(gòu)滿足了μC/OS-Ⅱ正常運行的基本要求。

    3、嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的軟件設(shè)計

    為使嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件具有交好的實時性和穩(wěn)定性,在實時多任務(wù)操作系統(tǒng)μC/OS-Ⅱ平臺上設(shè)計系統(tǒng)軟件。系統(tǒng)中各個任務(wù)在宏觀上按照一定的關(guān)系并行工作,CPU資源得到充分利用,系統(tǒng)可靠性得到很大的保證,方便組織開發(fā)任務(wù)。在μC/OS-Ⅱ平臺上,軟件設(shè)計工作主要包括三個方面的內(nèi)容:μC/OS-Ⅱ在LPC2210上的移植和LwIP協(xié)議在μC/OS-Ⅱ上的實現(xiàn)以及系統(tǒng)應(yīng)用軟件的編寫。本設(shè)計的系統(tǒng)結(jié)構(gòu)圖如圖2所示:


圖2 系統(tǒng)結(jié)構(gòu)圖

    該系統(tǒng)采用源碼公開的嵌入式實時操作系統(tǒng)μC/OS-Ⅱ,版本號為V2.52。其特點是源碼公開、可讀性強、移植性好、可配置、可裁剪。它采用優(yōu)先級搶占式調(diào)度方案,優(yōu)先級最高的任務(wù)一旦準(zhǔn)備就緒,則擁有CPU的所有權(quán)并開始投入運行。μC/OS-Ⅱ的軟硬件體系結(jié)構(gòu)圖如圖3所示。應(yīng)用程序建立在操作系統(tǒng)之上,處于系統(tǒng)的頂層,每個任務(wù)在宏觀上是并行運行。與CPU類型無關(guān)的代碼提供了系統(tǒng)服務(wù),即內(nèi)核、任務(wù)管理、內(nèi)存管理等。μC/OS-Ⅱ的移植部分用于完成與不同處理器的接口工作。μC/OS-Ⅱ的移植必須要求處理器及其編譯器滿足一定的條件。


圖3 μC/OS-Ⅱ硬件和軟件體系結(jié)構(gòu)原理圖

    μC/OS-Ⅱ的移植工作主要集中在下面幾個文中:OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C。另外,在INCLUDES.H中必須包括LPC2210文件LPC2210.H;OS_CFG.H用于系統(tǒng)應(yīng)用μC/OS-Ⅱ中的初始化配置。OS_CPU.H主要包括了一些與處理器和編譯器相關(guān)的常量和類型定義等,而且要注意的是LPC2210的堆棧方向是由高到低,用OS_STK_GROWTH來設(shè)置堆棧的增長方向。因此將OS_STK_GROWTH設(shè)為1。
    OS_CPU_A.ASM中需要編寫4個匯編語言函數(shù):OS_TASK_SW(),OS_IntCtxSw(),OSStartHighRdy()和OSTickISR()。

    OSStartHighRdy()代碼如下:

    LDR  r4, addr_OSTCBCur    
    ;獲得當(dāng)前任務(wù)TCB地址
    LDR  r5, addr_OSTCBHighRdy
    ;獲得優(yōu)先級最高任務(wù)TCB地址
    ……
    ;恢復(fù)CPU工作模式
    LDMFD  sp!, {r4}
    MSR   SPSR_cxsf, r4
    LDMFD  sp!, {r4}
    MSR   CPSR_cxsf, r4
    LDMFD  sp!, {r0-r12, lr, pc}

    OS_TASK_SW( )函數(shù)匯編代碼如下:

    STMFD  sp!,  {lr}  ;保存pc
    STMFD  sp!,  {lr}  ;保存lr
    STMFD  sp!,  {r0~r12}
    ;保存寄存器和返回地址
    …… 
    ;得到當(dāng)前任務(wù)TCB地址
    LDR  r4, addr_OSTCBCur
    LDR  r5, [r4]
    STR  sp, [r5]    
    ;保存sp在被占先任務(wù)的TCB
    ;得到最高優(yōu)先級任務(wù)的TCB地址
    LDR  r6, addr_OSTCBHighRdy
    LDR  r6, [r6]
    LDR  sp, [r6]    
    ;得到新任務(wù)堆棧指針
    ;OSTCBCur = OSTCBHighRdy
    STR  r6, [r4]    
    ;設(shè)置新的當(dāng)前任務(wù)的TCB地址
    ……

    OSIntCtxSw()函數(shù)匯編代碼如下:

    LDR  sp,=IRQ_STACK  
    SUB  r7, sp, #4  
    ;將處理器切換到管理模式
    MRS  r1, SPSR
    ORR  r1, r1, #0xC0
    MSR  CPSR_cxsf, r1  
    ;完成模式切換
    ……
    STMFD  sp!, {r4}    
    ;保存程序狀態(tài)寄存器
    ……
    OS_CPU_C.C需要用C語言編寫6個與操作系統(tǒng)相關(guān)的函數(shù):OSTaskStkInt(),OStaskCreateHooK(),OStaskDelHook(),OStaskSwHook(),OStaskStatHook(),  OSTimeTickHook()。必須編寫的是OSTaskStkInt(),其余5個函數(shù)必須聲明但可以不編寫代碼。

    void *OSTaskStkInit(void(*task)(void *pd),void *pdata, OS_STK *ptos, INT16U opt)
    { OS_STK *stk;
    opt = opt
    //防止編譯錯誤
    stk = ptos;   
    //裝載堆棧指針
    ……
    *--stk = (USER_USING_MODE|0x00);
    //spsr,允許IRQ,FIQ中斷
    *--stk = ();  
    //關(guān)中斷計數(shù)器OsEnterSum
     return (stk);
    }

    下來要做的就是LwIP在μC/OS-Ⅱ上的移植,即就是把與硬件、OS、編譯器相關(guān)的部分獨立出來放在/src/arch目錄下。LwIP在μC/OS-Ⅱ上的實現(xiàn)就是修改這個目錄下的文件,其它文件一般不做修改。首先要修改與CPU或編譯器相關(guān)的文件,如數(shù)據(jù)長度,字的高低位順序等要和用戶實現(xiàn)μC/OS-Ⅱ移植時定義的數(shù)據(jù)長度參數(shù)是一致的;然后要修改與操作系統(tǒng)相關(guān)的函數(shù)與數(shù)據(jù)結(jié)構(gòu);最后是庫函數(shù)的實現(xiàn),如u16_t htons();u16_t ntohs(); u32_t htonl();u32_t ntohl();int strlen(); int strncmp(); void bcopy(); void bzero(); 

    前4個函數(shù)由用戶自己實現(xiàn),而ADS編譯器中庫里面已經(jīng)有了后四個函數(shù)。用戶在其它CPU上實現(xiàn)時應(yīng)根據(jù)自己的編譯器來決定。

    LwIP在μC/OS-Ⅱ上的移植結(jié)束后,剩下的工作就是編寫應(yīng)用程序。將系統(tǒng)劃分成若干個任務(wù),每個任務(wù)對應(yīng)一個獨立的無限循環(huán)的主程序,完成一個特定的功能。系統(tǒng)任務(wù)優(yōu)先級的劃分是根據(jù)任務(wù)的重要性而定的,當(dāng)然還要考慮到系統(tǒng)的安全性因素。為簡化設(shè)計,應(yīng)用程序采用靜態(tài)優(yōu)先級,即應(yīng)用程序在執(zhí)行的過程中各個任務(wù)優(yōu)先級保持不變。系統(tǒng)的軟件架構(gòu)搭建好了以后,用C編寫各個任務(wù)就容易多了。主程序中關(guān)鍵代碼如下:

    #define  TASK_STK_SIZE    64  
    ;聲明任務(wù)堆棧
    OS_STK  TaskStartStk[TASK_STK_SIZE] 
    ;開始任務(wù)堆棧
    OS_STK  TaskWatchStk[TASK_STK_SIZE] 
    ;監(jiān)視任務(wù)堆棧
    ……
    void TaskWatch(void *data)    
    ;聲明監(jiān)視任務(wù)的函數(shù)原型
    ……
    void main(void)
    { OSInit() 
    /*初始化μC/OS-Ⅱ*/
    OSTaskCreate(TaskStart,(void*)0,& TaskStartStk[TASK_STK_SIZE-1],0);
    OSStart();
    /*開始多任務(wù)*/
    }
    void TaskStart(void *data)
    { data=data;
    /*防止編譯器錯誤*/
    ……}

    將主程序和μC/OS-Ⅱ中的系統(tǒng)文件放在同一工程下,進(jìn)行編譯即可。為了提高執(zhí)行效率,可以根據(jù)實際應(yīng)用修改μC/OS-Ⅱ的部分常用代碼,甚至剪切掉某些不必要的代碼。

    4、結(jié)束語

    基于嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的設(shè)計方案在硬件上簡潔可靠;軟件可維護(hù)性好,可擴展性好,有利于系統(tǒng)的后續(xù)開發(fā),降低了系統(tǒng)設(shè)計的復(fù)雜性。隨著嵌入式產(chǎn)品研究的深入,網(wǎng)絡(luò)接口芯片的研究也會快速發(fā)展,是智能化產(chǎn)品的設(shè)計更趨向簡單、標(biāo)準(zhǔn)、成熟。可以看出,嵌入式實時操作系統(tǒng)與網(wǎng)絡(luò)將會得到更大的發(fā)展和更廣闊的應(yīng)用。

 
免責(zé)聲明:
本站所提供的文章資訊、圖片、音頻、視頻來源于互聯(lián)網(wǎng)及公開渠道,僅供學(xué)習(xí)參考,版權(quán)歸原創(chuàng)者所有! 如有侵犯您的版權(quán),請通知我們,我們會遵循相關(guān)法律法規(guī)采取措施刪除相關(guān)內(nèi)容。


 
[ 技術(shù)前沿搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關(guān)閉窗口 ]

 
 
 
一周資訊排行
圖文推薦
 
 
 
 
安泽县| 西乌| 如皋市| 宁强县| 盐池县| 安化县| 平昌县| 开封县| 海宁市| 汉阴县| 娱乐| 黄山市| 岳阳市| 屏山县| 乌拉特中旗| 新蔡县| 阳新县| 泾源县| 炎陵县| 三穗县| 宁河县| 凤凰县| 五家渠市| 松溪县| 镇康县| 阿克陶县| 张掖市| 宜宾市| 丰都县| 武山县| 晋城| 西安市| 慈溪市| 定西市| 随州市| 潞城市| 博野县| 根河市| 丽江市| 云龙县| 商南县|