第一次接触驱动层的东西,心里还有点小激动。总感觉自己比没搞之前提高了那么一点点,也不知是真的假的,拉出来遛遛。
1.整体思路
★驱动层
先从驱动层说起,他将USB设备通过Resource Manager注册成一个文件,提供 IO服务:
① :通过USB控制接口登陆回调函数
② :通过USB的回调函数“insertion”,也就是USB插入信号来生成ResourceManager。如果设备已经插入,驱动启动后会立刻受到“insertion”回调。
③ :通过ResourceManager登陆的各种IO接口,提供IO服务。底层是用usb_io来访问USB设备。
★接口层
接口层通过解释设备中的数据协议,提供数据服务,主要有以下三种:
① 连接控制:通过连接接口控制app的接入,处理资源的获取和释放。
② 应答响应:通过各种操作接口提供数据服务,响应用户的请求。
③ 通知处理:通过通知接口及时反映系统的状态。
2.现实
虽然看起来还不错,但是实际运用的时候惨的一塌糊涂,那个各种不稳定啊,现在想起来心里还堵得慌。
这次失败在接口层的通知处理上,当时那位神人是这么搞得
・1秒一次的数据通知,在通知线程中实现
・数据的发送/应答在客户线程中实现
・极品的来了,通知处理和应答处理各自访问设备文件。
应答线程的处理是这样的
⇒通知→转发通知→继续收
⇒本消息的应答→返回
⇒其他消息→无视→继续收
通知线程的处理是这样的
⇒通知→发通知→继续收
⇒其他消息→无视→继续收
问题出来了,只要设备的连接不稳定,那消息是各种丢啊。最后没办法,系统只能频繁的通过重新连接来恢复。
3.反思
再有机会的话要这样:
・通知处理与应答处理应该使用共通的IO层。受到的消息到哪里去由IO层决定。这样消息就不会莫名其妙的消息被丢掉了。
・应答处理中实现消息堆栈。虽然正常状况下消息是一个一个来得,但总是会有一些意外的,为了能在意外发生时保持正常,就要看看自己到底发了啥,来得是真的错误消息,还是其他消息的应答。
分享到:
相关推荐
简要介绍了QNX的特点,论述了QNX下资源管理器和设备驱动程序的关系,在此基础上,详细阐 述了QNX驱动程序编写的特点以及一般步骤。
Broadcom 440x for QNX驱动程序
X86平台QNX6.5系统下NVRAM驱动及测试程序
qnx 嵌入式操作系统的驱动开发的详细介绍,适合具有一定Linux开发经验的人学习。
摘要:介绍嵌入式操作系统QNX的微内核结构、基于io-net的网络子系统、网络设备驱动程序的组成;...本文简单介绍QNX内核和网络结构的特点,针对目前热门的网络应用环境,讨论QNX网络设备驱动程序的结构和编
操作系统是QNX6.6.0, 处理器平台是NXP的i.MX6, NANDflash是美光的SLC NANDflash, ETFS驱动源代码。
QNX 中文手册 QNX 实时操作系统中文手册
研华CAN卡官方驱动包,包含样例,API库,支持Linux、QNX、WinCE、Windows系统。样例支持C#、VC、VB、LabvialView等。包含PCICAN、ICOM
网上找到的QNX下的一个Bluetooth的USB驱动的例子。 包含测试代码。
摘要:介绍实时操作系统QNX4.25下编写设备驱动程序的大体框架、底层细节以及诸多注意点。针对使用较为普遍的PCI设备作为较为详细的描述。 关键词:驱动程序 QNX 实时操作系统 PCI引言QNX是一个多任务、多用户、...
将自己编译生成的动态链接库文件打包到QNX系统中,主要修改的是打包所依赖的build配置文件
研华工控机通用QNX驱动,保证可以在PCM-3362上运行,包括gpio、i2c等驱动
如何在qnx上获取进程内存,上传了一份文档,说明如何获取内存
GF (Graphics Framework) 是QNX出的,与Photon完全不同的一套图形系统。现在的QNX,基本上有三种(四种?)图形开发用的环境可选 。
使用QNX Momentics IDE 4.7开发的qnx串口通信程序,与linux的串口还是有点不同的
安装和配置QNX Momentics 工具和QNX Neutrino 操作系统,然后开发程序。 1 要求 2 安装QNX Momentics 开发包 3 安装 QNX Neutrino 实时操作系统 4 与QNX Neutrino联网 5 创建工程 6 与QNX Neutrino 联网 7 编译和...
文档描述了为了可以使Qt程序运行在QNX系统中如何在宿主机(windows、QNX、linux)以及在目标机(QNX 6.5.0 )中搭建Qt 4.7.1开发环境;文档为英文文档;需要开发者提前自备解压在目标机压缩包qt_qnx_targets.tar.gz...
Qnx 开发手册 Library Reference,from Qnx Software System LTD.
一部致力于QNX实时操作系统开发的专业手册