南海50吨 80吨吊车出租 丹灶附近25吨50吨租 132 5036 5678 里水镇、九江镇、丹灶镇、大沥镇、狮山镇和西樵镇
网络设备初始化网络驱动程序是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()函数,将数据包放到系统接收队列中,完成数据向协议层的传输。
路灯安装、高杆灯维修、路灯维修、出租高空车、高空作业车租赁、出租高空作业平台、高空车出租、高空车出租、高空车出租、高空作业平台租赁、升降平台出租、升降车出租、吊车租赁、升降机出租路灯车、吊车、云梯车、桥检车、升降车、高空作业车、电力抢修车、升降平台、桥梁检测车等,公司承揽路灯更换、桥梁检测、广告安装、电力高空作业施工、桥梁刷漆、节日彩灯更换、工地消防管道安装等高空作业场合