當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于AVR單片機(jī)多任務(wù)嵌入式Internet系統(tǒng)設(shè)計(jì)

1 引言

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

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

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

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

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

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

2 硬件平臺(tái)設(shè)計(jì)

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

硬件平臺(tái)系統(tǒng)框圖

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

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

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

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

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

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

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

    地址譯碼采用的是ATF16V8,具體是把MCU地址線的高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 操作系統(tǒng)移植 

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

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


uC/OS-II

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

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

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

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

4 網(wǎng)絡(luò)平臺(tái)設(shè)計(jì)

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

                        lwip運(yùn)行機(jī)制

                                      圖3:LwIP運(yùn)行機(jī)制

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

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

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

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

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

4.2 RTL8019AS驅(qū)動(dòng)程序的編寫

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

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

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

5 總結(jié)

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