技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的設(shè)計(jì)

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

時(shí)間:2007-12-26 16:30:00來(lái)源:liujie

導(dǎo)語(yǔ):?近年來(lái),嵌入式實(shí)時(shí)操作系統(tǒng)接入網(wǎng)絡(luò)后將使遠(yuǎn)程監(jiān)測(cè)、遠(yuǎn)程控制、遠(yuǎn)程診斷和遠(yuǎn)程維護(hù)變得越來(lái)越容易。從根本上講,嵌入式設(shè)備接入網(wǎng)絡(luò),當(dāng)前基本上所采用的網(wǎng)絡(luò)協(xié)議是基于TCP/IP通信協(xié)議。
1、引言 近年來(lái),嵌入式實(shí)時(shí)操作系統(tǒng)接入網(wǎng)絡(luò)后將使遠(yuǎn)程監(jiān)測(cè)、遠(yuǎn)程控制、遠(yuǎn)程診斷和遠(yuǎn)程維護(hù)變得越來(lái)越容易。從根本上講,嵌入式設(shè)備接入網(wǎng)絡(luò),當(dāng)前基本上所采用的網(wǎng)絡(luò)協(xié)議是基于TCP/IP通信協(xié)議。 由于嵌入式系統(tǒng)是以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟硬件可裁減并對(duì)成本、體積、功耗有嚴(yán)格要求的專用系統(tǒng),它對(duì)TCP/IP通信協(xié)議的支持有其自身的特點(diǎn),這些特點(diǎn)也決定嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的體系結(jié)構(gòu)。 本方案以LPC2210為核心元件研究了嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的硬件電路,同時(shí)在μC/OS-Ⅱ平臺(tái)上編寫(xiě)了應(yīng)用軟件程序。 2、嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的系統(tǒng)整體結(jié)構(gòu) 嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的硬件原理圖如圖1所示。系統(tǒng)采用PHILIPS公司LPC2210微處理器,外擴(kuò)一片F(xiàn)LASH SST 39VF160,并接入RTL8019AS以太網(wǎng)芯片(Webchip),再與接口連接器HR901170A相連。并將開(kāi)放源代碼的TCP/IP協(xié)議棧 LwIP移植到μC/OS-Ⅱ系統(tǒng)上。
[/align]
圖1 硬件結(jié)構(gòu)原理圖
RTL8019AS以太網(wǎng)芯片(Webchip)是獨(dú)立于各種微控制器的專用網(wǎng)絡(luò)接口芯片,它通過(guò)標(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)。用戶可以通過(guò)DMA方式把需要發(fā)送的數(shù)據(jù)寫(xiě)入片內(nèi)SRAM中,讓芯片自動(dòng)將數(shù)據(jù)發(fā)送出去;而芯片接收到數(shù) 據(jù)后,用戶可以通過(guò)DMA方式將其讀出。 HR901170A是中山市漢仁電子有限公司生產(chǎn)的RJ45接口連接器(帶網(wǎng)絡(luò)變壓器/濾波器),該連接器滿足IEEE802.3和IEEE902.3ab標(biāo)準(zhǔn),能夠較好的抑制電磁干擾。通過(guò)HR901170A系統(tǒng)就可以連接到以太網(wǎng)上了。 該方案設(shè)計(jì)相對(duì)簡(jiǎn)單,硬件電路中采用的LPC2210是PHILIPS公司推出的微處理器,帶有16k RAM,76個(gè)通用I/O口,12個(gè)獨(dú)立外部中斷引腳,集成有8通道的10位A/D,能夠基于芯片設(shè)計(jì)復(fù)雜的系統(tǒng)。雖然LPC2210具有較快的訪問(wèn)速 度,但片內(nèi)沒(méi)有集成FLASH,所以這里擴(kuò)展一片16Mbit FLASH SST 39VF160保存用戶程序。其架構(gòu)滿足了μC/OS-Ⅱ正常運(yùn)行的基本要求。 3、嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的軟件設(shè)計(jì) 為使嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件具有交好的實(shí)時(shí)性和穩(wěn)定性,在實(shí)時(shí)多任務(wù)操作系統(tǒng)μC/OS-Ⅱ平臺(tái)上設(shè)計(jì)系統(tǒng)軟件。系統(tǒng)中各個(gè)任務(wù)在宏觀上按照一定的 關(guān)系并行工作,CPU資源得到充分利用,系統(tǒng)可靠性得到很大的保證,方便組織開(kāi)發(fā)任務(wù)。在μC/OS-Ⅱ平臺(tái)上,軟件設(shè)計(jì)工作主要包括三個(gè)方面的內(nèi)容: μC/OS-Ⅱ在LPC2210上的移植和LwIP協(xié)議在μC/OS-Ⅱ上的實(shí)現(xiàn)以及系統(tǒng)應(yīng)用軟件的編寫(xiě)。本設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)圖如圖2所示:
圖2 系統(tǒng)結(jié)構(gòu)圖
該系統(tǒng)采用源碼公開(kāi)的嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ,版本號(hào)為V2.52。其特點(diǎn)是源碼公開(kāi)、可讀性強(qiáng)、移植性好、可配置、可裁剪。它采用優(yōu)先級(jí)搶占 式調(diào)度方案,優(yōu)先級(jí)最高的任務(wù)一旦準(zhǔn)備就緒,則擁有CPU的所有權(quán)并開(kāi)始投入運(yùn)行。μC/OS-Ⅱ的軟硬件體系結(jié)構(gòu)圖如圖3所示。應(yīng)用程序建立在操作系統(tǒng) 之上,處于系統(tǒng)的頂層,每個(gè)任務(wù)在宏觀上是并行運(yùn)行。與CPU類型無(wú)關(guān)的代碼提供了系統(tǒng)服務(wù),即內(nèi)核、任務(wù)管理、內(nèi)存管理等。μC/OS-Ⅱ的移植部分用 于完成與不同處理器的接口工作。μC/OS-Ⅱ的移植必須要求處理器及其編譯器滿足一定的條件。
圖3 μC/OS-Ⅱ硬件和軟件體系結(jié)構(gòu)原理圖
μC/OS-Ⅱ的移植工作主要集中在下面幾個(gè)文中: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來(lái)設(shè)置堆棧的增長(zhǎng)方向。因此將 OS_STK_GROWTH設(shè)為1。 OS_CPU_A.ASM中需要編寫(xiě)4個(gè)匯編語(yǔ)言函數(shù):OS_TASK_SW(),OS_IntCtxSw(),OSStartHighRdy()和OSTickISR()。 OSStartHighRdy()代碼如下: LDR r4, addr_OSTCBCur ;獲得當(dāng)前任務(wù)TCB地址 LDR r5, addr_OSTCBHighRdy ;獲得優(yōu)先級(jí)最高任務(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)先級(jí)任務(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語(yǔ)言編寫(xiě)6個(gè)與操作系統(tǒng)相關(guān)的函數(shù):OSTaskStkInt(),OStaskCreateHooK(), OStaskDelHook(),OStaskSwHook(),OStaskStatHook(), OSTimeTickHook()。必須編寫(xiě)的是OSTaskStkInt(),其余5個(gè)函數(shù)必須聲明但可以不編寫(xiě)代碼。 void *OSTaskStkInit(void(*task)(void *pd),void *pdata, OS_STK *ptos, INT16U opt) { OS_STK *stk; opt = opt //防止編譯錯(cuò)誤 stk = ptos; //裝載堆棧指針 …… *——stk = (USER_USING_MODE|0x00); //spsr,允許IRQ,F(xiàn)IQ中斷 *——stk = (); //關(guān)中斷計(jì)數(shù)器OsEnterSum return (stk); } 下來(lái)要做的就是LwIP在μC/OS-Ⅱ上的移植,即就是把與硬件、OS、編譯器相關(guān)的部分獨(dú)立出來(lái)放在/src/arch目錄下。LwIP在μC/OS -Ⅱ上的實(shí)現(xiàn)就是修改這個(gè)目錄下的文件,其它文件一般不做修改。首先要修改與CPU或編譯器相關(guān)的文件,如數(shù)據(jù)長(zhǎng)度,字的高低位順序等要和用戶實(shí)現(xiàn) μC/OS-Ⅱ移植時(shí)定義的數(shù)據(jù)長(zhǎng)度參數(shù)是一致的;然后要修改與操作系統(tǒng)相關(guān)的函數(shù)與數(shù)據(jù)結(jié)構(gòu);最后是庫(kù)函數(shù)的實(shí)現(xiàn),如u16_t htons();u16_t ntohs();u32_t htonl();u32_t ntohl();int strlen(); int strncmp(); void bcopy();void bzero(); 前4個(gè)函數(shù)由用戶自己實(shí)現(xiàn),而ADS編譯器中庫(kù)里面已經(jīng)有了后四個(gè)函數(shù)。用戶在其它CPU上實(shí)現(xiàn)時(shí)應(yīng)根據(jù)自己的編譯器來(lái)決定。 LwIP在μC/OS-Ⅱ上的移植結(jié)束后,剩下的工作就是編寫(xiě)應(yīng)用程序。將系統(tǒng)劃分成若干個(gè)任務(wù),每個(gè)任務(wù)對(duì)應(yīng)一個(gè)獨(dú)立的無(wú)限循環(huán)的主程序,完成一個(gè)特定 的功能。系統(tǒng)任務(wù)優(yōu)先級(jí)的劃分是根據(jù)任務(wù)的重要性而定的,當(dāng)然還要考慮到系統(tǒng)的安全性因素。為簡(jiǎn)化設(shè)計(jì),應(yīng)用程序采用靜態(tài)優(yōu)先級(jí),即應(yīng)用程序在執(zhí)行的過(guò)程 中各個(gè)任務(wù)優(yōu)先級(jí)保持不變。系統(tǒng)的軟件架構(gòu)搭建好了以后,用C編寫(xiě)各個(gè)任務(wù)就容易多了。主程序中關(guān)鍵代碼如下: #define TASK_STK_SIZE 64 ;聲明任務(wù)堆棧 OS_STK TaskStartStk[TASK_STK_SIZE] ;開(kāi)始任務(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(); /*開(kāi)始多任務(wù)*/ } void TaskStart(void *data) { data=data; /*防止編譯器錯(cuò)誤*/ ……} 將主程序和μC/OS-Ⅱ中的系統(tǒng)文件放在同一工程下,進(jìn)行編譯即可。為了提高執(zhí)行效率,可以根據(jù)實(shí)際應(yīng)用修改μC/OS-Ⅱ的部分常用代碼,甚至剪切掉某些不必要的代碼。 4、結(jié)束語(yǔ) 基于嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的設(shè)計(jì)方案在硬件上簡(jiǎn)潔可靠;軟件可維護(hù)性好,可擴(kuò)展性好,有利于系統(tǒng)的后續(xù)開(kāi)發(fā),降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性。隨著嵌入式 產(chǎn)品研究的深入,網(wǎng)絡(luò)接口芯片的研究也會(huì)快速發(fā)展,是智能化產(chǎn)品的設(shè)計(jì)更趨向簡(jiǎn)單、標(biāo)準(zhǔn)、成熟。可以看出,嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)將會(huì)得到更大的發(fā)展和 更廣闊的應(yīng)用。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于嵌入式Linux的BACnet控制...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)