13.USB3.0设备控制器驱动分析


USB 驱动框架分析 USB 控制器作为 Host (USB 主机控制器)时,使用 USB 主机控制器驱动。 USB 控制器作为 device (USB 设备控制器)的时候驱动框架分别为:Gadget Function 驱动、Gadget Function API、Composite 及 UDC (

1.IO体系结构与访问设备


IO体系结构 与外设通信通常称为输入输出,一般缩写为I/O。在实现外设IO的时候,内核必须处理三个可能出现的问题: 必须根据具体的设备类型和模型,使用各种方法对硬件寻址。 内核必须向用户应用程序和系统工具提供访问各种设备的方法。但凡有可能,都应当采用统一的方案,确保程序设计的工作量不会过多,同时保证

11.USB驱动分析


基础层次详解 通用串行总线(USB)主要用于连接主机和外部设备(协调主机和设备之间的通讯),USB 设备不能主动向主机发送数据。USB 总线采用拓扑(树形),主机侧和设备侧的 USB 控制器(Host 和 UDC),每个总线只要一个主机控制器。 主机侧的 USB 节点为根节点,所有子节点都连接在根节

10.USB设备驱动代码分析(鼠标)


定义鼠标ID表 static struct usb_device_id usbmouse_as_key_id_table [] = { {USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,

12.以太网驱动分析


网络驱动架构 Linux 内核网络设备驱动框架分为四个模块:网络协议接口模块、网络设备接口模块、设备驱动模块和网络设备与媒介模块。 网络协议常用数据结构 套接字缓冲区 sk_buff 结构体类型,具体核心成员如下: 存储 IP 数据 skb_shared_info 结构体类型(保存 IP 分片数据)

2.块设备详解


基本概念 磁盘(disk)是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘);如今常用的磁盘是硬磁盘(Hard Disk,简称硬盘)。 块设备(Block Device

3.文件系统关联及字符设备操作


文件系统关联 设备文件都是由标准函数处理,类似普通文件。设备文件也是通过虚拟文件系统来管理的,和普通文件都是通过完全相同的接口访问的。 inode中设备文件的成员数据 虚拟文件系统每个文件都关联到一个inode,用于管理文件的属性。源码如下:

5.插入模块及删除模块操作


基础知识 模块是一种向Linux内核添加设备驱动程序、文件系统及其他组件的有效方法,不需要编译新内核 优点 通过使用模块,内核发布者能够预先编译大量驱动程序,而不会致使内核映像的尺寸发生膨胀。 内核开发者可以将实验性的代码打包到模块中,模块可以卸载,修改代码或重新打包后可以重新装载。 添加和删除 从

4.资源分配及总线系统


资源分配 掌握用于管理资源的数据结构和函数 资源管理 数据结构分析 Linux提供通用框架,用于在内存中构建数据结构。这些结构描述了系统中可用的资源,使得内核代码能够管理和分配资源。其中关键的数据结构resource源码如下:

6.插入删除模块实战


前面已经讲了Linux模块的基本知识,现在我们来熟悉一下模块相关的基本操作。 模块的编写 #include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> // 插入内核时的函数 static int __ini