本发明涉及QNX软件技术领域,尤其涉及一种QNX系统的USB驱动加载方法。

背景技术:

QNX系统是由加拿大QSSL公司(QNX Software System Ltd.)开发的分布式实时操作系统,以其稳定著称,因此非常适合作用对稳定性要求较高的车载信息系统的操作系统。

USB作为车机系统上一个重要的娱乐模块,备受终端用户关注,USB设备在某些情况下,如反复插拔、反复开关机ACC ON/OFF,或者是CPU占用率很高时,USB驱动可能会出现加载不正常的情况。

因此,现有技术有待进一步改进。

技术实现要素:

本发明提供一种QNX系统的USB驱动加载方法,旨在解决现有技术中的缺陷,实现USB驱动的准确加载。

为达到上述目的,本发明所采取的技术方案为:

S1、系统启动,首次读取USB设备寄存器,获取USB设备初始状态并保存,启动USB状态监测线程;

S2、以预设周期T监测USB设备的插拔状态,若检测到USB设备已插入,则进入下一步;

S3、判断是否为USB存储设备,是则进入下一步,否则进入步骤S7;

S4、监测USB设备安装状态是否OK,是则进入步骤S5,否则进入步骤S6;

S5、检测在预设时间t1内USB设备目录下的相应PPS文件是否创建成功,是则进入步骤S6,否则进入步骤S7;

S6、检测在预设时间t2内USB盘符路径是否创建成功,是则进入步骤S12,否则进入步骤S7;

S7、判断USB驱动加载失败;

S8、发送预设USB驱动错误诊断码;

S9、接收所述预设USB驱动错误诊断码,结束当前USB驱动进程;

S10、判断模拟USB驱动进程拉起是否成功,是则返回步骤S3,否则进入下一步;

S11、判断为不可识别的设备,返回步骤S2;

S12、USB设备驱动加载成功,返回步骤S2。

具体地,所述判断是否为USB存储设备,包括如下步骤:

步骤301、检测USB设备版本目录下的版本PPS文件是否生成;

步骤302、判断所述版本PPS文件中的设备数目是否为1,是则进入下一步;

步骤303、判断所述版本PPS文件中的class ID是否为预设值,是则判断为USB设备,否则判断为非USB设备。

具体地,所述判断模拟USB驱动进程拉起是否成功,包括如下步骤:

步骤1001、检测模拟USB驱动进程拉起次数是否超过预设次数n,是则判断为不可识别的设备,否则进入下一步;

步骤1002、开始模拟USB驱动进程拉起,当监测到USB设备寄存器的状态由插入变为拔出时,将其判断为模拟USB驱动进程拉起运行中;

步骤1003、当监测到USB设备寄存器的状态由拔出变为插入时,判断模拟USB驱动进程拉起结束,并返回步骤3。

具体地,所述预设周期T=2s。

具体地,所述预设时间t1=5s。

具体地,所述预设时间t2=5s。

具体地,所述预设次数n=3。

本发明的有益效果在于:本发明通过检测USB的插拔状态,当检测到USB驱动加载失败后,发送预设USB驱动错误诊断码,结束当前USB驱动进程,然后模拟USB驱动进程拉起,实现USB设备驱动的重新加载。

附图说明

图1是本发明的QNX系统的USB驱动加载的流程示意图。

具体实施方式

下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。

请参见图1,本实施例提供的QNX系统的USB驱动加载方法,主要包括以下步骤:

步骤1、系统启动,首次读取USB设备寄存器,获取USB设备初始状态并保存,启动USB状态监测线程。

所述USB设备初始状态为插入或者拔出。

步骤2、以预设周期T监测USB设备的插拔状态,若检测到USB设备已插入,则进入下一步。

在本实施例中,所述预设周期T=2s。

在具体实施时,所述监测USB设备的插拔状态通过读取USB设备寄存器来实现。

步骤3、判断是否为USB存储设备,是则进入下一步,否则进入步骤7。

具体地,所述判断是否为USB存储设备,包括如下步骤:

步骤301、检测USB设备版本目录下的版本PPS文件是否生成。

PPS即Persistent Pusblish/SubScribe的缩写,是QNX系统特有的多进程间的一种通讯方式。PPS文件是一个文件节点信息,里面记录了一些状态信息。

