一种usb重复节点的屏蔽方法

文档序号:9891996阅读:235来源:国知局
一种usb重复节点的屏蔽方法
【技术领域】
[0001]本发明涉及于USB自动挂载领域,尤其涉及一种USB重复节点的屏蔽方法,特别是应用于智能电视的USB自动挂载的重复节点屏蔽方法。
【背景技术】
[0002]—般来讲,操作系统与外部设备(例如,磁带驱动器,磁盘驱动器,打印机,终端,modern)是通过系统匹配创建的拥有对应配置文件的设备节点来进行通信。特别是在Linux系统中,所有设备节点都在/dev目录下,在这个目录中包含了所有Linux系统中使用的外部设备,它实际上是一个访问这些外部设备的端口。实时地在/dev目录下创建和删除设备节点主要通过udev来实现,但它也能在创建节点的同时,执行一个额外地程序。当设备添加/删除时,udev的守护进程侦听来自内核的uevent,以此添加或者删除/dev下的设备节点,所以udev只为已经连接的设备产生设备节点,而不会在/dev下产生大量虚无的设备节点。
[0003]在智能电视领域应用过程中,经常碰到的一个问题是,在电视启动过程中,因为系统运行不稳定的原因,一些功能重要的USB设备断开时udev偶尔未及时删掉/dev目录下的设备节点,USB再建立连接时,udev会为这个设备再创建一个功能相同的重复节点。两个功能相同的设备节点同时向安卓上层应用发送数据时,会造成上层应用异常。在智能电视生产过程中,因为流水线上电视突然掉电和上电的原因,经常出现智能遥控器遥控异常,按一下遥控音量键,电视响应两次;连续按音量键,电视响应两次后不再响应。分析后发现,智能电视的Linux系统udev为智能遥控接收装置多创建了一个相同USB节点,按遥控按键时,这两个USB节点同时向安卓系统发送键码,造成安卓系统识别异常。这种问题在用户多次开关智能电视后,也会概率性出现。

【发明内容】

