<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于A(yíng)VR單片機的多任務(wù)嵌入式Internet系統設計

基于A(yíng)VR單片機的多任務(wù)嵌入式Internet系統設計

——
作者:魏強 李欣 時(shí)間:2006-10-17 來(lái)源:微計算機信息 收藏

1 引言

目前,已經(jīng)廣泛滲透到人們的工作、生活中。從家用電器、信息終端、手持通信設備到儀器儀表、制造工業(yè)、過(guò)程控制等領(lǐng)域,嵌入式設備已隨處可見(jiàn)。另一方面,近幾年來(lái)Internet技術(shù)的飛速發(fā)展給嵌入式應用帶來(lái)了新的契機,在未來(lái)中應用Internet技術(shù)具有很大的優(yōu)勢。

目前嵌入式Internet技術(shù)的實(shí)現主要有下面三種方式  :

第一種方式是技術(shù),采用支持協(xié)議的高性能服務(wù)器作為網(wǎng)關(guān)(emGateway), 嵌入式設備通過(guò)RS-232、RS-485或者CAN總線(xiàn)等與網(wǎng)關(guān)服務(wù)器連接,間接通過(guò)服務(wù)器網(wǎng)關(guān)連接Internet。經(jīng)過(guò)多年的發(fā)展技術(shù)已經(jīng)在工業(yè)設備的化中得到了廣泛的應用。但該技術(shù)也存在著(zhù)以下的缺點(diǎn):由于需要使用高性能的網(wǎng)關(guān)服務(wù)器,再加上emGateway網(wǎng)關(guān)的使用需要繳納相應的版稅,從而使得成本很高;而且網(wǎng)關(guān)和設備之間需要專(zhuān)門(mén)布線(xiàn),在嵌入式設備比較分散的情況下極為不便,通信的距離、速度都受到一定的限制。

第二種方式是采用硬件協(xié)議棧芯片進(jìn)行連接,比如Seiko公司的S7600,嵌入式MCU通過(guò)接口對其進(jìn)行控制以達到Internet通信的目的,這時(shí)軟件只需要增加一段和協(xié)議棧芯片通信的接口程序即可,因此開(kāi)發(fā)難度小、周期短。其缺點(diǎn)是系統的硬件成本非常高,而且由于使用的是硬件協(xié)議棧,擴展不靈活。

第三種方式是在嵌入式MCU上用軟件實(shí)現協(xié)議棧,然后通過(guò)接口芯片連接Internet。在這種方式中由于使用了軟件協(xié)議棧使得嵌入式MCU本身具有了Internet通信能力,從而省去了高性能網(wǎng)關(guān)和硬件協(xié)議棧芯片,因此成本非常低,而且擴展起來(lái)非常方便靈活,再配上小型嵌入式實(shí)時(shí)操作系統的支持,就可以實(shí)現性?xún)r(jià)比很高的嵌入式多任務(wù)Internet平臺。但是要在資源有限的16位甚至8位上實(shí)現復雜的操作系統和網(wǎng)絡(luò )協(xié)議棧有一定難度,但近年來(lái)隨著(zhù)處理速度的不斷提高和內部資源的不斷擴展,再加上小型的實(shí)時(shí)操作系統和網(wǎng)絡(luò )協(xié)議棧的相繼推出,使得利用來(lái)實(shí)現低成本嵌入式多任務(wù)網(wǎng)絡(luò )平臺成為可能。

基于以上背景,本文就來(lái)介紹應用在研究課題“低碼率視頻信號的網(wǎng)絡(luò )傳輸”系統中的一種基于A(yíng)VR單片機的多任務(wù)嵌入式網(wǎng)絡(luò )系統軟硬件平臺的設計。

2 硬件平臺設計

考慮到以太網(wǎng)接入方式技術(shù)成熟、可靠性高、通信速度快和成本低的優(yōu)點(diǎn),本系統的硬件平臺采用單片機加以太網(wǎng)接口控制芯片組成。由于操作系統和協(xié)議棧需要用到大量的數據存儲器,因此需要外擴RAM存儲器。為了提高通信性能,單片機與以太網(wǎng)接口芯片之間采用并行總線(xiàn)擴展方式進(jìn)行連接,接口芯片和外部的RAM存儲器統一編址。本系統采用了可編程GAL器件ATF16V8進(jìn)行地址譯碼,這樣不僅可以充分利用地址資源,而且只需要修改ATF16V8的源程序即可實(shí)現地址的改變,提高了系統的擴展能力。系統的硬件平臺的原理框圖如圖1所示。

