千兆网络接口在S3C2440A系统中的应用
发布时间:2008/6/3 0:00:00 访问次数:438
嵌入式系统广泛应用在工业测控、智能仪表、智能家庭等很多领域。随着嵌入式系统应用范围的不断扩展及网络应用的日益普及,使得越来越多的嵌入式系统需要网络功能。三星公司s3c2440a是国内应用较多的嵌入式微处理器之一,在s3c2440a应用系统中,目前只支持10/100m的网络接口,有很大的实用价值,既可以拓展s3c2440a的应用领域,也可以给其它嵌入式系统高速接入网络提供一种简单易行的参考。
设计方案
本系统主要由s3c2440a、存储器、ax88180、千兆phy芯片88e1111、嵌入式linux、网络驱动程序等组成嵌入式linux内核负责系统任务的管理并集成tcp/ip协议,方便实现网络功能控制。s3c2440a负责整个系统的控制,它与ax88180以总线方式连接,是通信控制的主体。s3c2440a通过网络驱动程序实现对ax88180内部寄存器编程,实现对以太网数据的发送和接收,从而完成网络与系统之间的数据传输。ax88180与88e1111之间采用rgmii接口方式互连,负责数据传送底层协议的实现。
这里简要介绍一下s3c2440a与ax88180器件,这两个器件是通信控制的主体。
s3c2440a是基于arm920t核的16/32位risc微处理器,运行频率高达500mhz,主要面向手持设备以及高性价比、低功耗的应用,适用于开发各类高端手持、小型终端以及网络应用产品,具有非常丰富的片上资源,比如lcd、sdram、nand flash、dma、ad、pwm控制器,以及uart、usb、摄像头、触摸屏、iic、iis、spi、sd、mmc、ac97等接口。
ax88180是台湾亚信公司推出的一款non-pci千兆以太网控制芯片,内置1000mbps以太网媒体存取控制器(mac);有40kbytes sram网络封包缓存器;硬件支持ip/tcp/udp checksum offloads。它可以十分方便地实现与一般16/32位微处理器连接,可以象sram一样被访问。它符合ieee 802.3/leee 802.3u/ieee 802.3ab协议,适用于串流媒体、多媒体网络、高频宽传输等领域,如数字媒体、家用网关及ip电视等。
硬件设计
由于硬件电路比较复杂,这里只给出核心电路连接,s3c2440a与ax88180之间采用总线方式相连,地址总线a2-a15、数据总线d0-d31、读写信号等可以直接连接,ax88180的40m~100m时钟信号由s3c2440a提供,ax88180中断信号与s3c2440a eint11相连,整个接口电路无需外加电路;ax88180与phy芯片之间采用简化的千兆比特媒体独立接口rgmii接口,信号一一对应直接相连即可。
软件设计
从整体角度考虑,linux网络系统可以分为硬件层、设备驱动层、网络协议层和应用层。在s3c2440a系统上移植有嵌入式linux、集成tcp/ip等协议栈,应用层的程序可以自己编写也可以移植,这里我们主要分析一下设备驱动程序的实现。
在嵌入式linux中,整个网络驱动程序的框架可分为四层,分别为协议接口层、网络设备接口层、设备驱动功能层、网络设备和网络媒介层,这个框架在内核网络模块中已经搭建完成,在设计驱动程序的时候,要做的主要工作就是根据上层网络设备接口层定义的device结构和底层具体的硬件特性,来完成设备驱动的功能。驱动程序主要由初始化、打开、关闭、数据接收及发送等函数组成。
初始化函数
初始化函数完成网络设备的初始化,由数据结构device中的init函数指针来调用,加载ax88180驱动模块后,就会调用初始化过程。该首先通过检测物理设备的硬件特征来检测网络物理设备是否存在,之后配置设备所需要的资源,比如中断等。这些过程完成后,就要构造设备设备数据结构,用检测到的数据初始化其相关变量,最后向linux内核注册设备并申请内存空间。
打开函数
打开函数在网络设备驱动程序中是在网络设备状态由down状态转为up状态时,即被激活的时候被调用,有很多ax88180及88e1111的初始化工作可以放在这里做。在驱动程序作为一个模块被装入时,打开函数还要防止模块卸载时设备处于打开状态。
关闭函数
关闭函数和打开函数做相反的工作,是在设备状态由up转为down时被调用的,作用是释放资源以减少系统负担。在驱动程序作为模块装入时,关闭函数还要减少没备被引用的次数,以便卸载驱动程序。
发送函数
发送函数是网络驱动程序的关键过程之一,它与dev->hard_start_xmit连接,在内核通过设备向外发送数据时调用它。系统给ax88180分配一块64k的地址空间,其中8000h-fbffh作为发送缓冲区地址,在系统调用驱动程序的xmit时,发送的数据放在一个sk_buff结构中,发送到数据缓冲区地址,再由ax88180发送到网络上。如果发
嵌入式系统广泛应用在工业测控、智能仪表、智能家庭等很多领域。随着嵌入式系统应用范围的不断扩展及网络应用的日益普及,使得越来越多的嵌入式系统需要网络功能。三星公司s3c2440a是国内应用较多的嵌入式微处理器之一,在s3c2440a应用系统中,目前只支持10/100m的网络接口,有很大的实用价值,既可以拓展s3c2440a的应用领域,也可以给其它嵌入式系统高速接入网络提供一种简单易行的参考。
设计方案
本系统主要由s3c2440a、存储器、ax88180、千兆phy芯片88e1111、嵌入式linux、网络驱动程序等组成嵌入式linux内核负责系统任务的管理并集成tcp/ip协议,方便实现网络功能控制。s3c2440a负责整个系统的控制,它与ax88180以总线方式连接,是通信控制的主体。s3c2440a通过网络驱动程序实现对ax88180内部寄存器编程,实现对以太网数据的发送和接收,从而完成网络与系统之间的数据传输。ax88180与88e1111之间采用rgmii接口方式互连,负责数据传送底层协议的实现。
这里简要介绍一下s3c2440a与ax88180器件,这两个器件是通信控制的主体。
s3c2440a是基于arm920t核的16/32位risc微处理器,运行频率高达500mhz,主要面向手持设备以及高性价比、低功耗的应用,适用于开发各类高端手持、小型终端以及网络应用产品,具有非常丰富的片上资源,比如lcd、sdram、nand flash、dma、ad、pwm控制器,以及uart、usb、摄像头、触摸屏、iic、iis、spi、sd、mmc、ac97等接口。
ax88180是台湾亚信公司推出的一款non-pci千兆以太网控制芯片,内置1000mbps以太网媒体存取控制器(mac);有40kbytes sram网络封包缓存器;硬件支持ip/tcp/udp checksum offloads。它可以十分方便地实现与一般16/32位微处理器连接,可以象sram一样被访问。它符合ieee 802.3/leee 802.3u/ieee 802.3ab协议,适用于串流媒体、多媒体网络、高频宽传输等领域,如数字媒体、家用网关及ip电视等。
硬件设计
由于硬件电路比较复杂,这里只给出核心电路连接,s3c2440a与ax88180之间采用总线方式相连,地址总线a2-a15、数据总线d0-d31、读写信号等可以直接连接,ax88180的40m~100m时钟信号由s3c2440a提供,ax88180中断信号与s3c2440a eint11相连,整个接口电路无需外加电路;ax88180与phy芯片之间采用简化的千兆比特媒体独立接口rgmii接口,信号一一对应直接相连即可。
软件设计
从整体角度考虑,linux网络系统可以分为硬件层、设备驱动层、网络协议层和应用层。在s3c2440a系统上移植有嵌入式linux、集成tcp/ip等协议栈,应用层的程序可以自己编写也可以移植,这里我们主要分析一下设备驱动程序的实现。
在嵌入式linux中,整个网络驱动程序的框架可分为四层,分别为协议接口层、网络设备接口层、设备驱动功能层、网络设备和网络媒介层,这个框架在内核网络模块中已经搭建完成,在设计驱动程序的时候,要做的主要工作就是根据上层网络设备接口层定义的device结构和底层具体的硬件特性,来完成设备驱动的功能。驱动程序主要由初始化、打开、关闭、数据接收及发送等函数组成。
初始化函数
初始化函数完成网络设备的初始化,由数据结构device中的init函数指针来调用,加载ax88180驱动模块后,就会调用初始化过程。该首先通过检测物理设备的硬件特征来检测网络物理设备是否存在,之后配置设备所需要的资源,比如中断等。这些过程完成后,就要构造设备设备数据结构,用检测到的数据初始化其相关变量,最后向linux内核注册设备并申请内存空间。
打开函数
打开函数在网络设备驱动程序中是在网络设备状态由down状态转为up状态时,即被激活的时候被调用,有很多ax88180及88e1111的初始化工作可以放在这里做。在驱动程序作为一个模块被装入时,打开函数还要防止模块卸载时设备处于打开状态。
关闭函数
关闭函数和打开函数做相反的工作,是在设备状态由up转为down时被调用的,作用是释放资源以减少系统负担。在驱动程序作为模块装入时,关闭函数还要减少没备被引用的次数,以便卸载驱动程序。
发送函数
发送函数是网络驱动程序的关键过程之一,它与dev->hard_start_xmit连接,在内核通过设备向外发送数据时调用它。系统给ax88180分配一块64k的地址空间,其中8000h-fbffh作为发送缓冲区地址,在系统调用驱动程序的xmit时,发送的数据放在一个sk_buff结构中,发送到数据缓冲区地址,再由ax88180发送到网络上。如果发