[0004]针对现有技术存在的不足之处,本发明的目的在于提供一种USB重复节点的屏蔽方法,本方法在设备属性与/dev目录下现有USB节点比较,查询是否已有此属性节点,如果有,本方法返回命令给udev终止节点创建;如果没有,本方法返回命令给udev继续设备节点创建。
[0005]本发明的目的通过下述技术方案实现:
[0006]—种USB重复节点的屏蔽方法,其方法步骤包括如下:
[0007]A、智能电视的Linux内核用户空间内具有存储于/dev目录下的udev模块,当外部添加设备插入连接时,智能电视的Linux内核中的kernel模块会发送设备插入时响应的uevent事件命令,udev模块从kernel模块收到添加设备的uevent事件命令;
[0008]B、判断添加设备描述符是否为已有USB设备;若判断是已有USB设备,则进入步骤C,若判断不是USB设备,则进入步骤D;
[0009]C、查询添加设备的类描述符、标准描述符、HID相关描述符、厂商自定义描述符,将上述四类描述符与存储于/dev目录下的现有USB节点属性进行比较,判断是否完全重复;若是完全重复,则结束;若是不重复,则进入步骤D;
[0010]D、在udev模块的配置文件udev.conf模块里查找规则文件所在的目录,然后进行如下步骤:
[0011 ] Dl在规则文件目录里按顺序查询所有规则文件;
[0012]D2按照所匹配规则,为添加设备创建相应的设备节点属性,并将该设备节点属性存储于/dev目录下;
[0013]D3 结束。
[0014]本发明的添加设备为智能遥控设备、WIFI设备、摄像头设备、磁带驱动器、磁盘驱动器或打印机。
[0015]本发明方法的所有模块位于Linux操作系统中/dev目录下的udev程序内。本方法在udev模块收到kernel事件命令发送的设备插入的uevent事件后,本方法解析出设备的描述符,第一步判断是否为已有USB设备,如果不是,则跳过本方法,继续执行udev;如果为USB设备,则在设备对应的配置文件(udev.conf)里查找规则文件对应所在目录,在规则文件目录里按顺序查找所有规则文件,按照规则文件解析设备的属性,本方法再设备属性与/dev目录下现有USB节点比较,查询是否已有此属性节点,如果有,本方法返回命令给udev终止节点创建;如果没有,本方法返回命令给udev继续设备节点创建。
[0016]本发明较现有技术相比,具有以下优点及有益效果:
[0017](I)本发明可以有效解决Linux系统启动过程udev误创建设备节点的问题,也就解决了智能电视遥控一次按键两次响应的问题,提高了 Linux操作系统的容错空间。
[0018](2)本方法可指向特定的类别设备进行判断屏蔽,不干扰其他设备的挂载规则和加载时间。
【附图说明】
[0019]图1为本发明的流程示意图。
【具体实施方式】
[0020]下面结合实施例对本发明作进一步地详细说明:
[0021 ]实施例
[0022]如图1所示,一种USB重复节点的屏蔽方法,其方法步骤包括如下:
[0023]A、智能电视的Linux内核用户空间内具有存储于/dev目录下的udev模块,当外部添加设备插入连接时,智能电视的Linux内核中的kernel模块会发送设备插入时响应的uevent事件命令,udev模块从kernel模块收到添加设备的uevent事件命令;
[0024]B、判断添加设备描述符是否为已有USB设备;若判断是已有USB设备,则进入步骤C,若判断不是USB设备,则进入步骤D;
[0025]C、查询添加设备的类描述符、标准描述符、HID相关描述符、厂商自定义描述符,将上述四类描述符与存储于/dev目录下的现有USB节点属性进行比较,判断是否完全重复;若是完全重复,则结束;若是不重复,则进入步骤D;
[0026]D、在udev模块的配置文件udev.conf模块里查找规则文件所在的目录,然后进行如下步骤:
[0027]Dl在规则文件目录里按顺序查询所有规则文件;
[0028]D2按照所匹配规则,为添加设备创建相应的设备节点属性,并将该设备节点属性存储于/dev目录下;
[0029]D3 结束。
[0030]本发明的添加设备为智能遥控设备、WIFI设备、摄像头设备、磁带驱动器、磁盘驱动器或打印机。
[0031]智能电视遥控器接收组件通常作为USB设备与连接,智能电视的Linux内核在开机过程中,将要对遥控接收组件设备、WIFI设备、摄像头设备等完成加载,在加载智能遥控设备过程中遇到一个问题是,Linux为同一个遥控接收组件创建了两个功能描述相同的USB设备节点,开机完成后,智能遥控器每按一次按键,安卓系统均收到Linux的USB设备节点发送的两组相同重复数据,造成智能电视异常。
[0032]根据这一故障现象,我们在Linux建立了USB重复节点的屏蔽方法,本方法位于Linux用户空间(user space)内的/dev目录的udev内。
[0033]本方法在udev收到kernel发送的设备插入的uevent事件后,本方法解析出设备的描述符,第一步判断是否为USB设备,如果不是,则跳过本方法,继续执行udev;如果为USB设备,则在设备对应的配置文件(udev.conf)里查找规则文件对应所在目录,在规则文件目录里按顺序查找所有规则文件,按照规则文件解析设备的标准描述符、类描述符、HID相关描述符、厂商自定义描述符(如PID、VID等),本方法再将这四种描述符与/dev目录下现有USB节点比较,查询是否已有此属性节点,如果有,本方法返回命令给udev终止节点创建;如果没有,本方法返回命令给udev继续设备节点创建。
[0034]按照以上方法,我们可以对智能遥控接收组件以及其他在系统中不允许重复创建节点的设备,设置重复节点屏蔽方法,提高系统稳定性。
[0035]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种USB重复节点的屏蔽方法,其特征在于:其方法步骤包括如下: A、智能电视的Linux内核用户空间内具有存储于/dev目录下的udev模块,当外部添加设备插入连接时,智能电视的Linux内核中的kernel模块会发送设备插入时响应的uevent事件命令,udev模块从kernel模块收到添加设备的uevent事件命令; B、判断添加设备描述符是否为已有USB设备;若判断是已有USB设备,则进入步骤C,若判断不是USB设备,则进入步骤D; C、查询添加设备的类描述符、标准描述符、HID相关描述符、厂商自定义描述符,将上述四类描述符与存储于/dev目录下的现有USB节点属性进行比较,判断是否完全重复;若是完全重复,则结束;若是不重复,则进入步骤D; D、在udev模块的配置文件udev.conf模块里查找规则文件所在的目录,然后进行如下步骤: Dl在规则文件目录里按顺序查询所有规则文件; D2按照所匹配规则,为添加设备创建相应的设备节点属性,并将该设备节点属性存储于/dev目录下; D3结束。2.按照权利要求1所述的一种USB重复节点的屏蔽方法,其特征在于:所述添加设备为智能遥控设备、WIFI设备、摄像头设备、磁带驱动器、磁盘驱动器或打印机。
【专利摘要】本发明公开了一种USB重复节点的屏蔽方法,在udev模块收到kernel事件命令发送的设备插入的uevent事件后,本方法解析出设备的描述符,第一步判断是否为已有USB设备,如果不是,则跳过本方法,继续执行udev;如果为USB设备,则在设备对应的配置文件(udev.conf)里查找规则文件对应所在目录,在规则文件目录里按顺序查找所有规则文件,按照规则文件解析设备的属性,本方法再设备属性与/dev目录下现有USB节点比较,查询是否已有此属性节点,如果有,本方法返回命令给udev终止节点创建;如果没有,本方法返回命令给udev继续设备节点创建。本发明可以有效解决Linux系统启动过程udev误创建设备节点的问题,也就解决了智能电视遥控一次按键两次响应的问题,提高了Linux操作系统的容错空间。
【IPC分类】H04N21/426, H04N21/241, H04N21/24
【公开号】CN105657464
【申请号】
【发明人】王春广, 龚红林
【申请人】四川长虹电器股份有限公司
【公开日】2016年6月8日
【申请日】2016年1月28日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1