硬件平臺系統框圖

                                      圖1:硬件平臺系統框圖
 
單片機選用高性能的AVR單片機ATmega128。AVR是ATMEL公司結合了成熟的51系列和PIC系列單片機的優(yōu)點(diǎn)而推出的高性能8位單片機,具有以下特點(diǎn)  :

性?xún)r(jià)比高: AVR單片機內部集成了8路10位的ADC、PWM、E2PROM、WDT、RTC等,具有了片上系統(SOC)的雛形,大幅度降低了系統的整體體積和成本。  速度快:AVR單片機采用了先進(jìn)的RISC體系架構,大多數指令可以在一個(gè)時(shí)鐘周期內完成,理論上速度可以達到1MIPS/MHz。而且具有只需要兩個(gè)時(shí)鐘周期的硬件乘法器。

接口豐富:AVR單片機除可以進(jìn)行并行擴展外,還具有USART、SPI和I2C串行總線(xiàn)。

ISP&IAP:其內部的可擦寫(xiě)FLASH存儲器不僅可以進(jìn)行在線(xiàn)下載,而且具有片上的BOOT程序實(shí)現在應用可編程,真正實(shí)現同時(shí)讀寫(xiě)操作。

開(kāi)發(fā)方便:AVR是第一款真正為C語(yǔ)言開(kāi)發(fā)設計的單片機,具有多種編譯器。而且具有JTAG接口,可以進(jìn)行在線(xiàn)調試。

低功耗:AVR單片機具有六種睡眠模式,可以最大程度的降低系統的功耗。

以太網(wǎng)接口控制芯片采用Realtek公司生產(chǎn)的以太網(wǎng)接口控制器RTL8019AS  ,其10M處理能力對于本課題需要的碼率為4Mbps視頻流的網(wǎng)絡(luò )傳輸來(lái)說(shuō)完全滿(mǎn)足要求。另外8019AS片內集成了16KByte的RAM用作發(fā)送和接收的緩沖區,對其訪(fǎng)問(wèn)可以使用遠程DMA方式,從而大幅提高接口的通信能力。需要注意的是,由于A(yíng)Tmega128數據總線(xiàn)是8位,RTL8019AS的IOCS16B引腳應當下拉接地以選擇8位總線(xiàn)方式,而且JP引腳要接高電平以選擇跳線(xiàn)模式。

地址譯碼采用的是ATF16V8,具體是把MCU地址線(xiàn)的高8位作為16V8的譯碼輸入,16V8的3位輸出作為譯碼片選輸出:低端RAM(32KB)、高端RAM(32KB)和8019AS的片選。由于8019AS的地址空間僅需要32Byte,而且與高端RAM的地址重疊,為了給RAM分配盡可能多的地址空間,為8019AS分配頂部的256Byte,而把剩余的地址空間全部分配給RAM。上述譯碼的CUPL描述如下:

CS_RAM_L = ! A15;

CS_RAM_H = A15 & ! (A14 & A13 & A12 & A11 & A10 & A9 & A8);

CS_8019 = A15 & A14 & A13 & A12 & A11 & A10 & A9 & A8;

3 操作系統移植 

uC/OS-II是一個(gè)專(zhuān)門(mén)為中小型嵌入式應用設計的搶占式的實(shí)時(shí)操作系統內核,具有源代碼公開(kāi)、移植性好、可裁減、可固化、實(shí)時(shí)性和安全穩定性高的特點(diǎn)  ,非常適合本系統的應用。uC/OS-II的系統框圖如圖2所示。

uC/OS-II與硬件平臺無(wú)關(guān)的代碼文件:UCOS_CORE.C、UCOS_II.C等
 
uC/OS-II配置代碼文件:INCLUDES.H 、OS_CFG.H
 
 
 
                     uc/os-ii的系統框圖
                                            圖2:uC/OS-II的系統框圖
 


uC/OS-II

在設計之初就充分考慮了移植性,移植起來(lái)非常方便。從圖2可以看出,與移植有關(guān)的只有3個(gè)文件:OS_CPU.H,OS_CPU_C.C和OS_CPU_A.S。

