开发Linux下USB设备驱动程序的方法及实践体验(linuxusb开发)

在linux下开发USB设备驱动程序是一项比较复杂的任务,也是内核开发中重要的一环。本文将介绍如何开发Linux下的USB设备驱动,并结合实际案例给出相应的实践体验。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名雅安服务器托管、营销软件、网站建设、古浪网站维护、网站推广。

1.下载源代码并编译内核

首先需要准备好Linux内核源代码,并从官网上进行下载安装。下载完成后,利用Makefile编译安装内核。Linux内核中已经有许多USB驱动程序,所以,准备编译内核时对预编译的USB驱动程序类型需要进行设置,使之与已有驱动程序进行匹配,这一步操作会比较繁琐,所以务必要认真操作,以免出现后续的麻烦。

2.设置usb设备的ID

当准备完成内核编译安装后,就需要设置相应的usb设备的vendor和product id,以此标识不同的设备,这时候可以通过linux的设备热插拔系统udev,调用udev_hset来配置usbid,需要创建一个文件,文件名为60-usbhid.rules,用于设置usbid,文件内容如下:

# The vendor id 1003 is matching VID_1020 and VID_1047 with PID_0003

SUBSYSTEMS==”usb”, ENV{ID_VENDOR_ID}==”1003″, ENV{ID_MODEL_ID}==”0003″, MODE=”664″

通过以上文件配置完成后,就可以看到usb设备,udev会自动发现识别设备,并调用内核中相应的usb驱动程序,来使设备工作。

3.编写usb设备驱动程序

只有当usb设备的ID正确识别后,才能进行后续的步骤,此时可以正式编写usb设备的驱动程序。在Linux下写USB设备驱动程序主要有两种方法:一种是通过模块驱动;另一种是通过用户态驱动程序,以运行在用户态下。两种驱动程序的区别在于执行权限,模块驱动程序在内核态中执行,具有最高的权限,而用户态的驱动程序会依赖于内核的接口,在用户态下执行,其权限要低于内核态。

在模块驱动程序编写过程中,可以通过一my_usb.c文件中的usb_init函数来完成驱动的提供,usb_init函数的编写如下:

static int __init my_usb_init(void)

{

int result;

/* Request resource for USB device*/

result = usb_register(&my_usb_driver);

if (result) {

printk(KERN_ERR “Failed to register Driver\n”);

return result;

}

printk(KERN_ERR “Succeed in registering Driver\n”);

return result;

}

然后在模块程序中需要调用usb_register函数注册驱动,用于关联USB内核驱动,这样才能实现usb设备的驱动程序编写。最后,需要通过insmod命令将编译后的模块文件安装到系统,来完成驱动程序的加载

所以,从上面我们可以看出,大致步骤就是:准备源代码编译安装内核,设置usb的id,编写usb设备驱动程序,然后通过insmod命令将驱动程序加载。完成以上步骤,就可以实现usb设备的驱动程序开发,从而使得usb设备正常使用。

实践体验:本人此次参与在Linux上开发usb设备驱动程序,和同事一起分析源代码,编写模块驱动程序,按照以上步骤,花费大概半个小时,最后成功完成驱动的安装,并使相应的usb设

成都网站设计制作选创新互联,专业网站建设公司。
成都创新互联10余年专注成都高端网站建设定制开发服务,为客户提供专业的成都网站制作,成都网页设计,成都网站设计服务;成都创新互联服务内容包含成都网站建设,小程序开发,营销网站建设,网站改版,服务器托管租用等互联网服务。

本文名称:开发Linux下USB设备驱动程序的方法及实践体验(linuxusb开发)
标题链接:http://www.hantingmc.com/qtweb/news46/158796.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联