关闭

关闭

封号提示

内容

首页 原创:网络控制器DM9000A在嵌入式系统中的应用.doc

原创:网络控制器DM9000A在嵌入式系统中的应用.doc

原创:网络控制器DM9000A在嵌入式系统中的应用.doc

上传者: 李博敦 2017-10-19 评分 5 0 216 29 980 暂无简介 简介 举报

简介:本文档为《原创:网络控制器DM9000A在嵌入式系统中的应用doc》,可适用于IT/计算机领域,主题内容包含原创:网络控制器DMA在嵌入式系统中的应用摘要:介绍网络接口芯片DMA与ARM处理器ATRM之间的硬件接口设计实现了在嵌入式Linux系统中网络驱动符等。

原创:网络控制器DMA在嵌入式系统中的应用摘要:介绍网络接口芯片DMA与ARM处理器ATRM之间的硬件接口设计实现了在嵌入式Linux系统中网络驱动开发。中国论文网关键词:DMALinux嵌入式系统网络驱动引言目前网络技术在电子产品中的应用越来越广更多的嵌入式设备需要提供网络接口以方便与外部互联通讯。现在流行的大多数嵌入式CPU(如ARM、PPC)都提供了此类接口但对于一些相对复杂的嵌入式系统来说可能需要扩展以太网口以满足网络通讯需要。本文介绍一种新款网络接口芯片DMA它可以很方便的实现与嵌入式CPU的接口实现扩展以太网口的功能。DMADMA是中国台湾DAVICOM公司推出的一款高速以太网接口芯片其基本特征是:集成,M物理层接口内部带有K字节SRAM用作接收发送的FIFO缓存支持,bit两种主机工作模式通过HP认证的AUTO,Mdix(支持直接互连自动翻转)功能支持TCP,IP加速(IPVchecksumoffload)减轻CPU负担提高整机效能nsI,O读写时间。DMA以太网控制器遵循IEEE颁布的以太网传输协议。该电路还集成了EEPROM接口自举时通过EEPROM接口输入到芯片中从而实现自动初始化。硬件接口设计DMA可以很方便的与目前主流的嵌入式CPU以位或位的总线方式连接本文设计的系统CPU为ATRM它是一个采用ARM核的位微处理器。二者的接口设计如图。系统上电时ATRM通过总线配置DMA内部网络控制寄存器(NCR)、中断寄存器(ISR)等完成DMA的初始化。随后DMA进入数据收发等待状态。当ATRM向以太网发送数据时先将数据打包成UDP或IP数据包并通过bit总线发送到DMA的数据发送缓存中然后将数据长度等信息填充到DMA的相应寄存器内使能发送。当DMA接收到外部网络送来的以太网数据时首先检测数据帧的合法性如果帧头标志有误或存在CRC校验错误则将该帧数据丢弃。否则将数据帧缓存到内部RAM并通过中断标志位通知ATRM由ATRM对DMA接收到的数据进行处理。Linux驱动实现Linux网络驱动体系结构在Linux操作系统中的设备驱动根据各类外围I,O设备的不同分为三类即字符设备(如键盘、LCD)驱动、块设备(如硬盘、CF卡)驱动和网络设备(如网卡)驱动。Linux网络设备驱动程序结构上由四部分组成(图):网络协议接口网络设备接口设备驱动功能层及网络设备介质。设计Linux网络驱动程序时最主要的工作就是完成设备驱动功能层。类似于对字符设备和块设备的处理为了屏蔽网络环境中物理网络设备的多样性Linux利用面向对象的思想对所有的网络物理设备进行抽象定义了一个统一的接口。对于所有网络硬件的访问都是通过接口进行的接口向用户提供了一个对于所有类型的网络硬件一致化的操作集合。LinuxDNF神剑wwwdnfcomsjl内核提供的统一网络设备结构为netdevice此结构体位于网络驱动层的核心地位。netdevice中有很多供系访问和协议层调用的设备方法其中包括:dev>open:打开设备。open方法应当注册网络设备需要的任何系统资源(I,O口IRQDMA等)打开硬件进行设备要求的其他设置。dev一>stop:停止设备。该函数应当恢复在打开时进行的操作。dev>hardstartxmit:发送报文。dev>txtimeout:发送超时调用的方法它应当处理这个问题并恢复报文发送。dev>setmacaddress:修改网络的硬件MAC地址。网络驱动就是要实现这些具体的设备方法。设备初始化网络的初始化是设备工作的第一步。当系统加载网络驱动模块的时候就会调用初始化过程。首先利用函数requestmemregion映射DMA的数据、地址端口通过dmfeprobe函数检测网络物理设备是否存在检测DMA内部串行NIC的值是否正确然后再对设备进行资源配置构造设备的netdevice数据结构。包括一些低层硬件信息:baseaddr(网络接口的I,O基地址)irq(安排的中断号)等。打开设备和关闭设备open方法在网络设备被激活的时被调用具体DMA的硬件初始化工作放到这里来做。对于DMA需要完成的初始化包括:对DMA内部上电软件复位通过NCR寄存器设置网络工作模式可以选择设置内部或者外部PHY、全双工或者半双工模式、使能唤醒事件等网络操作对RX,TX中断使能使能数据接收功能。调用requestirq()申请中断号登记中断处理函数调用netifcarrieron侦测连接状态。启动定时器调用netifstartqueue激活设备发送队列。这里对DMA的中断设计做了一个特殊处理:通常ATRM提供最多个中断源默认提供个外部中断源但对于较复杂的嵌入式系统可能会面临中断源不够用的情况。由于ATRM的PIO可以实现功能复用因此可以把多余的引脚配置为可用的中断源。故本系统中设计DMA中断源与ATRM外部I,O口PD引脚相连。一个PIO端口的个引脚共享一个中断ID只需要在中断状态寄存器中区分具体哪个引脚引起中断然后转向特定的中断处理函数执行操作就可以实现中断处理。close所做的工作和open相反主要释放open获得的资源以减少系统负担。数据包发送数据包的发送和接收是实现Linux网络驱动程序中两个最关键的过程对这两个过程处理的好坏将直接影响到驱动程序的整体运行质量。数据传输通过hardstartxmit函数实现首先把存放在套接字缓冲区中的数据发送到网络芯片DMA内部的TXFIFOSRAM中该缓冲区是由数据结构skbuff表示把要传送的数据长度写入DMA中的传输包长度寄存器TXPLL和TXPLH中。然后使能传输。如果数据发送成功则会触发一次中断。实际中会出现多个数据帧传输需要考虑做并发处理。在发送时检测传输队例暂时满载时就要通过netifstopqueue来暂停当发送完成触发中断处理时调用netifwakequeue函数来重新启动传输队例。网络传输由于系统忙或硬件的问题发生延迟则会调用传送超时处理函数txtimeout对硬件复位操作。DNF神剑wwwdnfcomsjl数据包接收数据包的接收是通过中断处理当有数据到达时就产生中断信号网络设备驱动功能层就调用数据包接收程序来处理数据包的接收然后网络协议接口层调用netifrx函数把接收到的数据包传输到网络协议的上层进行处理。DMA接收缓存区中的每帧数据由字节长的首部、有效数据和CRC校验序列构成。首部字节依次是H、以太网帧状态、以太网帧长度低字节和长度高字节数据包接收程序首先检测如果第一个字节是H则说明有数据如果是H则说明无数据需要进行复位。然后调用函数devallocskb申请一块skbuff结构缓冲区从DMA读出数据放置到缓冲区里根据获取的长度信息判断是否读完一帧。如果读完接着读下一帧直到遇到首字节是H的帧说明接收数据已读完。接下来填充skbuff中的一些信息使之成为规范的skbuff结构最后调用netifrx()函数将接收到的数据传输到网络协议的上层。结语该设计成功用于某网络测试设备的主控模块上可以通过以太网接入Internet从而实现从Internet上监控嵌入式设备。转载请注明来源。原文地址:DNF神剑wwwdnfcomsjl

类似资料

该用户的其他资料

[专题]简述非金融企业债务融资工具的种类.doc

【精品】供应商参与报价确认函71.doc

客户报修记录表.doc.doc

[教学]2015冬季路丫子小队晴空分队下乡策划.doc

竹粉增强聚丙烯发泡复合材料的研究.doc

职业精品

精彩专题

用户评论

0/200
    暂无评论
上传我的资料

精选资料

热门资料排行换一换

  • 60天完美口才打造计划.pdf

  • 标日初级上.pdf

  • 标日初级下.pdf

  • 连环画_前汉演义(26册)03张…

  • 竞赛讲座 23完全平方数.doc

  • 北师大版数学九年级上册电子课本.…

  • 元史论丛(第2辑).pdf

  • “园林景观工程施工”招标文件.d…

  • 秦西汉故事(中册).pdf

  • 资料评价:

    / 5
    所需积分:0 立即下载

    意见
    反馈

    返回
    顶部