第1個(gè)文件是OS_CPU.H,其中主要定義了一些與編譯器有關(guān)的數據類(lèi)型、堆棧的生長(cháng)方向、臨界代碼區的保護方式。需要說(shuō)明的是uC/OS-II中臨界代碼區的保護方式有3種,本設計采用第3種,即在進(jìn)入臨界區之前把CPU狀態(tài)寄存器SREG的內容保存到一個(gè)局部變量cpu_sr中,在退出臨界區之后再還原SREG,這樣做的好處是臨界區保護不會(huì )對SREG產(chǎn)生影響。其中SREG的保存和返回函數必須由匯編語(yǔ)言來(lái)寫(xiě),放在OS_CPU_A.S文件中。

第2個(gè)文件OS_CPU_C.C中主要是任務(wù)堆棧初始化函數OSTaskStkInit(),任務(wù)創(chuàng )建時(shí)調用此函數來(lái)初始化任務(wù)的堆棧結構。該函數一開(kāi)始把傳入的任務(wù)函數的指針存放到硬件堆棧的棧頂,看上去就像該函數在執行過(guò)程中發(fā)生了中斷一樣(低字節在先),這樣返回后就可以從新的任務(wù)開(kāi)始執行了。需要特別注意的是,在這個(gè)函數中必須把CPU狀態(tài)寄存器SREG的值設為0x80,也就是全局中斷使能,否則系統將崩潰。

最后一個(gè)文件OS_CPU_A.S是一個(gè)匯編源文件,主要定義了6個(gè)匯編函數。首先是臨界區保護用到的SREG保存和恢復函數。然后定義的是OSStartHighRdy()函數,它只在系統啟動(dòng)時(shí)由OSStart()函數調用一次,所做的工作主要是讓系統從最高優(yōu)先級的任務(wù)開(kāi)始執行,實(shí)現的方法和后面要介紹的OSCtxSw()函數相似。OSCtxSw()函數實(shí)現的是任務(wù)級的切換,首先把當前的任務(wù)的狀態(tài)保存到其任務(wù)控制塊TCB中,然后把當前優(yōu)先級最高的任務(wù)的TCB中的內容加載到工作寄存器中,這樣函數返回后就可以從此任務(wù)開(kāi)始執行了。接下來(lái)的OSIntCtxSw()函數實(shí)現的是中斷級的任務(wù)切換,它和OSCtxSw()函數的唯一不同是它是在中斷中調用的,因此不需要保存工作寄存器的內容,剩下的和任務(wù)級的切換過(guò)程完全一樣。最后一個(gè)定義的是節拍時(shí)鐘的中斷服務(wù)子程序,在這個(gè)函數中的開(kāi)始要令中斷欠套全局變量加1,并且調用時(shí)鐘管理函數OSTimeTick(),中斷退出時(shí)調用系統提供的中斷退出函數OSIntExit()。

4 網(wǎng)絡(luò )平臺設計

LwIP是一套專(zhuān)門(mén)為設計的源碼開(kāi)放的輕型協(xié)議棧,最新版本是LwIP1.1.0。LwIP在保持協(xié)議基本要求的前提下,通過(guò)層與層之間共享內存,避免了許多繁瑣的復制處理,這樣做雖然破壞了嚴格的分層思想,但卻大幅度地節省了代碼和數據存儲空間,因此非常適合嵌入式應用。與其他輕型協(xié)議棧不同的是,LwIP不僅支持一般的網(wǎng)絡(luò )協(xié)議,比如UDP協(xié)議、DHCP協(xié)議、PPP協(xié)議等,而且還支持多網(wǎng)絡(luò )接口、IPv6和標準API  。

                        lwip運行機制

                                      圖3:LwIP運行機制

4.1 LwIP在uC/OS-II上的移植

針對uC/OS-II和AVR的ICC編譯器,LwIP的移植只需要編寫(xiě)arch文件夾下的3個(gè)文件——cc.h、sys_arch.h和sys_arch.c。其中cc.h中有與CPU和編譯器有關(guān)的定義,包括數據結構和大小端存儲方式等。其中關(guān)鍵代碼區的保護用uC/OS-II中的相應函數替換一下即可。剩下的兩個(gè)與操作系統有關(guān)的文件是移植工作的重點(diǎn)。