在本实施例中,所述USB设备版本目录为/pps/qnx/driver,该目录在QNX系统在USB设备已插入的情况下,会生成的一个版本PPS文件。例如,

/pps/qnx/driver/usb-1.0.1的PPS文件记录的就是当前的USB的1.0.1版本USB设备的状态信息。

步骤302、判断所述版本PPS文件中的设备数目是否为1,是则进入下一步。

步骤303、判断所述版本PPS文件中的class ID是否为预设值,是则判断为USB设备,否则判断为非USB设备。

按照USB通讯协议,USB的class ID=0x08。

步骤4、监测USB设备安装状态是否OK,是则进入步骤5,否则进入步骤6。

在具体实施时,通过检测/pps/qnx/mount节点是否生成来判断USB设备安装状态是否已OK。

步骤5、检测在预设时间t1内USB设备目录下的相应PPS文件是否创建成功,是则进入步骤6,否则进入步骤7。

在本实施例中,所述预设时间t1=5s。

在本实施例中,使用Linux的select函数来监控USB设备版本目录(/pps/qnx/device)、USB设备驱动目录(/pps/qnx/driver)及PPS文件是否已经生成。

步骤6、检测在预设时间t2内USB盘符路径是否创建成功,是则进入步骤12,否则进入步骤7。

在本实施例中,所述预设时间t2=5s。

步骤7、判断USB驱动加载失败。

步骤8、发送预设USB驱动错误诊断码。

步骤9、接收所述预设USB驱动错误诊断码,结束当前USB驱动进程。

在具体实施时,QNX系统通过资源管理器接收所述预设USB驱动错误诊断码,执行相应脚本结束所述当前USB驱动进程。

在具体实施时,所述USB驱动进程是指USBLauncher,它是QNX系统负责加载USB驱动的进程。

步骤10、判断模拟USB驱动进程拉起是否成功,是则返回步骤3,否则进入下一步。

在本实施例中,所述判断模拟USB驱动进程拉起是否成功,包括如下步骤:

步骤1001、检测模拟USB驱动进程拉起次数是否超过预设次数n,是则判断为不可识别的设备,否则进入下一步。

在本实施例中,所述预设次数n=3。

步骤1002、开始模拟USB驱动进程拉起,当监测到USB设备寄存器的状态由插入变为拔出时,将其判断为模拟USB驱动进程拉起运行中;

步骤1003、当监测到USB设备寄存器的状态由拔出变为插入时,判断模拟USB驱动进程拉起结束,并返回步骤3。

在重新启动USB驱动进程的过程中,最开始读取USB设备寄存器时,读取到的值为0,表示USB设备已拔出,然后寄存器读取到的值变为1,表示USB设备已插入;但实际上所述USB设备并未真正拔下然后插入,因此为了将重新启动USB驱动进程的过程与USB的物理拔插的过程区分,定义了重新启动USB驱动进程的过程中的三种状态:模拟USB驱动进程拉起开始、模拟USB驱动进程拉起运行中、模拟USB驱动进程拉起结束,从而实现重新启动USB驱动进程的目的。

步骤11、判断为不可识别的设备,返回步骤2。

步骤12、USB设备驱动加载成功,返回步骤2。

以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。

