千兆網(wǎng)絡(luò )接口在S3C2440A系統中的應用
嵌入式系統廣泛應用在工業(yè)測控、智能儀表、智能家庭等很多領(lǐng)域。隨著(zhù)嵌入式系統應用范圍的不斷擴展及網(wǎng)絡(luò )應用的日益普及,使得越來(lái)越多的嵌入式系統需要網(wǎng)絡(luò )功能。三星公司S3C2440A是國內應用較多的嵌入式微處理器之一,在S3C2440A應用系統中,目前只支持10/100M的網(wǎng)絡(luò )接口,有很大的實(shí)用價(jià)值,既可以拓展S3C2440A的應用領(lǐng)域,也可以給其它嵌入式系統高速接入網(wǎng)絡(luò )提供一種簡(jiǎn)單易行的參考。
本文引用地址:http://dyxdggzs.com/article/272376.htm設計方案
本系統主要由S3C2440A、存儲器、AX88180、千兆PHY芯片88E1111、嵌入式Linux、網(wǎng)絡(luò )驅動(dòng)程序等組成(見(jiàn)圖1)。嵌入式Linux內核負責系統任務(wù)的管理并集成TCP/IP協(xié)議,方便實(shí)現網(wǎng)絡(luò )功能控制。S3C2440A負責整個(gè)系統的控制,它與AX88180以總線(xiàn)方式連接,是通信控制的主體。S3C2440A通過(guò)網(wǎng)絡(luò )驅動(dòng)程序實(shí)現對AX88180內部寄存器編程,實(shí)現對以太網(wǎng)數據的發(fā)送和接收,從而完成網(wǎng)絡(luò )與系統之間的數據傳輸。AX88180與88E1111之間采用RGMII接口方式互連,負責數據傳送底層協(xié)議的實(shí)現。
這里簡(jiǎn)要介紹一下S3C2440A與AX88180器件,這兩個(gè)器件是通信控制的主體。
S3C2440A是基于A(yíng)RM920T核的16/32位RISC微處理器,運行頻率高達500MHz,主要面向手持設備以及高性?xún)r(jià)比、低功耗的應用,適用于開(kāi)發(fā)各類(lèi)高端手持、小型終端以及網(wǎng)絡(luò )應用產(chǎn)品,具有非常豐富的片上資源,比如LCD、SDRAM、NAND FLASH、DMA、AD、PWM控制器,以及UART、USB、攝像頭、觸摸屏、IIC、IIS、SPI、SD、MMC、AC97等接口。
AX88180是臺灣亞信公司推出的一款Non-PCI千兆以太網(wǎng)控制芯片,內置1000Mbps以太網(wǎng)媒體存取控制器(MAC);有40KBytes SRAM網(wǎng)絡(luò )封包緩存器;硬件支持IP/TCP/UDP checksum offloads。它可以十分方便地實(shí)現與一般16/32位微處理器連接,可以象SRAM一樣被訪(fǎng)問(wèn)。它符合IEEE 802.3/lEEE 802.3u/IEEE 802.3ab協(xié)議,適用于串流媒體、多媒體網(wǎng)絡(luò )、高頻寬傳輸等領(lǐng)域,如數字媒體、家用網(wǎng)關(guān)及IP電視等。

硬件設計
由于硬件電路比較復雜,這里只給出核心電路連接,如圖2所示。S3C2440A與AX88180之間采用總線(xiàn)方式相連,地址總線(xiàn)A2-A15、數據總線(xiàn)D0-D31、讀寫(xiě)信號等可以直接連接,AX88180的40M~100M時(shí)鐘信號由S3C2440A提供,AX88180中斷信號與S3C2440A EINT11相連,整個(gè)接口電路無(wú)需外加電路;AX88180與PHY芯片之間采用簡(jiǎn)化的千兆比特媒體獨立接口RGMII接口,信號一一對應直接相連即可。