為了增強移植性,LwIP專(zhuān)門(mén)把和操作系統有關(guān)的數據結構和函數放在一起組成操作系統封裝層,為諸如定時(shí)、進(jìn)程同步和消息傳遞等操作系統服務(wù)提供統一的接口,移植時(shí)僅需針對不同的操作系統來(lái)實(shí)現特定的操作系統封裝層,這些是由sys_arch.h和sys_arch.c實(shí)現的。其中sys_arch.h主要定義與操作系統相關(guān)的數據結構——信號量、郵箱和進(jìn)程號,這些在uC/OS-II中都有對應的實(shí)體,要注意的是LwIP中的郵箱對應于uC/OS-II中的消息隊列。

sys_arch.c中要實(shí)現和操作系統有關(guān)函數的定義,包括系統的初始化以及信號和郵箱的操作——創(chuàng )建、刪除、投遞和等待,這些功能只需要用uC/OS-II中相應的函數進(jìn)行重新封裝即可。另外,TCP/IP協(xié)議棧中需要許多定時(shí)器的功能,這在LwIP中是用sys_timeout結構體隊列和相應的函數實(shí)現的  。每個(gè)sys_timeout結構體包括本線(xiàn)程的timeout時(shí)間長(cháng)度,以及超時(shí)后的回調處理函數

。sys_arch.c中sys_arch_timeouts()函數的功能就是返回當前進(jìn)程所對應的sys_timeout結構體隊列的頭指針。本系統用的方法是在系統初始化的時(shí)候根據最大的LwIP進(jìn)程數創(chuàng )建一個(gè)sys_timeout結構體指針的數組,以后每創(chuàng )建一個(gè)LwIP進(jìn)程其優(yōu)先級都從一個(gè)連續的已知區間進(jìn)行分配,sys_arch_timeouts()函數通過(guò)調用OSTaskQuery()函數獲得進(jìn)程的優(yōu)先級進(jìn)而獲得對應的sys_timeout結構體隊列的頭指針。

4.2 RTL8019AS驅動(dòng)程序的編寫(xiě)

RTL8019AS驅動(dòng)程序做的工作主要是8019AS的初始化、發(fā)送和接收以太網(wǎng)數據包。

初始化函數rtl8019_init()是在添加以太網(wǎng)絡(luò )接口時(shí)由netif_add()函數調用,調用過(guò)程中首先初始化此接口對應的全局網(wǎng)絡(luò )接口結構體,然后設置8019AS的各功能寄存器  。初始化完8019AS之后調用arp_init()函數啟動(dòng)ARP功能,然后用sys_timeout()函數啟動(dòng)ARP緩沖列表生命周期的定時(shí)器。

數據包的發(fā)送首先從ARP緩沖隊列中查找目的MAC地址,然后構造以太網(wǎng)數據幀的頭部,最后調用底層的發(fā)送函數low_level_output()將數據幀發(fā)送出去。如果找不到對應的IP/MAC項,發(fā)送ARP請求數據幀。數據包的接收由中斷處理函數rtl8019_ISR()調用,它的執行過(guò)程是先調用最底層的接收函數low_level_input()從8019AS中接收數據幀,如果接收的是IP數據包,則更新ARP緩沖隊列并把數據包傳給網(wǎng)絡(luò )接口結構指定的函數進(jìn)行處理。如果接收的是ARP數據包,則調用etharp_arp_input()函數處理。為了提高性能,最底層的接收發(fā)送函數采用的都是8019AS的遠程DMA工作方式  。

5 總結

嵌入式設備與Internet的結合代表著(zhù)嵌入式系統的未來(lái)發(fā)展方向,目前已有不少科研機構和公司紛紛加入了嵌入式Internet技術(shù)的研究行列。在這種背景之下,本文設計了一種基于8位AVR單片機的多任務(wù)嵌入式Internet系統平臺,并且已經(jīng)應用在研究課題“低碼率視頻信號的網(wǎng)絡(luò )傳輸”系統中,對于嵌入式Internet技術(shù)的推廣應用具有參考意義。本文作者創(chuàng )新點(diǎn):將實(shí)時(shí)嵌入式操作系統和輕型TCP/IP協(xié)議棧結合起來(lái),應用在8位AVR單片機上,實(shí)現了低成本的多任務(wù)嵌入式網(wǎng)絡(luò )系統平臺。

tcp/ip相關(guān)文章:tcp/ip是什么




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>