qnx 设备驱动开发_一种QNX系统的USB驱动加载方法与流程相关推荐

  1. python自带的对称算法_一种基于对称算法和专用加载模块的Python程序模块加密方法...

    一种基于对称算法和专用加载模块的Python程序模块加密方法 [专利说明]一种基于对称算法和专用加载模块的Python程序模块加密方法 技术领域 [0001]本发明涉及一种网络安全技术,具体涉及一种P ...

  2. matlab 读取voi文件,VOI虚拟化下的Windows网卡驱动加载方法与流程

    本发明涉及计算机技术领域,特别涉及VOI虚拟化下的Windows网卡驱动加载方法. 背景技术: 在VOI虚拟化方案中,首先需要确保网卡驱动能够提前加载到系统中,才能够实现通过网络来引导操作系统启动.现 ...

  3. 反射内存 延时_一种基于反射内存卡的OpenDDS分布式通信方法与流程

    本发明属于分布式通信技术领域,尤其涉及一种基于反射内存卡的OpenDDS分布式通信方法. 背景技术: 随着分布式系统复杂程度的不断增加和研发规模的迅速扩大,系统集成的难度和风险都在大幅提高.提供实时系 ...

  4. 电容屏物体识别_一种基于触摸屏触摸点的物体识别方法与流程

    本发明涉及触摸屏触摸点物体识别技术领域,具体为一种基于触摸屏触摸点的物体识别方法. 背景技术: 多触点触摸屏支持多个触点同时输入,通过触摸屏的点的特征,进行物体识别是一个成熟的技术,以下简称物体识别为 ...

  5. 麦克风声源定位原理_一种利用麦克风阵列进行声源定位的方法与流程

    本发明涉及计算机信号处理领域,具体涉及一种用麦克风阵列时延估计定位声源的方法. 背景技术: 20世纪80年代以来,麦克风阵列信号处理技术得到迅猛的发展,并在雷达.声纳及通信中得到广泛的应用.这种阵列信 ...

  6. apk 路由器劫持_一种在路由器上防止网页劫持的方法与流程

    本发明属于网络技术领域,尤其涉及一种在路由器上防止网页劫持的方法. 背景技术: HTTP请求在网络中进行明文传输,传输过程中常常会被网络节点中的路由设备进行连接并修改,以实现广告插入和将请求导流到钓鱼 ...

  7. bim 模型web页面展示_一种操纵BIM模型在网页展示的方法与流程

    本发明涉及操纵BIM模型在网页展示的方法. 背景技术: : 现有网页展示BIM模型使用的是同步传输技术,同步传输的比特分组较大,它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组 ...

  8. 企业微信推送消息延迟_一种基于企业微信的消息推送方法与流程

    本发明涉及消息推送技术领域,特别涉及一种基于企业微信的消息推送方法. 背景技术: 随着微信公众号的普及,微信企业号也越来越受到人们的关注.而腾讯公司在微信企业号的基础上又进行了进一步的升级,提供了类似 ...

  9. led的伏安特性曲线 matlab实现_一种基于MATLAB的分析避雷器伏安特性的方法与流程...

    本发明属于电力电子技术领域,涉及一种基于MATLAB的分析避雷器伏安特性的方法. 背景技术: 目前,我国±1100kV特高压直流输电工程建设正在稳步推进,特高压直流系统用金属氧化物避雷器是直流输电系统 ...

  10. python应用如何实现升级_一种基于Python实现BMC批量升级的方法与流程

    本发明涉及BMC批量升级,尤其涉及一种基于Python实现BMC批量升级的方法. 背景技术: 随着现代服务器主板技术的发展,主板设计形态复杂多变.无论是设计成本还是后期使用过程中的维护成本都很高.如何 ...

最新文章

  1. 快速搭建samba服务
  2. 重装IDEA再也不愁了,一招搞定同步个人配置!
  3. spring web参数传递
  4. Java进阶学习之Java架构师的学习路线
  5. C. The Meaningless Game
  6. python PIL 打开\显示\保存图像
  7. Nexus 3.31.1 maven 私服 仓库配置篇 linux
  8. 南邮计算机科学与技术专业排名,南京邮电大学王牌专业有哪些
  9. LeetCode--283--移动0
  10. java 图片地址,java中图片地址存入数据库
  11. JavaScript字符串split方法
  12. 6月全球浏览器份额之争:霸主IE份额持续降至54%
  13. UG NX 12 鼠标及快捷键的用法
  14. 如何搭建自己的CI/CD平台:Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台(持续集成部署Hexo博客Demo)
  15. php 开发微信app支付接口
  16. 阿里云GPU服务器租用费用及计费模式说明
  17. Matlab之real和imag函数
  18. python之析构方法、item系列、hash方法、eq方法
  19. 服务器操作系统版本号怎么看,服务器怎么看操作系统版本号
  20. 常见文档注释工具简介

热门文章

  1. python 模拟用户点击浏览器_浏览器行为模拟之requests、selenium模块
  2. 暗通道去雾算法原理及实现
  3. bp神经网络训练流程图,bp神经网络训练样本
  4. 日语N5名词整理:单词按发音汇总
  5. ACM 程序设计竞赛 数学题目
  6. 《工程学导论》读书笔记-2
  7. Mugeda(木疙瘩)H5案例课—H5酷炫特效制作-岑远科-专题视频课程
  8. 怎么进入联想电脑bios系统
  9. 肿么查找联想笔记本的序列号
  10. freeswitch之G729转码操作配置详解