軟件設計
從整體角度考慮,Linux網(wǎng)絡(luò )系統可以分為硬件層、設備驅動(dòng)層、網(wǎng)絡(luò )協(xié)議層和應用層。在S3C2440A系統上移植有嵌入式Linux、集成TCP/IP等協(xié)議棧,應用層的程序可以自己編寫(xiě)也可以移植,這里我們主要分析一下設備驅動(dòng)程序的實(shí)現。
在嵌入式Linux中,整個(gè)網(wǎng)絡(luò )驅動(dòng)程序的框架可分為四層,分別為協(xié)議接口層、網(wǎng)絡(luò )設備接口層、設備驅動(dòng)功能層、網(wǎng)絡(luò )設備和網(wǎng)絡(luò )媒介層,這個(gè)框架在內核網(wǎng)絡(luò )模塊中已經(jīng)搭建完成,在設計驅動(dòng)程序的時(shí)候,要做的主要工作就是根據上層網(wǎng)絡(luò )設備接口層定義的device結構和底層具體的硬件特性,來(lái)完成設備驅動(dòng)的功能。驅動(dòng)程序主要由初始化、打開(kāi)、關(guān)閉、數據接收及發(fā)送等函數組成。
初始化函數
初始化函數完成網(wǎng)絡(luò )設備的初始化,由數據結構device中的init函數指針來(lái)調用,加載AX88180驅動(dòng)模塊后,就會(huì )調用初始化過(guò)程。該首先通過(guò)檢測物理設備的硬件特征來(lái)檢測網(wǎng)絡(luò )物理設備是否存在,之后配置設備所需要的資源,比如中斷等。這些過(guò)程完成后,就要構造設備設備數據結構,用檢測到的數據初始化其相關(guān)變量,最后向Linux內核注冊設備并申請內存空間。
打開(kāi)函數
打開(kāi)函數在網(wǎng)絡(luò )設備驅動(dòng)程序中是在網(wǎng)絡(luò )設備狀態(tài)由down狀態(tài)轉為up狀態(tài)時(shí),即被激活的時(shí)候被調用,有很多AX88180及88E1111的初始化工作可以放在這里做。在驅動(dòng)程序作為一個(gè)模塊被裝入時(shí),打開(kāi)函數還要防止模塊卸載時(shí)設備處于打開(kāi)狀態(tài)。
關(guān)閉函數
關(guān)閉函數和打開(kāi)函數做相反的工作,是在設備狀態(tài)由up轉為down時(shí)被調用的,作用是釋放資源以減少系統負擔。在驅動(dòng)程序作為模塊裝入時(shí),關(guān)閉函數還要減少沒(méi)備被引用的次數,以便卸載驅動(dòng)程序。
發(fā)送函數
發(fā)送函數是網(wǎng)絡(luò )驅動(dòng)程序的關(guān)鍵過(guò)程之一,它與dev->hard_start_xmit連接,在內核通過(guò)設備向外發(fā)送數據時(shí)調用它。系統給AX88180分配一塊64K的地址空間,其中8000H-FBFFH作為發(fā)送緩沖區地址,在系統調用驅動(dòng)程序的xmit時(shí),發(fā)送的數據放在一個(gè)sk_buff結構中,發(fā)送到數據緩沖區地址,再由AX88180發(fā)送到網(wǎng)絡(luò )上。如果發(fā)送成功,hard_start_xmit釋放sk_buff,返回0;如果設備暫時(shí)無(wú)法處理,則返回1。硬件在發(fā)送結束后產(chǎn)生中斷。
中斷和接收函數
中斷和接收函數也是驅動(dòng)程序的關(guān)鍵過(guò)程之一,如果有數據收到,AX88180會(huì )產(chǎn)生一個(gè)中斷通知系統,在中斷處理程序中驅動(dòng)程序申請一塊sk_buff(),從AX88180讀出數據并放置到接收緩沖區地址0000H~7000H里,然后來(lái)填充sk_buff中的一些信息,由skb->dev=dev判斷收到幀的協(xié)泌類(lèi)型,填入skb->protocol,再把指針skb->mac.raw指向硬件數據,然后丟棄幀頭。之后還要設置skb->pkt_type,標明鏈路層數據類(lèi)型,最后調用netif_rX()把數據傳送給協(xié)議層。
下面是發(fā)送函數部分代碼:


結語(yǔ)
本文介紹的千兆網(wǎng)絡(luò )接口在S3C2440A系統中的應用方案已經(jīng)得以實(shí)現,1000 Full-duplex模式下,數據傳輸速率可以達到200Mbp,在使用FTP下載數據時(shí),速度可以達到4Mbps以上,是使用100M網(wǎng)絡(luò )接口的5~6倍。如果使用其它更高速度的微處理器,網(wǎng)絡(luò )接口的速度會(huì )更高。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論