摘 要:網絡功能現在已成為嵌入式系統中不可或缺的一部分。首先對ARM芯片S3C2410與網絡物理層芯片CS8900A的硬件接口電路的設計進行講解,然后重點介紹在該硬件基礎上的驅動程序的實現方法,實現嵌入式設備與PC機之間的TFTP通信,提供的一種基于TCP/IP協議的嵌入式設備以太網通信的解決方案,在嵌入式系統的網絡應用中有較好的應用價值。
關鍵詞:S3C2410;CS8900A;嵌入式設備;以太網;TFTP
中圖分類號:TP368 文獻標識碼:B
文章編號:1004-373X(2008)06-080-03
Dedign and Realization of TFTP Ethernet Communication Based on S3C2410
TIAN Mao,PAN Yongcai
(Faculty of Physics and Electronic Engineering,Hubei University,Wuhan,430062,China)
Abstract:Network function has became important part of the embedded system.The paper explains the design of interface circuit based on the arm chip S3C2410 and network physical layer chip CS8900,realizes the communication of TFTP between embedded equipment and PC machine by the solution of the driver programe based on CS8900A and S3C2410,provides the solution of Ethernet communication of embedded equipment based on the TCP / IP protocol.This design has a good value in the application of embedded system network.
Keywords:S3C2410;CS8900A;embedded equipment;Ethernet;TFTP
隨著半導體技術的飛速發展,嵌入式產品已經廣泛應用于軍事、消費電子、網絡通信、工業控制等各個領域,網絡化是嵌入式系統發展的必然趨勢。本文提供一種基于32位三星ARM9處理器S3C2410和CS8900A的嵌入式系統以太網通信的方案,實現了嵌入式設備與PC機之間的TFTP通信。
1 ARM芯片S3C2410簡介
S3C2410是Samsung公司推出的16/32位RISC處理器,為手持設備和一般類型的應用提供了低價格、低功耗、高性能小型微控制器的解決方案。S3C2410采用ARM920T內核,工作主頻為203 MHz,具有豐富的片上資源,包括1個LCD控制器(支持STN和TFT帶有觸摸屏的液晶顯示器)、SDRAM控制器、3個通道的UART、4個通道的DMA、4個具有PWM功能的計時器和1個內部時鐘、8通道的10位ADC、觸摸屏接口、I2C總線接口、1個USB主機接口,1個USB設備接口、2個SPI接口、SD接口和MMC卡接口、117個通用I/O口和24個外部中斷源。
2 CS8900A簡介
CS8900A是Cirrus Logic 公司提供的一款性能優良的16位以太網控制器 ,除了具備其他以太網控制芯片所具有的一些基本功能外,還有他的獨特優點:工業級溫度范圍(- 40~+80 ℃);3.3 V 工作電壓,功耗低;高度集成的設計,使用CS8900A可以將一個完整的以太網電路設計電路最小化,適合作為智能嵌入設備網絡接口;獨特的PacketPage 結構,可自動適應網絡通信模式的改變,占用系統資源少,從而增加系統效率。在嵌入式系統網絡接口設計中,CS8900A 一般用作I/O 模式,其特點是占用系統資源少,硬件連接方便。
2.1 I/O模式下的寄存器與尋址
在I/O模式下,通過訪問8個16位的寄存器來訪問PacketPage結構,這8個寄存器被映射到2410地址空間的16個連續地址。當CS8900A上電后,寄存器默認的基址為0x300h。如表1所示。
2.2 I/O模式下讀寫操作流程
在讀寫操作過程中,AEN管腳必須設置為低電平。讀操作時,IOR管腳設置為低電平;寫操作時,IOW管腳設置為低電平。
表1 I/O模式地址映射
2.2.1 寫操作流程
I/O模式的寫操作流程如下:
(1) 將發送指令寫入TxCMD寄存器,將發送數據幀的長度寫入TxLength寄存器中;
(2) 使用PacketPagePointer和PacketPageData Port寄存器訪問PacketPage結構中的BusST寄存器,判斷發送緩沖區是否可用;
(3) 使用Receive/Transmit Data Port寄存器,將待發送的數據幀寫入發送緩沖區。
2.2.2 讀操作流程
I/O模式的讀操作流程如下:
(1)當CS8900收到數據幀時,觸發接收中斷更新對應狀態寄存器;
(2)使用Interrupt Status Queue寄存器訪問PacketPage結構中對應的狀態寄存器判斷接收狀態;
(3) 使用Receive/Transmit Data Port寄存器,讀出接收緩沖區的數據。
3 網絡接口的實現
由于S3C2410本身沒有集成網絡MAC模塊,所以用外擴CS8900A 網絡芯片完成網絡底層的數據傳輸,以實現TCP/IP協議中的數據鏈路層的功能。在此基礎上,根據TCP/IP協議編寫代碼解析數據,完成網絡通信。
硬件電路原理圖如圖1所示。

