随笔分类 -  liunx设备驱动程序

上一页 1 2 3 4 5 6 7 ··· 11 下一页
个人学习使用,所有收集仅供参考。
摘要:在 2.5 开发循环中一个声明的目标是为内核创建一个统一的设备模型. 之前的内核没有单一的数据结 构, 使它们可以来获取关于系统如何整合的信息. 尽管缺乏信息, 有时事情也进行的不错. 新系统, 带 有它们的更加复杂的技术并且需要支持诸如电源管理等特性, 但是, 清楚地要求需要一个通用的描述系 统结 阅读全文
posted @ 2019-07-07 19:44 樊伟胜 阅读(321) 评论(0) 推荐(0) 编辑
摘要:usb_control_msg 函数就像 usb_bulk_msg 函数, 除了它允许一个驱动发送和结束 USB 控制信息: int usb_control_msg(struct usb_device *dev, unsigned int pipe, u8 request, u8 requestty 阅读全文
posted @ 2019-07-07 19:43 樊伟胜 阅读(1683) 评论(0) 推荐(0) 编辑
摘要:usb_control_msg 函数就像 usb_bulk_msg 函数, 除了它允许一个驱动发送和结束 USB 控制信息: int usb_control_msg(struct usb_device *dev, unsigned int pipe, u8 request, u8 requestty 阅读全文
posted @ 2019-07-07 19:43 樊伟胜 阅读(236) 评论(0) 推荐(0) 编辑
摘要:USB 核心中的几个帮忙函数可用来从所有的 USB 设备中存取标准信息. 这些函数不能从 中断上下文或者持有自旋锁时调用. 函数 usb_get_descriptor 获取指定的 USB 描述符从特定的设备. 这个函数被定义为: int usb_get_descriptor(struct usb_d 阅读全文
posted @ 2019-07-07 19:43 樊伟胜 阅读(770) 评论(0) 推荐(0) 编辑
摘要:usb_bulk_msg 创建一个 USB 块 urb 并且发送它到特定的设备, 接着在返回到调用者之 前等待完成. 它定义为: int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, 阅读全文
posted @ 2019-07-07 19:42 樊伟胜 阅读(338) 评论(0) 推荐(0) 编辑
摘要:usb_bulk_msg 创建一个 USB 块 urb 并且发送它到特定的设备, 接着在返回到调用者之 前等待完成. 它定义为: int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, 阅读全文
posted @ 2019-07-07 19:42 樊伟胜 阅读(2067) 评论(0) 推荐(0) 编辑
摘要:当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备. urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; goto error; } 在 urb 被成 阅读全文
posted @ 2019-07-07 19:41 樊伟胜 阅读(324) 评论(0) 推荐(0) 编辑
摘要:当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备. urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; goto error; } 在 urb 被成 阅读全文
posted @ 2019-07-07 19:41 樊伟胜 阅读(227) 评论(0) 推荐(0) 编辑
摘要:在之前章节描述的 struct usb_driver 结构中, 驱动指定 2 个 USB 核心在合适的时候 调用的函数. 探测函数被调用, 当设备被安装时, USB 核心认为这个驱动应当处理; 探测 函数应当进行检查传递给它的关于设备的信息, 并且决定是否驱动真正合适那个设备. 去 连接函数被调用当 阅读全文
posted @ 2019-07-07 19:40 樊伟胜 阅读(170) 评论(0) 推荐(0) 编辑
摘要:在之前章节描述的 struct usb_driver 结构中, 驱动指定 2 个 USB 核心在合适的时候 调用的函数. 探测函数被调用, 当设备被安装时, USB 核心认为这个驱动应当处理; 探测 函数应当进行检查传递给它的关于设备的信息, 并且决定是否驱动真正合适那个设备. 去 连接函数被调用当 阅读全文
posted @ 2019-07-07 19:40 樊伟胜 阅读(264) 评论(0) 推荐(0) 编辑
摘要:struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个 列表被 USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当特定设备被插入系统时. struct usb_device_id 结构定义有下面的成员: u16 m 阅读全文
posted @ 2019-07-07 19:39 樊伟胜 阅读(415) 评论(0) 推荐(0) 编辑
摘要:所有 USB 驱动必须创建的主要结构是 struct usb_driver. 这个结构必须被 USB 驱动填 充并且包含多个函数回调和变量, 来向 USB 核心代码描述 USB 驱动: struct module *owner 指向这个驱动的模块拥有者的指针. USB 核心使用它正确地引用计数这个 阅读全文
posted @ 2019-07-07 19:39 樊伟胜 阅读(377) 评论(0) 推荐(0) 编辑
摘要:为停止一个已经提交给 USB 核心的 urb, 函数 usb_kill_urb 或者 usb_unlink_urb 应 当被调用: int usb_kill_urb(struct urb *urb); int usb_unlink_urb(struct urb *urb); The urb para 阅读全文
posted @ 2019-07-07 19:35 樊伟胜 阅读(449) 评论(0) 推荐(0) 编辑
摘要:如果对 usb_submit_urb 的调用成功, 传递对 urb 的控制给 USB 核心, 这个函数返回 0; 否则, 一个负错误值被返回. 如果函数成功, urb 的完成处理者(如同被完成函数指针指 定的)被确切地调用一次, 当 urb 被完成. 当这个函数被调用, USB 核心完成这个 urb 阅读全文
posted @ 2019-07-07 19:34 樊伟胜 阅读(349) 评论(0) 推荐(0) 编辑
摘要:一旦 urb 被正确地创建,并且被 USB 驱动初始化, 它已准备好被提交给 USB 核心来发送 出到 USB 设备. 这通过调用函数 usb_submit_urb 实现: int usb_submit_urb(struct urb *urb, int mem_flags); urb 参数是一个指向 阅读全文
posted @ 2019-07-07 19:29 樊伟胜 阅读(166) 评论(0) 推荐(0) 编辑
摘要:一旦 urb 被正确地创建,并且被 USB 驱动初始化, 它已准备好被提交给 USB 核心来发送 出到 USB 设备. 这通过调用函数 usb_submit_urb 实现: int usb_submit_urb(struct urb *urb, int mem_flags); urb 参数是一个指向 阅读全文
posted @ 2019-07-07 19:29 樊伟胜 阅读(234) 评论(0) 推荐(0) 编辑
摘要:不幸的是, 同步 urb 没有一个象中断, 控制, 和块 urb 的初始化函数. 因此它们必须在 驱动中"手动"初始化, 在它们可被提交给 USB 核心之前. 下面是一个如何正确初始化这 类 urb 的例子. 它是从 konicawc.c 内核驱动中取得的, 它位于主内核源码树的 drivers/u 阅读全文
posted @ 2019-07-07 19:28 樊伟胜 阅读(210) 评论(0) 推荐(0) 编辑
摘要:控制 urb 被初始化几乎和 块 urb 相同的方式, 使用对函数 usb_fill_control_urb 的 调用: void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, uns 阅读全文
posted @ 2019-07-07 19:27 樊伟胜 阅读(263) 评论(0) 推荐(0) 编辑
摘要:块 urb 被初始化非常象中断 urb. 做这个的函数是 usb_fill_bulk_urb, 它看来如此: void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, 块 urb 被初始化非常象中断 urb. 做这个的函数是 us 阅读全文
posted @ 2019-07-07 19:16 樊伟胜 阅读(258) 评论(0) 推荐(0) 编辑
摘要:函数 usb_fill_int_urb 是一个帮忙函数, 来正确初始化一个 urb 来发送给 USB 设备的 一个中断端点: 函数 usb_fill_int_urb 是一个帮忙函数, 来正确初始化一个 urb 来发送给 USB 设备的 一个中断端点: void usb_fill_int_urb(st 阅读全文
posted @ 2019-07-07 19:15 樊伟胜 阅读(327) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 11 下一页