首页 [word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现

[word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现

举报
开通vip

[word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现[word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现 基于嵌入式Linux2.4.18的CS8900A网卡驱 动的实现 一 58一《国外电子元器~)2007年第12期2007年12月 ?主题论文 基于嵌入式Linux2.4.18的CS8900A 网卡驱动的实现 李会艳.胡荣强 (武汉理工大学自动化学院,湖北武汉430070) 摘要:介绍了基于嵌入式Linux2.4.18的CS8900A网卡驱动的实现方法.通过将以太网器件 CS8900A连接到嵌入式微处理器$3C2410X...

[word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现
[word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现 基于嵌入式Linux2.4.18的CS8900A网卡驱 动的实现 一 58一《国外电子元器~)2007年第12期2007年12月 ?主 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 论文 基于嵌入式Linux2.4.18的CS8900A 网卡驱动的实现 李会艳.胡荣强 (武汉理工大学自动化学院,湖北武汉430070) 摘要:介绍了基于嵌入式Linux2.4.18的CS8900A网卡驱动的实现方法.通过将以太网器件 CS8900A连接到嵌入式微处理器$3C2410X的总线上扩展网络接口.根据电路原理图,设置寄存器 BWSCON和BANKCON3使网卡工作在存储器模式,编写中断函数及相关的驱动代码.通过内核配 置将网卡驱动程序以静态的方式编译进内核Linux2.4.18中,生成映像文件并移植到开发板上,网卡 CS890oA便驱动成功. 关键词:CS8900A;驱动;$3C2410X;虚拟地址;内核 中图分类号:TP316文献标识码:A文章编 号:1006—6977(2007)12—0058—04 RealizationofC$8900AdrivebasedonembeddedLinux2.4.18 LIHui-yan,HURong—qiang (SchoolofAutomation,WuhanUniversityofTechnology,Wuhan430070,China) Abstract:RealizationofCS8900AnetcagddrivebasedonembeddedLinux2.4.18iSintroduced.Con— nectingtheinternetchipCS8900Atothebusoftheembeddedmicrocomputer$3C2410XiStoexpand networkinterface.Accordingtoelectriccircuitprinciplediagram,netcagdCanbeenabletoworkin memorymodebysettingregistersBWSCONandBANKCON3.interruptionfunctionandrelateddrive codeareprogrammed.rhenetcagddriveprogrammiscompiledtothekernelbythewayofstaticstate. nlekernelwasmadeto-getanimagefilewhichcanbetransplantedtothedevelopmentboard.Netcard CS8900ACanbedrived8uccessfullvatlast. Keywords:CS8900A:driver;S3C2410X;virtualaddress;kernel 1引言 近年来,Internet获得了突飞猛进的发展,而嵌 入式系统接入Internet后将使得远程监测,远程维 护变得非常容易.因此嵌入式系统的网络也非常重 要.嵌入式系统实现Internet接入的前提条件是系 统的软件中有TCP/IP协议支持,Linux内核提供了 包括对TCP/IP在内的多种协议的支持,从而使得网 络设备的驱动更加方便. 2网卡驱动的硬件实现 在嵌入式系统中增加以太网接口通常由两种 方法实现.第一种方法是采用带有以太网接口的嵌 入式处理器.这种方法要求嵌入式处理器有通用的 网络接口,通常这种处理器是面向网络应用而 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的.通过内部总线实现处理器和网络数据交换;第 二种方法是采用嵌入式微处理器连接网卡的结构. 这种方法对嵌入式处理器没有特殊要求,只要把以 太网器件挂接到嵌入式处理器的总线上即可.后者 通用性强,不受处理器限制,但是,处理器和网络的 数据交换是由外部总线实现的. 本系统设计参考了SBC2410X开发板,采用 $3C2410X微处理器,由于该处理器没有通用的网络 接口,因此采用第二种方法增加以太网接口.以太网 基于嵌入式Linux2.4.18的CS8900A网卡驱动的实现一59一 控制器采用适用于嵌入式设备并且成本低的 CS8900A器件.该器件使用灵活,其物理层接口,数 据传输模式和工作模式等均可根据需要动态调整. 通过设置内部寄存器来适应不同环境.CS8900A有 两种工作模式:存储器模式和I/O模式.其中在存储 器模式下编程操作较为简单,对任何寄存器都可直 接操作,但需要多条地址总线和网卡相连.而I/O模 式较复杂,在此模式下对任何寄存器的操作均要通 过I/O端口0的写入或读出,而硬件实现比较方便, 而且I/O模式也是器件的默认模式.本系统采用 CS8900A的存储器工作模式.以太网控制器与 S3C2410X处理器硬件连接图如图l所示. 3网卡驱动的软件设计 在Linux2.4.18中.整个网络接口驱动程序的框 架分为4层,从上到下分别为协议接口层,网络设备 接口层,提供实际功能的设备驱动功能层以及网络 设备和网络媒介层.这个框架在内核网络设备模块 中已经搭建好了,在移植网络设备驱动程序到Linux 内核时,就是根据上层网络设备接口层的定义和底 层具体的硬件特性,进行相应的代码修改及添加,从 而完成网卡的驱动. 首先下载Linux2.4.18.tar.gz内核和基于ARM 的内核补丁文件.在内核中打好相应补丁后,即可 得到内核Linux2.4.18-rink7一swl8.然后根据开发板 n0E ADDR24/GPA9 nWE nGCS3/GPA14 EINTI8/GPG10 DATA1 DATA15 ADDR0/GPA0 ADDRI9/GPA4 nWAIT nWBE1:nBE1:DQM1 $3C241OX VDD3.3V IVDD3.3V 4 AN TD- RD+ RD- CHSGND CHSGND IOR61 lOW62 MEMR29 丛型28 LDATA065 VDD3~3V;; r_1口IRQ_LAN32 磐 f参考板SBC一2410X)的硬件设计进行相应的内核代 码修改,这样内核就能在开发板上工作.但是此时网 卡并不工作.由于采用CS8900A,需要添加相应地驱 动程序.下载针对Linux2.4内核的网卡驱动程序 cs8900a.C,将该程序放在Linux内核的drivers/net目 录下.并修改Config.in配置文件,即就是运行make menuconfig命令时出现的菜单.为了支持网卡 CS8900A.添加代码如下: dep._ tristate’CS8900Asuppo~’CONFIG_ CS8900A$CON? FIG_ ISA 然后配置内核,内核支持4种不同的配置方法, 在字符终端下使用makemenuconfig打开配置界面, 将CS8900A_support选择Y,保存退出后autoconf.h 文件中就自动生成了一个宏定义:#defineCONFIG_ CS8900A.该目录下的Makefile文件用于组织内核 的各模块,记录各模块间的相互联系和依赖关系.根 据内核的配置需要将CS8900A的驱动程序以静态 方式编译进内核,因此需添加代码如下: obj-$(CONFIG_CS8900A)+=cs8900a.o 在驱动程序开发的过程中,由于驱动程序操作 的都是设备的虚拟地址,要使驱动程序对虚拟地址 的操作反映到正确的设备上,需通过内存管理单元 MMU将设备的虚拟地址映射到正确的物理地址,从 而保证驱动程序对设备的虚拟地址的操作,也就是 对其相应的物理地址的操作.内存管理单元把内存 L LADD L 图1CS89o0A与处理器$3C2410X的硬件连接图 O1234S123T1234HO121234^_腿叻叻叻叻叻叻叻l盆一腿哪啪啪哪哪吣一腿DDDDD—A?l鲁?一珀瓦0可丽一{3丽眦唧0N丽0腿豫丽而一丽I蚕;删丽;l薹l至胁一 . 一60一《国外电子元器件》2007#-g12期2007年12月 以页为单位进行处理.操作系统为每个正在运行的 程序建立并维护一张进程内存映射表.当程序存取 一 块内存时,它就会把相应的虚拟地址传送给MMU. 而MMU会在内存映射表中查找该内存的实际位置 即其物理地址.由$3C2410X处理器与CS8900A网 卡的接线AEN-?nGCS3,nCHIPSEL—斗nGCS3可知. 网卡采用的是$3C2410X的nGCS3片选信号.该信 号对应的地址空间的起始地址是0x18000000. LADDR24为高电平时网卡处于处理器工作模式,因 此网卡实际的物理地址为0x18000000+0x0100 0000即0】【l9000000,经过映射后,其虚拟地址为 0xf0000000.其虚拟地址不固定,只要与其他设备不 冲突即可.因此修改include/asm/arch/目录下的 s3c2410.h文件如下: #defineIRQ_CS8900IRQ_EINT18 #defineVA_ CS8900A_BASE(VAIOBASE2+0x1800 oooo) #definePA_ CS8900A_BASE(0x19000000) 修改驱动程序cs8900a.C的网卡虚拟地址是将 vCS8900A_ BASE+0x300改为VS8900A_BASE+ 0x300. 在cs89x0_probel0函数中,对寄存器BWSCON 和BANKCON3的设置和原理图有关.在微处理器 S3C2410X中BWSCON寄存器控制系统地址空间内 的总线数据宽度以及是否等待.由于网卡采用的是 $3C2410X的r~CS3片选信号,该信号对应的是 BANK3地址空间.由硬件连接图可知,BANK3空间 采用处理器的总线使能信号即nBE,并对BANK3 使用等待状态,采用l6位的总线数据宽度,即 BWSCON寄存器的ST3[15]WS3[14]DW3[13:12]位应 为l101.因此对BWSCON寄存器的设置为: rBwSCON=(rBWSCON&一(BWSCON_ST3IBWSCON_ WS3IBWSCON_DW3))I(BWSCON_ST3IBWSCON_WS3I BWSCON_ DW(3,BWSCON_DW_16)); BANKCON3寄存器控制位于BANK3空间的总 线地址信号生效的时钟周期,片选信号的保持时 间,访问周期等.根据硬件连接图和开发要求,在 nGCS3信号生效前,总线的地址信号无需时间,即 Tacs[14:13]为00;输出使能前片选信号的建立时间 为4个时钟周期,即Tcos[12:ll】为11;总线的访问周 期为l4个时钟周期,即Tacc[1O:8]为lll;输出使能 后片选信号的保持时间为1个时钟周期,即Tcoh[7: 6】为01;选择BANK3空间后地址信号的保持时间 为4个时钟周期,即Tcah[5:4]为11;在Page模式下 访问周期为6个时钟周期,即Tacp[3:2])~11;页模 式的配置为PMC[1:0].因此对BANKCON3寄存器 的设置为: rBANKCON3=BANKCON_TacsOIBANKCON_ Tcos4I BANKCON_ Tacc14I BANKCON_ Tcoh1IBANKCON_ Tcah4IBANKCON_ Tacp6I BANKCON_ PMC1; 由于其中一些变量无定义,因此需添加头文件. 进入include/asm/arch目录创建新文件bitfield.h.并 添加代码如下: #ifndefBITFIELD_ H #defineBITFIEU)_H #ifndef—ASSEMB,一 #defineUData(Data)((unsignedlong)(Data)) #else #defineUData(Data)(Data) #endif #defineFld(Size,Shft)(((Size)<<16)+(Shft)) #defineFSize(Field)((Field)>>16), #defineFShft(Field1((Field)&Ox00OOFFFF) #defineFMsk(Field)(((UData(1)<<FSize(Field))一1)<< FShft(Field)) #defineFAlnMsk(Field)((UData(1)<<FSize(Field))一1) #defineFlstBit(Field)(UData(1)<<FS(Field)) #defineFClrBit(Data,Bit)(Data=(Data&一(Bit))) #defineFClrFld(Data,Field)(Data=(Data&~FMsk (Field))) #defineFlnsrt(Value.Field)(UData(Value)<<FShft (Field)) #defineFExtr(Data,Field)((UData(Da>>FS(Field)) &FAlnMsk(Field)) #endif 该目录下s3c2410ASM.h文件中添加代码如下: #include”bitfield.h” #definefBWSCON_ST(Nb)Fld(1,((Nb)4)+3) #definefBWSCON_ WS(Nb)Fld(1,((Nb)4)+2) #definefBWSCON_DW(Nb)Fld(2,(Nb4) #definefBWSCON_ DWOFld(2,1) #defineBWSCON_ST3FMsk(fBWSCON_ST(3)) #defineBWSCON_WS3FMsk(fBWSCON—wS(3)) 基于嵌入式Linux2.4.18的CS8900A网卡驱动的实现=鱼= #defineBWSCON— DW3FMsk(fBWSCON—DW(3)) #defineBWSCON_ DW一 160xl #defineBWSCON— DW(x,y)FInsrt((y),fBWSCON_DW(x)) #defineBANKCON_Tacs0FInsrt(0x0,Fld(2,13)) #defineBANKCONTeos4Flnsrt(0x3,rid(2,11)) #defineBANKCON_Taeel4FInsrt(0x7,Fld(3,8)) #defineBANKCON_Teoh1Flnsrt(0xl,Fld(2,6)) #defineBANKCON_Tcah4FInsrt(0x3,Fld(2,4)) #defineBANKCON_Taep6Flnsrt(0x3,Fld(2,2)) #defineBANKCON_PMC1FInsrt(0x0,Fld(2,0)) 由网卡与处理器的连接图可知,当CS8900A的 SBHE由低电平变为高电平,即上升沿触发中断.在 驱动程序cs8900a.e中调用函数set_external_irq(int IRQ_C$8900A,intExT__RIsINGEDGE,intGPI— O_ PULLUP_ DIS)产生外部中断EINT18.此函数的定 义和声明及其用到的变量需在内核中添加.修改 hardware.h文件,添加代码为: #defineEXT_ RISING_ EDGE4 修改irq.h文件,添加代码为: externintset_ extemal_irq(intirq,intedge,intpullup); 修改s3c2410ASM.h文件,添加代码如下: #defineGPIO_PUULUP_SHIVr16 #defineGPIO_ PULLUP_ MASK0x0Off0000 #defineGPIO— PULLUP_DIS(1<<GPIO_PULLUP_SHIFT) #defineGRAB_PULLUP(x)(((x)&GPIO_PULLUP_MASK) >>GPIO_ PULLUP_ SHIFT) 修改include/asm/目录下的irq.h文件,添加头 文件如下: #include<asm/arch/irq.h> 修改arch/arm/mach—s3c2410/目录下的irq.e文 件,添加set_extemal_irq0的定义如下: Intset_ extemal_ irq(intirq,intedge,intpullup) { unsignedlongflags; intrealirq,reg_ ofs,shift,shift_ value; if”(irq<IRQ_EINT0)&&(irq>IRQ_EINT23))II ((irq>IRQEINT3)&&(irq<IRQ—EINT4))) return-EINVAL; real_ irq=fixup_ irq_ num(irq); set_gpios(real_irq,pullup); loeal_ irq_save(flags); reg_ofs=(real_irq/8); shift=4(real_irq一8reg_ofs); if(irq<IRQ_EINT4){ shift_ value=(irq%8)EXTINT_OFFSET; rEXTINT0&=一(EXTINTMASK<<shfit._value); rEXTINT0I_fedge<<shfit_ value); ClearPending(irq); }else{ if(irq<IRQ_EINT8){ rEXTINT0&=一(EXTINT_MASK<<shif1); rEXTINT0redge<<shift); rEINIPND=f1<<shift); ClearPending(IRQ_EINT4_7); }elseif(irq<IRQ_EINT16){ rEXTINT1&=一(EXTINT_MASK<<shift); rEXTINT1I:(edge<<shfit); rEINIPND=f1<<shift); ClearPending(IRQ_EINT8_23); }else{ rEXTINT2&=一(EXTINTMASK<<shift); rEXTINT2l:(edge<<shfit); rEINTPND=f1<<shfit); ClearPending(IRQ..EINT8_23); l irq_dese[irq].valid=l: restore_flags(flags); return0: } EXPORTSYMBOL(set._extemal_irq); 修改当前目录下的Makefile文件,将irq.o文件 添加到”export—objs:”的文件列表中即可. 4网卡驱动的实现 通过makebzImage编译内核生成zImage文件, 然后通过串口烧写该映象文件到开发板上,完毕后 用交叉网线将宿主机和开发板相连,通过minicom 终端显示正确,表明网卡驱动成功. 5结束语 添加网卡驱动到Linux2.4.18内核具有很重要 的价值,网卡正常运行后可以通过网卡下载根文件 系统等.速度快,可靠性高.随着网络向嵌入式系统 一 62一《国外电子元器~)2007-#-g12期2007年12月 ?主题论文 基于RTL8150L的USB转以太网的设计 江敏.张毅 (重庆邮电学院,通信学院,重庆400065) 摘要:RTL8150L是Realtek公司的一款USB转快速以太网控制器,与USB1.1 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 相兼容.给出了 基于OMAP1621的宽带终端RTL8150L的USB转以太网功能的软硬件设计,并给出了调试结果. 关键词:USB主机;USB转以太网;RTL8150L;OHCI 中图分类号:I’P393.03文献标识码:A文章编 号:1006—6977(2007)12—0062—03 DesignofUSBtoEthernetbasedonRTL8150L JIANGMin,ZHANGYi (CommunicationSchool,ChongqingUnwe~iqofpostsandtelectrmunications,ChongOing400065,China) Abstract:RTL8150LisacontrollingchipdevelopedbyREALTEK,whichcanrapidlyswitchfromUSB toEthernet.andiscompatiblewithUSB1.1specifications.Thispapershowstheimplementationproce— durebasedonanOMAP1621broadbandterminal,aswell88thedebuggingresult. Keywords:USBhost;USBtoEthernet;RTL8150L;OHCI 1引言 USB(通用串行总线)是一种计算机外围串行通 信接口标准,与常用的计算机接口相比,它具有热 插拔,即插即用,数据传输可靠,扩展方便,成本低 等优点.基于这些优点,USB已成为当前计算机必 备接口之一,广泛地应用于嵌入式产品中,例如:数 码相机,手机,宽带数据终端等. 2RTL8150L简介 R1’L815OL是Realteak公司的USB转快速以太 网控制器,与USB1.1规范相兼容,它由SIE(串行接 口引擎),MMU(内存管理单元),MAC控制器, SRAM,E~ROM接口,10/100Mb/s物理层接口等单 元模块组成.RTL8150支持4个端点,其中:端点O 用来接收USB主机端发送的控制命令,完成设备的 控制和状态反馈,对通过端点O可实现RTL8150L 寄存器的读写;端点1(BulkIN端点)用来接收以太 网数据包,支持最大包为64字节.如果某个以太网 包大于64字节.R1’L815O将该包分成几个64字节 包.主机通过比较某个USB包是否小于64字节或 包的大小为O判断一个以太网包是否传输完成;端 发展.远程监控更加容易,如智能家具的远程监控, 给人们的生产生活带来了极大方便. 参考文献: 【1】于明,范书瑞,曾祥烨.ARM9嵌入式系统设计与 开发教程『M1.北京:电子工业出版社,2006. 【2】孙琼.嵌入式Linux应用程序开发详解[M】.北京: 人民邮电出版社.2006. 【3】孙天泽,袁文菊.嵌入式设计及Linux驱动开发指 南『M】.北京:电子工业出版社,2007. [41孙纪坤.张小全.嵌入式Linux系统开发技术详 解一基于ARM[MI.北京:人民邮电出版社,2006. [5】王海燕,李芙蓉.基于MC9328MX1的Socket通信 设计与实现【J】.国外电子元器件,2006(11):25-29. 作者简介:李会g(1983一),女,河北衡水人,硕士研 究生.研究方向为嵌入式系统与信息处理. 收稿日期:2007—08—02 咨询编号:071218
本文档为【[word格式] 基于嵌入式Linux2418的CS8900A网卡驱动的实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_633808
暂无简介~
格式:doc
大小:42KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-10-10
浏览量:9