HarmonyOS USB DDK助你轻松实现USB驱动开发

鸿蒙HarmonyOS应用开发之USB DDK开发指导 USB DDK(USB Driver Develop Kit)是为开发者提供的USB驱动程序开发套件,支持开发者基于用户态,在应用层开发USB设备驱动。提供了一系列主机侧访问设备的接口,包括主机侧打开和关闭接口、管道同步异步读写通信、控制传输、中断传输等。 阅读详情

Python微信订餐小程序课程视频

https://edu.youkuaiyun.com/course/detail/36074

Python实战量化交易理财系统

https://edu.youkuaiyun.com/course/detail/35475
HDF(Hardware Driver Foundation)驱动框架是HarmonyOS硬件生态开放的基础,为开发者提供了驱动加载、驱动服务管理和驱动消息机制等驱动能力,让开发者能精准且高效地开发驱动程序。

本期,我们将为大家带来HDF驱动框架中USB DDK的解析与指导。

一、USB DDK介绍

USB(Universal Serial Bus)通用串行总线,用于规范电脑与外部设备的连接和通讯,包含了主机端(Host)和设备端(Device)。其中,主机端负责USB总线中的数据传输及端口管理,设备端则可以连接各种外设,所以USB驱动开发又分为主机端驱动开发和设备端驱动开发。

由于基于内核态开发的USB驱动功能扩展性较差,目前开发者通常选择Libusb库进行USB驱动开发。该库是一种跨平台的用户态开源USB通信库,可以满足开发者基于用户态开发功能驱动的需求。但是,由于Libusb库是完全按照USB协议来封装接口的,所以需要开发者对USB协议要有较深的了解才能很好的使用,对开发者的要求相对较高,让很多比较初级的开发者望而却步。为了让更多的开发者都能进行基于用户态的USB驱动开发,HDF引入了USB DDK开发套件。

USB DDK(USB DriverDevelop Kit)是HDF驱动框架为开发者提供的USB驱动程序开发套件,包括USB Host DDK及USB Device DDK两部分,支持基于用户态开发USB设备驱动的同时,还提供了丰富的USB驱动开发能力,让广大开发者能精准且高效的开发USB驱动程序。

下面,我们将一一道来。

1)USB Host DDK

USB Host DDK给开发者提供了主机端USB驱动开发能力,按照功能分类三大类,分别是DDK初始化类、interface对象操作类及request对象操作类。并为开发者提供了普通模式和专家模式两种开发模式。普通模式下,开发者可通过USBDDK API直接完成相关USB数据读写操作,不需要过多关注底层传输细节。

专家模式下,开发者通过USB RAW API直接访问OS平台USB通道的接口,自定义实现更加复杂的功能。目的是给驱动层留有更灵活,更强大的扩展方案,同时也能够兼容现有驱动,便于移植。USBHost DDK架构如图1所示:

图1 USB Host DDK架构

(1)USB Interface Pool负责USBInterface管理。提供USB Interface申请和回收,USB Interface记录设备端口信息以及资源。USB Interface Pool按照USB Port对USB Interface进行分类管理。同时,此模块还提供了USB DDK API,方便开发者USB数据读写操作。

(2)USB Protocol Layer提供USB协议封装,根据USB协议对设备IO/控制命令的“翻译/解析”,同时负责设备描述符的管理,根据USB Device上报的枚举信息,匹配对应的描述符,并构建对应的USB Interface,并加入到USB Interface Pool中管理。

(3)Device IO Manager负责USBIO请求管理,提供了同步IO和异步IO管理机制,对于异步IO,IO Manager负责将该请求记录下来,然后通过Raw API Library提供的接口依次处理待发送的IO请求;当收到USB控制器应答的处理结果后,IO接收线程负责解析并上报处理结果给上层调用者。

(4)Raw API Library抽象了底层OS能力,定义了统一的OS能力接口,对外提供了USB RAW API,让开发者自定义实现更加复杂的驱动功能。

(5)OS Adapter用于封装与平台(Linux和LiteOS)相关的操作,根据不同平台配置编译对应平台的封装接口。在Linux平台上,访问USBFS的操作,全部都封装在这个模块中;而在LiteOS平台上,基于FreeBSD USB框架的设备访问操作,对应的也都全部封装在这个模块中。

(6)PNP Notify用于动态监测USB状态变化,当有新设备添加/移除时,变化设备信息。同时将所有USB设备信息都通过KHDF上报给UHDF侧的PNPNotify Manager模块来完成加载/卸载第三方功能驱动。

2)USB Device DDK

USB Device DDK给开发者提供了设备端USB驱动开发能力。例如,USB端口动态注册和去注册能力,开发者可以基于能力实现USB端口的动态添加和组合;动态实例化能力,支持根据动态下发设备、配置、接口及端点描述符创建设备实例及传输通道;用户态的数据发送及接收能力,支持用户态下发送及接收数据;复合设备能力,支持一个物理设备上多个逻辑设备,实现多个逻辑设备间隔离,并支持不同逻辑设备同时被不同的应用进程访问。

USB Device DDK架构如图2所示:

图2 USB Device DDK架构