3.1 數據鏈路層
數據鏈路層由CS8900A實現,完成底層數據的收發。
CS8900A片選信號AEN連接到達到nGCS3,I/O模式下的nOE和nWE通過門電路連接到A24,中斷信號INTRQ0連接到EINT9。硬件原理圖決定在S3C2410的地址空間中,CS8900A的基地址為x19000000。在I/O模式下,CS8900A的內部寄存器默認基地址為0x300h,在S3C2410的地址空間中的地址為 0x19000300。S3C2410通過操作這些寄存器,完成底層數據的接收和發送,實現數據鏈路層。CS8900的程序流程如圖2所示:

3.2 網絡層
網絡層實現IP協議,提供ARP地址解析協議,實現從IP地址到數據鏈路物理地址的映像。
3.3 傳輸層
實現UDP和TCP協議,讓網絡程序通過明確定義的數據結構獲得數據。
3.4 應用層
通過以太網和TCP/IP傳輸數據,實現與Ethernet的數據終端的交互通信。
4 TFTP的實現
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。
4.1 TFTP數據幀的格式簡介
TFTP使用UDP,而UDP使用IP。因此一個TFTP包中會有以下幾段:本地媒介頭、IP頭、數據報頭、TFTP頭、TFTP數據。TFTP在IP頭中不指定任何數據,但是他使用UDP中的源和目標端口以及包長度域。TFTP頭中包括2個字節的操作碼,這個碼指出了包的類型。其幀格式如圖3所示:

4.2TFTP通信流程
PC機與S3C2410的嵌入式設備的TFTP通信流程包括以下2個階段:
(1) 發送寫請求階段
PC機向嵌入式設備發出WRQ包,并在filename段指明要發送的文件名,在Mode段填充“OCTET”,表示用于傳輸文件,這種文件在源機上以8位格式存儲。
嵌入式設備收到WRQ包后,向PC機發出ACK包,并在block number段填充0。
(2) 數據傳輸階段
PC機向嵌入式設備發出data包,在block number段填充數據包的數據塊號。在data段填充要發送的數據。如果數據域是512 B則他不是最后一個包,如果小于512 B則表示這個包是最后一個包。
嵌入式設備收到data包后,向PC機發出ACK包。在block number段填充接收到的數據包的數據塊號,表示成功接收該數據包。
4.3 TFTP數據的接收與解析
CS8900收到包后調用net_handle函數將收到的包保存到內存。根據包的幀結果,分別調用arp_rcv_packet和ip_rcv_packet處理數據包。net_handle函數的源碼如下所示:
int net_handle(void)
{
Struct sk_buff *skb;
Struct ethhdr *eth_hdr;
Skb=alloc_skb(ETH_FRAME_LEN);
if(eth_rcv(skb) !=-1 )
{
Eth_hdr = (struct ethhdr *)(skb->data);
Skb_pull(skb,ETH_HLEN);
If (ntohs(eth_hdr->h_proto)==ETH_P_ARP)
arp_rcv_packet(skb);
else if(ntohs(eth_hdr->h_proto)==ETH_P_IP)
ip_rcv_packet(skb);
}
free_skb(skb);
Return 0;
}
4.4 TFTP的實際測試
將嵌入式設備與本地局域網聯通,并分配MAC地址和IP地址,利用PC的ping程序測試,其連接正常,說明ARP,IP,ICMP協議正常。利用TFTP命令,將本機的TXT文件發送到嵌入式設備內存空間的0x30008000處。利用網絡抓包軟件,觀察網絡數據包,結果符合TFTP通信流程。在嵌入式設備的內存地址0x30008000處觀察數據,結果數據與TXT文件內容一致。這說明TFTP執行正確,UDP協議正常。
5 結 語
本文詳細介紹了基于S3C2410的 嵌入式設備的以太網通信方案,由于采用高性能的工業級以太網控制器CS8900A,網絡通訊快速可靠,具有很高的實時性。該方案通過直接操作CS8900A,完成了數據鏈路層功能,最終完全實現嵌入式設備使用TCP/IP協議接入到以太網。 方案的代碼可以為Linux或Wince等嵌入式操作系統的以太網驅動部分提供參考,便于嵌入式系統實現上網功能。在實際應用中,該方案有較好的推廣價值。
參考文獻
[1]胥靜.嵌入式系統設計與開發詳解[M].北京:北京航空航天大學出版社,2005.
[2]徐良賢.計算機網絡與互聯網[M].北京:電子工業出版社,1998.
[3]Cirrus Logic,Inc.CS8900A Product Datasheet.2001.
[4]SΛMSUNG Electronics,Inc.S3C2410X User′s Manual,2003.
作者簡介 田 茂 講師, 碩士。主要研究方向為接口技術與嵌入式系統。