当前位置:嗨网首页>书籍在线阅读

17-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

15.7 总结

Linux I2C驱动体系结构有相当的复杂度,它主要由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。I2C核心是I2C总线驱动和I2C设备驱动的中间枢纽,它以通用的、与平台无关的接口实现了I2C中设备与适配器的沟通。I2C总线驱动填充i2c_adapter和i2c_algorithm结构体,I2C设备驱动填充i2c_driver结构体并实现其本身所对应设备类型的驱动。

另外,系统中i2c-dev.c文件定义的主设备号为89的设备可以方便地给应用程序提供读写I2C设备寄存器的能力,使得工程师大多数时候并不需要为具体的I2C设备驱动定义文件操作接口。

网络设备是完成用户数据包在网络媒介上发送和接收的设备,它将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议。

与字符设备和块设备不同,网络设备并不对应于/dev目录下的文件,应用程序最终使用套接字(socket)完成与网络设备的接口。因而在网络设备身上并不能体现出“一切都是文件”的思想。

Linux系统对网络设备驱动定义了4个层次,这4个层次为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层和网络设备与媒介层。

在本章中,16.1节讲解Linux网络设备驱动的层次结构,描述其4个层次各自的作用以及它们是如何协同合作以实现向下驱动网络设备硬件、向上提供数据包收发接口能力的。16.2~16.8节主要讲解设备驱动功能层的各主要函数和数据结构,包括设备注册与注销、设备初始化、数据包收发函数、打开与释放函数等,在分析的基础上给出了抽象的设计模板。16.9节介绍了DM9000网卡的设备驱动及其在LDD6410开发板上的移植。