0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ElanSC520微控制器和Linux操作系統(tǒng)的ADSL網(wǎng)關(guān)研究

電子設(shè)計(jì) ? 來源:計(jì)算機(jī)系統(tǒng)應(yīng)用 ? 作者:鐘曉建,潘貴敦, ? 2021-05-23 12:39 ? 次閱讀

作者:鐘曉建,潘貴敦,梁小宇

引言

隨著互聯(lián)網(wǎng)上的內(nèi)容越來越豐富多彩,人們對(duì)傳輸帶寬的需求也逐漸增大,傳統(tǒng)Modem的56K帶寬日益顯得不堪重負(fù)。如何充分有效利用現(xiàn)有的電話線資源來獲得足夠的帶寬呢? ADSL(不對(duì)稱數(shù)字用戶環(huán)路)是一個(gè)很好的答案。ADSL技術(shù)利用電話線上高于話音頻帶的帶寬(4K~1.1MHz),采用離散多音頻調(diào)制技術(shù)來調(diào)制高速數(shù)字信號(hào)(傳統(tǒng)的Modem是用話音頻帶來調(diào)制數(shù)字信號(hào)),下行速率可達(dá)8Mbit/s,上行可達(dá)1.5Mbit/s。隨著超大規(guī)模集成電路VLSI)和數(shù)字信號(hào)處理(DSP)技術(shù)的不斷進(jìn)步,DSL技術(shù)也不斷趨于成熟。ADSL完成A/D、D/A變換,采用FFT/IFFT作DMT和卷積編碼調(diào)制,既實(shí)現(xiàn)了高帶寬利用率,又保證了傳輸?shù)牡驼`碼特性。我們所設(shè)計(jì)的ADSL網(wǎng)關(guān)采用Itex的Apollo 3 ADSL PCI解決方案作Internet的接入部分,另一側(cè)用以太網(wǎng)或無線局域網(wǎng)接多用戶,接口為RJ-45和無線訪問點(diǎn)(AP)天線,提供了靈活方便的組網(wǎng)方式,可以廣泛應(yīng)用于家庭、小型辦公室的接入。在軟件上,我們采用根據(jù)硬件結(jié)構(gòu)來定制Linux內(nèi)核的方法,整合了必要的驅(qū)動(dòng)模塊來作網(wǎng)關(guān)的操作系統(tǒng),不僅完成對(duì)ADSL接入模塊、以太網(wǎng)模塊以及無線局域網(wǎng)(WLAN)無線接入點(diǎn)AP模塊的驅(qū)動(dòng),還提供DHCP、SNMP以及IP防火墻等應(yīng)用功能。

一、 硬件體系結(jié)構(gòu)

1.AMD微控制器總體構(gòu)架

AMD公司推出的ElanSC520功能強(qiáng)大,適用于在嵌入式環(huán)境下用作協(xié)議處理器網(wǎng)絡(luò)處理器,兼容PC/AT,支持32位PCI外部總線,而且其傳輸?shù)牡脱舆t和低價(jià)位使其獲得了廣泛的應(yīng)用。ElanSC520集成了一個(gè)工業(yè)級(jí)的X86處理器,從而為與X86結(jié)構(gòu)適配的軟件提供了良好的接口和易移植性,支持包括Linux和Windows在內(nèi)的多種操作系統(tǒng),內(nèi)建的高速PCI總線接口符合PCI V2.2規(guī)范,可擴(kuò)展1~5個(gè)PCI總線設(shè)備,通過其內(nèi)部的PCI總線仲裁機(jī)制來決定與哪一個(gè)PCI設(shè)備進(jìn)行相互通信。PCI總線的最高傳輸速率可達(dá)132MB/s。在ADSL網(wǎng)關(guān)設(shè)備的設(shè)計(jì)中,我們使用了三個(gè)PCI總線設(shè)備,這三個(gè)總線設(shè)備共享PCI總線與ElanSC520進(jìn)行通信。ElanSC520微控制器還帶有高性能的SDRAMROM/Flash接口,同時(shí)還有用于配置和調(diào)試的UART串行接口,可以接模擬終端?;贏TM的ADSL網(wǎng)關(guān)的硬件體系結(jié)構(gòu)如圖1所示:

圖1:ADSL硬件體系結(jié)構(gòu)

2. ADSL接入設(shè)備

ADSL接入端采用Itex的Apollo 3的PCI解決方案,其芯片組包括線路驅(qū)動(dòng)、模擬前端和數(shù)字收發(fā)器,完成對(duì)電話線路上信號(hào)的發(fā)送和接收濾波、放大、A/D和D/A轉(zhuǎn)換、FFT/IFFT等數(shù)字信號(hào)處理,并通過PCI總線與ElanSC520進(jìn)行通信。該組芯片將PCI到UTOPIA(標(biāo)準(zhǔn)信元接口)的轉(zhuǎn)換功能集成到DMT收發(fā)器和ATM的成幀器中,將線路接收器集成到模擬前端中。由于控制由主處理器完成,Apollo3不需要額外的存儲(chǔ)設(shè)備和控制器,使板上的控制需求減少到最小,從而大大降低了功耗。該芯片組符合以下協(xié)議標(biāo)準(zhǔn):G.992.1(G.DMT), G.992.2(G.LITE), G.994(G.HS), T1.413 Issue 2(1998)

其結(jié)構(gòu)如圖2所示:

圖2:ADSL線路接入端結(jié)構(gòu)

信號(hào)由RJ-11電話線接口進(jìn)來,收端通過接收濾波器送到接收部分進(jìn)行濾波、信號(hào)放大,經(jīng)A/D變換,F(xiàn)FT解調(diào),送往處理器進(jìn)行處理;而在發(fā)端,由處理器出來的數(shù)字信號(hào)經(jīng)過IFFT進(jìn)行DMT調(diào)制,再經(jīng)過線路驅(qū)動(dòng)模塊,濾波后發(fā)送到電話線路上進(jìn)行傳輸。

3.以太網(wǎng)接口

以太網(wǎng)采用的是Realtek 的RLT8029AS芯片,與NE2000兼容,符合標(biāo)準(zhǔn)的802.3CSMA/CD協(xié)議規(guī)范。其全雙工特性允許同時(shí)發(fā)送和接收,集成了曼徹斯特編解碼器,可以用于無盤工作站。

4.WLAN_AP接口

為了方便筆記本電腦共享電話線上網(wǎng),我們?cè)谟脩舳诉€提供了WLAN_AP接口,可以方便的進(jìn)行無線局域網(wǎng)的組網(wǎng),在這里我們使用了TI公司的PCI1410A橋芯片將PCI信號(hào)轉(zhuǎn)為PCMCIA信號(hào),接無線網(wǎng)卡,將數(shù)據(jù)包封裝為符合IEEE802.11b協(xié)議的幀進(jìn)行傳輸。

二、 軟件體系結(jié)構(gòu)

由于Linux操作系統(tǒng)的穩(wěn)定性、開放性以及可擴(kuò)展性,使它在嵌入式系統(tǒng)中獲得較為廣泛的應(yīng)用,然而由于Linux允許非搶先式操作,使其不可能成為完全的實(shí)時(shí)系統(tǒng),最多只能算是在統(tǒng)計(jì)意義上的實(shí)時(shí)。在ADSL網(wǎng)關(guān)的設(shè)計(jì)中我們可以將實(shí)時(shí)的信號(hào)賦予很高的優(yōu)先級(jí),從而保證在整體上公平地進(jìn)行進(jìn)程調(diào)度。

構(gòu)建嵌入式操作系統(tǒng),我們首先考慮到在一個(gè)嵌入式的應(yīng)用環(huán)境下既沒有多少內(nèi)存也沒有多少外存可用,操作系統(tǒng)必須存放在有限的存儲(chǔ)器Flash中,所以我們必須根據(jù)硬件的構(gòu)架來定制我們需要的Linux內(nèi)核。由于ADSL接入端是基于ATM的,我們要為內(nèi)核加上對(duì)PPP over ATM的patch(補(bǔ)?。瑢?duì)于在ATM基礎(chǔ)上支持Internet,實(shí)際上可以歸結(jié)為在ATM上如何支持TCP/IP的問題,即ATM如何承載IP包的問題。在ADSL網(wǎng)關(guān)應(yīng)用中,要共享ADSL線路接入Internet,遵循的是點(diǎn)到點(diǎn)協(xié)議,因此ADSL接入端的驅(qū)動(dòng)程序?qū)嶋H上是一個(gè)PPP over ATM的模塊,它將作為內(nèi)核的一個(gè)可載入模塊進(jìn)行進(jìn)程調(diào)用,而以太網(wǎng)驅(qū)動(dòng)程序和WLAN_AP的驅(qū)動(dòng)程序是實(shí)現(xiàn)在以太網(wǎng)和無線介質(zhì)里傳送IP包的,即分別用802.3和802.11的幀格式來封裝IP包,這樣ADSL網(wǎng)關(guān)的協(xié)議棧就如圖3所示。

圖3:ADSL網(wǎng)關(guān)的協(xié)議棧

在圖3中,AAL5是ATM適配層,RFC1483是ATM適配層第五類型的多協(xié)議封裝規(guī)范,描述了在ATM端系統(tǒng)中怎樣在主機(jī)、橋設(shè)備和路由設(shè)備之間承載多協(xié)議業(yè)務(wù)。在ADSL網(wǎng)關(guān)中,根據(jù)ITU的協(xié)議規(guī)范,信號(hào)經(jīng)過一系列變換以ATM信元的形式輸出,因此我們要在ATM適配層的基礎(chǔ)上將信號(hào)變成上層協(xié)議能夠識(shí)別的包,從而決定該包是否轉(zhuǎn)發(fā),丟棄或者接收。根據(jù)RFC1483協(xié)議,有兩種多協(xié)議封裝的形式,一種是LLC封裝多協(xié)議,即LLC-SNAP模式,在同一個(gè)VC上承載多協(xié)議,協(xié)議類型包含在LLC頭中,另一種是VC-MUX模式,不同的協(xié)議使用不同的VC,則不需要在協(xié)議頭中指明協(xié)議類型,而具體哪一個(gè)VC承載哪一種協(xié)議則是在鏈路初始化的時(shí)候確定,這種方法降低了鏈路開銷,但在虛擬連接數(shù)量有限的情況下多數(shù)還是使用LLC復(fù)用。實(shí)現(xiàn)這個(gè)功能是通過在Linux內(nèi)核中加載PPPOA模塊來實(shí)現(xiàn)的。

PPP包中包括三種類型的信息

* Link Control Protocol(LCP) 用來協(xié)商鏈路參數(shù),包的大小,以及認(rèn)證類型

* Network Control Protocol(NCP) 指明高層協(xié)議的信息,可以是IP、IPX及其控制協(xié)議。

* 數(shù)據(jù)幀

ADSL遵循的協(xié)議是基于ATM的,也就是在物理層是在電話線上調(diào)制高速數(shù)據(jù)信號(hào),RS編碼,擾碼等一些物理層的協(xié)議,在物理層以上是以ATM信元格式輸出的,而對(duì)于ADSL網(wǎng)關(guān)來說,PPP over ATM Adaption Layer 5(AAL5) RFC2364是用AAL5作為成幀協(xié)議,支持PVC,SVC, PPPOA是ADSL協(xié)議棧的基本部分,它依賴于RFC1483,工作在LLC-SNAP或VC-MUX模式下,用戶端設(shè)備(CPE)封裝PPP包的過程就是以PPPOA協(xié)議來進(jìn)行ADSL環(huán)路和DSLAM上傳輸數(shù)據(jù)的。AAL5的公共部分匯集子層(CPCS)的協(xié)議數(shù)據(jù)單元如圖4所示:

其中CPCS-PDU Payload部分是AAL5協(xié)議的數(shù)據(jù)部分,最大為216-1個(gè)字節(jié),這是因?yàn)樵谙旅娴亩止?jié)的LENGTH域中限定的。PAD中有48個(gè)字節(jié),剛好為一個(gè)信元的數(shù)據(jù)域,由SAR(分段重組)子層生成,CPI域是為了使CPCS-PDU TRAILER成64位而填補(bǔ)上去的,CRC采用32位的循環(huán)冗余校驗(yàn)碼。

在我們的ADSL網(wǎng)關(guān)設(shè)計(jì)中,考慮到有限的虛擬連接的數(shù)量,我們采用的是LLC封裝多協(xié)議的模式,即LLC-SNAP模式,其CPCS-PDU Payload域如圖4所示。包括:

* LLC頭:3字節(jié),其中兩個(gè)字節(jié)指定了一個(gè)目的SAP(0xFE)和源SAP(0xFE),后面是幀類型,為Un-numbered Information=0x03

* Network Layer protocol Identifier(NLPID),這里使用的是PPP,其類型值為0xCF

* PPP協(xié)議標(biāo)識(shí)域?yàn)橐缓投止?jié)

* PPP信息域

* PPP填充域

對(duì)于局域網(wǎng)內(nèi)的用戶通過以太網(wǎng)口和Wireless LAN的天線與網(wǎng)關(guān)互聯(lián),其中以太網(wǎng)和Wireless LAN使用不同的網(wǎng)段,網(wǎng)關(guān)要做的事情是看用戶的IP包,如果是發(fā)往本局域網(wǎng)的,那要看是不是同一個(gè)網(wǎng)段的,如果是則丟棄,如果不是則發(fā)向另一網(wǎng)段,也就是說在本地的包業(yè)務(wù)通信中,起了一個(gè)橋接的作用。如果不是發(fā)向本局域網(wǎng),而是發(fā)向廣域網(wǎng)的包則通過PPP端口轉(zhuǎn)發(fā),實(shí)現(xiàn)其路由功能。以太網(wǎng)的驅(qū)動(dòng)程序和WLAN驅(qū)動(dòng)程序在Linux中也是作為一個(gè)可載入模塊加載到Linux內(nèi)核中。

為了實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)功能,在應(yīng)用層我們還根據(jù)實(shí)際需要實(shí)現(xiàn)了基于IP地址過濾的防火墻,網(wǎng)絡(luò)地址解析,簡單網(wǎng)絡(luò)管理,動(dòng)態(tài)主機(jī)地址分配,和WEB服務(wù)器,

重新編譯內(nèi)核時(shí)去掉對(duì)硬盤,鼠標(biāo),顯卡,鍵盤的支持,只保留一個(gè)簡單的文件系統(tǒng),并放在Flash上,這樣可以在線升級(jí)網(wǎng)關(guān)操作系統(tǒng)。內(nèi)核的核心主要是進(jìn)行內(nèi)存管理,啟動(dòng)和中斷。將PPPOA模塊、以太網(wǎng)以及WLAN驅(qū)動(dòng)模塊編譯進(jìn)內(nèi)核,內(nèi)核程序與網(wǎng)絡(luò)設(shè)備接口間采用消息驅(qū)動(dòng)方式,三個(gè)模塊對(duì)應(yīng)三個(gè)消息隊(duì)列和三個(gè)通信例程,每個(gè)例程負(fù)責(zé)監(jiān)聽相應(yīng)端口的數(shù)據(jù)(對(duì)應(yīng)一個(gè)消息隊(duì)列),當(dāng)接受到消息時(shí),使進(jìn)程轉(zhuǎn)入處理程序,進(jìn)行內(nèi)存刷新、加工數(shù)據(jù)幀頭、發(fā)送消息等工作,消息隊(duì)列如果沒有消息存在,該進(jìn)程就釋放CPU給其它進(jìn)程。由于一些寄存器DCR,SPR等)的值和外設(shè)的I/O空間要映射到物理內(nèi)存空間,所以要在TLB中鎖定這些內(nèi)存,在為三個(gè)PCI設(shè)備進(jìn)行內(nèi)存分配時(shí),要判斷分配的內(nèi)存空間是否與鎖定的內(nèi)存空間重疊。另外我們?cè)谟布O(shè)計(jì)上使用了串口(RS-232)作為調(diào)試接口,可以在shell中測(cè)試系統(tǒng)命令,運(yùn)行應(yīng)用程序,或用GDB對(duì)應(yīng)用程序進(jìn)行調(diào)試,另外shell還用于對(duì)系統(tǒng)進(jìn)行配置。配置包括配置全局參數(shù)對(duì)網(wǎng)關(guān)的命令行接口,需要配置撥號(hào)PPP over ATM端口、以太網(wǎng)和WLAN端口。在配置前需要確認(rèn)ADSL線路與DSLAM連接,要有一個(gè)靜態(tài)IP地址或者由ISP負(fù)責(zé)動(dòng)態(tài)IP地址分配。網(wǎng)關(guān)在啟動(dòng)時(shí),BIOS上電自檢,加載文件系統(tǒng),引導(dǎo)網(wǎng)關(guān)操作系統(tǒng),ADSL線路進(jìn)行握手操作,初始化鏈路,進(jìn)入SHOWTIME。

三、 進(jìn)一步的工作及展望

ADSL網(wǎng)關(guān)集ADSL modem 和應(yīng)用網(wǎng)關(guān)于一體,既完成ADSL接入的模擬的調(diào)制解調(diào)工作,又在此基礎(chǔ)上實(shí)現(xiàn)了資源共享,簡單網(wǎng)絡(luò)管理以及網(wǎng)絡(luò)安全方面的功能等,是一種有著廣泛應(yīng)用前景的技術(shù)。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7454

    瀏覽量

    150853
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208721
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6684

    瀏覽量

    123140
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在控制器上使用Linux操作系統(tǒng)

    嗨,我們正在努力開發(fā)以下控制器:PIC24FJ32GB002、PIC24FJ128GB206和PIC18F26K22。我們有使用Linux操作系統(tǒng)的要求!在這些控制器上,誰能告訴我們?nèi)?/div>
    發(fā)表于 04-23 10:12

    小型微控制器上的實(shí)時(shí)操作系統(tǒng)

    小型微控制器上的實(shí)時(shí)操作系統(tǒng),感興趣的小伙伴們可以免費(fèi)下載看看。
    發(fā)表于 07-13 17:46 ?0次下載

    AD8403-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD8403-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 04-21 08:48 ?21次下載
    AD8403-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD9833-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD9833-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 04-22 11:27 ?6次下載
    AD9833-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5252-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5252-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-13 15:15 ?4次下載
    AD5252-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5629R-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5629R-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-13 19:32 ?7次下載
    AD5629R-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    ADF4118-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    ADF4118-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-21 14:26 ?26次下載
    ADF4118-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5933-瑞薩微控制器平臺(tái)的無操作系統(tǒng)驅(qū)動(dòng)程序

    AD5933-瑞薩微控制器平臺(tái)的無操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-22 08:54 ?10次下載
    AD5933-瑞薩<b class='flag-5'>微控制器</b>平臺(tái)的無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD7298-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD7298-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-22 11:13 ?6次下載
    AD7298-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5415-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5415-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-22 13:19 ?4次下載
    AD5415-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5684R-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5684R-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-22 17:13 ?4次下載
    AD5684R-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5790-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5790-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-22 20:30 ?3次下載
    AD5790-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD7291-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD7291-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-22 20:39 ?9次下載
    AD7291-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5449-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5449-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-23 09:17 ?4次下載
    AD5449-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序

    AD5172-微控制器操作系統(tǒng)驅(qū)動(dòng)程序

    AD5172-微控制器操作系統(tǒng)驅(qū)動(dòng)程序
    發(fā)表于 05-24 11:49 ?3次下載
    AD5172-<b class='flag-5'>微控制器</b>無<b class='flag-5'>操作系統(tǒng)</b>驅(qū)動(dòng)程序