• 1
  • 2
新闻中心
联系我们
  • 公司名称: 恒越(江门)登高车租赁有限公司
     
    联系方式; 136 0000 1358  138 23423455 
     
    投诉建议;   QQ:594933949
     
    业务范围;江门 新会  蓬江 鹤山 开平 江海

新闻详细
东莞高空登高车出租, 东莞高空登高车租赁, 东莞高空登高车价格
新闻分类:行业资讯   作者:admin    发布于:2017-04-094    文字:【】【】【


       硬件连接电路系统要实现数据的传输,微控制器和网络接口控制器是关键的部分, 东莞高空登高车出租, 东莞高空登高车租赁, 东莞高空登高车价格  以太网设备驱动程序驱动程序是将操作系统和硬件连接起来的接口,操作系统通过该接口才能进行设备的识别和被其它应用程序进行访问。设备的驱动程序为上层应用程序提供了一个接口,无需了解具体的硬件电路,就可以很方便的对设备进行各种操作。本系统中驱动程序是在Linux操作系统下进行开发的,该操作系统源代码开放、内核小,支持TCP/IP协议,具有强大的网络功能。Linux操作系统中支持的硬件设备为:字符设备、块设备、和网络设备。字符设备不具备缓冲区,可以像字节流一样进行实时的读写访问,例如系统中的串口等。块设备是以块为单位进行读写的,支持随机访问,主要是针对慢速设备的。网络设备采用BSD套接口实现读写,驱动根据系统定义的统一接口对硬件进行访问。在Linux内核中,网络驱动程序的体系结构从上到下可以划分为四层,分别为网络协议接口层、网络设备接口层、设备驱动功能层和网络设备媒介层。 网络设备驱动分层结构(1)网络协议接口层是通过调用内核提供的dev_queue_xmit()和net_fx()两个接口为上层提供数据包接收和发送的接口。Linux网络系统采用Socket机制,发送和接收的数据包主要内容为sk_buff结构中的数据,sk_buff套接字缓冲区为网络层提供了一种高效的缓冲区处理和流量控制机制。这一层不会因为设备不同受到影响。(2)网络设备接口层定义了net_device结构体,该结构体中含有网络设备的所有信息。每个网络设备都可以进行注册,通过对自身net_device中成员变量进行赋值,完成内核和设备连接,可通过调用函数来操作设备完成相应功能。net_device相当于网络设备的通用接口,且每个网络接口都可看成一个发送和接收数据包的实体。(3)设备驱动功能层是接口层结构体中函数指针的具体实现,net_device结构中指向的设备打开、关闭、数据包发送、中断处理等具体的函数,是网络设备驱动的主要部分。




    东莞高空登高车出租, 东莞高空登高车租赁, 东莞高空登高车价格 www.ztgkccz.com/





     网络设备初始化网络驱动程序是Linux内核中的一个模块,在内核模块被加载调用时,会对模块进行初始化操作,由初始化函数来对网络设备的硬件寄存器、DMA和相关的内核变量等进行配置。设备的初始化函数中主要实现对硬件的初始化和内核变量的初始化两部分。(1)硬件初始化需对PHY、MAC和DMA三个硬件部分进行操作。PHY模块通过MACB_InitPhy()、MACB_AutoNegotiate()和MACB_GetLinkSpeed()函数实现对双工/半双工模式、自协商模式和运行速率等参数的设置。初始化MAC模块实现对设备接口模式的设置,初始化DMA模块完成对BD表的建立、属性以及分配缓存等进行设置。(2)内核变量的初始化,主要是完成设备IO资源的申请,对net_device结构体中相关成员变量进行初始化,完成中断的处理,时钟的设置、设备注册等。设备通过探针函数probe进行初始化操作,在初始化操作结束后,检测到的设备将直接保存到接口管理链表中,通过指针指向net_device数据结构,其链表中的每个单元表示一个已经存在的网络设备。网络设备的打开和关闭驱动程序在加载的过程中需对接口进行探测,且在数据包发送或接收前必须打开并初始化接口。位于net_device数据结构中的打开接口函数,格式为int(*open)(structnet_device*dev),其中open函数指针指向的函数负责打开接口,并告知接口开始工作,DMA通道、中断、I/O端口等资源进行相应的设置。接着系统通过调用netif_start_queue函数使发送开始工作。关闭接口函数要完成与打开相反的操作,实现函数为net_device数据结构中的stop函数,格式为int(*stop)(structnet_device*dev)。关闭后系统调用netif_stop_queue()函数,数据包结束传送,并释放某些资源以减少系统的负担。




     数据的发送和接收网络设备最重要的操作就是发送和接收数据,发送是通过相应的发送函数接口来实现的,待发送的数据包经过系统调用进入到内核空间,处理后会保存在sk_buff结构体所指向的套接字缓冲区中。然后系统内核再通过调用数据包的发送函数,函数格式为:inthard_start_xmit(structsk_buff*skb,structnet_device*dev),其中skb为sk_buff的指针,将套接字缓冲区的数据通过DMA传输到DM9161A中转换成串行比特流,再进行曼彻斯特编码处理后发送数据。发送后释放skb缓冲区,重新使能中断。数据包的接收是以中断机制为基础的,是个被动的过程。当数据到来时会触发硬件产生中断信号,通过读取中断状态寄存器,判断出数据接收中断后,内核会切断当前正在执行的进程,调用dmfe_packet_receive(structnet_device*dev)数据接收函数。并根据获取接收数据包的大小,通过操作skb=dev_allocskb()函数,申请套接字缓存的大小。将DM9161接收到的数据通过DMA读到skb中,填充信息成为规范的sk_buff结构后,操作netif_rx()函数,将数据包放到系统接收队列中,完成数据向协议层的传输。




     东莞高空登高车出租, 东莞高空登高车租赁, 东莞高空登高车价格



分享到:
点击次数:1263  更新时间:2017-04-09  【打印此页】  【关闭

Copyright © 2009-2014,广东省恒越登高车租赁有限公司,All rights reserved