WIFI 分析 - 1 - SDIO_WIFI 分析WIFI 之我见 作者:黄树新 时间:2011-11-18 地点:华清远见深圳分中心 SDIO_WIFI整个设备分为两个部分,一个是SD卡,一个是WIFI。SD卡部分主要涉及的重点在与如何识别SD卡和支持热拔插,而WIFI部分主要的重点在于发送和接收数据,现在,由小弟带着大家走一遭,本文涉及内容完全属于个人对WIFI部分理解,属于个人观点,如有错误,欢迎指导纠正。 WIFI驱动属于网络设备驱动,那么我们首先从它的结构出发,要了解它的结构,我们首先了解一般网络设备驱动的结构。 下图1是LINUX下网络驱动程序的体系结构: 图1 1、网络协议接口层想网络层协议提供一个统一的数据包收发接口,不论是上层协议为APP还是IP,都通过 dev_queue_xmit()函数发送数据,并通过 netif_rx()函数接收数据。这一层的存在使得上层协议独立于具体的设备。 2、网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。 3、设备驱动功能层函数是网络设备接口层 net_device数据结构的具体成数据包发送 dev _qu eu e_x mit() 数据包接收 netif_rx () 数据包发送 hard_start_x mit() 中断处理(数据包接收) stru ct net_dev ice 网络物理设备媒介 网络协议接口层 网络设备接口层 网络驱动功能层 网络设备与媒介层 WIFI 分析 - 2 - 员,是驱使网络设备硬件完成相应动作的程序,它通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接收操作。 4、网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络适配器和具体的传输媒介,网络适配器被设备驱动层中得函数物理上的驱动。对于 LINUX系统来说,网络设备和媒介可以是虚拟的。 在设计具体的网络设备驱动程序时,我们需要完成的主要工作是编写设备驱动功能层的相关函数以填充net_device数据结构的内容并将net_device注册入内核。 在进入正式驱动之前,还是要给大家补充一点基础知识,就是如何管理总线,设备,驱动之间关系的,关于 bus_type、device_driver、device 这三个内核结构,在内核代码中可以找到。由于这三个结构的重要性,我们在这里先将它们贴出来,我会用红色的注释标注。我在笔记中将会提到的一些结构成员以其代表的意义,这样便于对照。(我不得不承认,这三个...