(1)SDK IF负责将USB设备按照设备、接口、管道进行逻辑划分,对配置管理、设备管理、IO管理进行封装。此模块还向开发者提供了设备创建、获取接口、接收Event事件、收发数据等设备测驱动开发的能力接口

OpenHarmony usb打开报错“usb fail error code = -3, error msg = LIBUSB_ERROR_ACCESS” 一、前言:最近公司项目需求,定位要求使用国产系统,国产系统无非就是 统信os ,麒麟OS, 还有这两年比较热的 OpenHarmony。执行命令,可以查看当前OpenHarmony 系统中,所有usb 设备,具体区分是哪一个设备,通过设备的id 可以知道。解决上述问题,需要改变找到设备对应的USB 设备的节点,然后使用 linux 命令手动修改权限。2.1 在OpenHarmony 中,使用命令行工具是 hdc.exe。二、在开发中使用 usb 通讯时,遇到 权限不足,一直报错。 阅读详情

相关推荐

OpenHarmony的USB框架

这里的设备是逻辑设备,对于usb来说就是接口驱动。状态通知:fill:#333;color:#333;color:#333;fill:none;插入通知HdfSBuf接口读写设备结点设备usb busHDF内核驱动服务HDF用户态驱动服务HDIAPPUeventd创建设备结点数据通讯:fill:#333;color:#333;color:#333;fill:none;主设备号次设备号APP设备结点bus usb设备。

myxuan475的专栏 3022

UsbDk, Windows的Usb驱动程序开发套件.zip

UsbDk, Windows的Usb驱动程序开发套件 UsbDkUsbDk ( USB开发套件) is Windows,用于为设备上的USB设备和设备驱动程序提供直接和独占访问,并为设备上的特定操作提供用户界面。库应尽可以能为泛型,支持所有类型的USB设备。大容量和同步传输。复合

UsbDk:Windows USB驱动程序开发套件

UsbDk:Windows USB驱动程序开发套件

UsbDk驱动,使用手机与电脑开发

UsbDk驱动,使用手机与电脑开发

什么!!!寒假就要准备暑期实习

介绍暑期实习,从作用,时间线,投递渠道,技术准备,常见问题,经验教训几个方面介绍暑期实习

今天不coding的博客 1726

Windows系统下Mamba环境配置实战:从零到编译成功

本文详细记录了在Windows系统下从零开始配置Mamba深度学习环境的完整实战过程。针对官方不直接支持Windows的难点,文章提供了关键解决方案,包括安装特定版本的Python、PyTorch与第三方Triton,以及修改源码以解决Windows编译器的兼容性问题,最终成功编译并运行Mamba-SSM。

weixin_28842269的博客 500

利用eds editor生成CANOPEN 设备eds文件

通过以上步骤,您可以根据实际设备的功能特性,自动生成一份符合CANopen协议标准的电子数据表(EDS文件),该文件可以被上位机软件或其他CANopen主站设备用于识别、配置和控制您的CANopen从站设备。使用CANopen EDS Editor生成CANOPEN设备的EDS文件是一个系统化的过程,它涉及将设备的具体技术参数和功能映射到CANopen规范定义的对象字典中。

weixin_38604759的博客 6460

Unity布娃娃系统 Ragdoll Mecanim Mixer使用

6. 选完之后,左键下面的hip等角色各个部位不松开鼠标,拖拽连接到上面Amature的各个部位,如图,下面所有部位都连接完之后,第二步点击Configure Selected Bones确认你的部位连接选择。要做一个布娃娃和动画混合的项目,这个插件是比较不错的,搜了一圈文章教程也是抄来抄去,抄的没有头没有尾,自己摸索着用了一下,记录使用过程吧。8. 之后就点击步骤7图一中的Create Ragdoll,会发现player结构发生变化,如图。4. 添加完脚本之后会显示你的player结构,如图。

SuShengQuanshiW的博客 1650

组态王通过以太网与西门子S7-200 SMART PLC通讯案例详解

通过以上步骤,我们成功实现了组态王与西门子S7-200 SMART PLC的以太网通讯。这一技术不仅提高了工业自动化系统的灵活性和可靠性,还为初学者提供了一个实用的学习案例。希望本文能帮助您快速掌握组态王与西门子S7-200 SMART PLC的通讯技术。如有任何疑问,欢迎留言讨论!

2401_88785500的博客 2005

手把手教你用OPA运放和MOS管搭建恒流源电路(附完整电路图)

本文详细介绍了如何使用OPA运放和MOS管搭建高精度恒流源电路,涵盖核心元器件选型、电路设计、工作原理及实际搭建步骤。通过负反馈控制机制和MOS管工作区设置技巧,实现稳定的电流输出,适用于LED驱动、电池充电等场景。附完整电路图和调试技巧,助您快速掌握恒流源设计。

weixin_29239279的博客 539

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

君逍遥o 812

VMware16虚拟机:下载和安装教程

VMware16 虚拟机 下载和安装教程

MQ0522的博客 20万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 前端周刊第十二期
下一篇: Python 分形算法__代码里开出来的艺术之花
pythonxxoo
博客等级 码龄5年 337粉丝 670原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值