前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第16篇技术报告,题目为:
“新的USB设备类API简介”
蓝牙HCI USB传输层
USB CDC ACM
USB CDC ECM
USB大容量存储类
音频(进行中)
HID(进行中)
USB DFU
RNDIS -> CDC NCM
大容量存储类
函数示例(设备处于配置状态)
类实现为主机提供了一些功能
通过控制,中断,批量...管道进行通信
接口描述符描述了实现接口
USB设备配置
应用程序负责配置和初始化
应用程序必须实例化一个或多个USB设备实例
应用程序必须为每个设备实例实例化至少一个配置
应用程序必须将所需的类实例添加到特定的配置中
应用程序必须初始化特定的USB设备实例
应用程序可以启用特定的USB设备实例
用于测试的替代方案 - shell支持
类API的需求
初始化处理程序
关闭处理程序
关联配置已选择事件处理程序
关联配置已禁用事件处理程序
USB控制请求处理程序(发送给主机,发送给设备)
接口配置更新处理程序
端点传输请求完成事件处理程序
暂停/恢复事件处理程序
功能停止状态更新处理程序
类初始化处理程序(init)
在初始化过程中,堆栈会更新所有接口号和端点地址
处理程序在usbd_init()的结果下被调用
实现应该使用它来更新某些描述符部分
处理程序可用于实例化接口字符串描述符
类关闭处理程序(shutdown)
Class Enabled处理程序与Update处理程序
控制请求
为主机到设备和设备到主机请求分别设置独立的处理程序,类实现不需要检查传输方向
协议错误通过errno变量来表示,返回值表示非协议错误
使用USBD_VENDOR_REQ()宏将支持的供应商请求对设备堆栈可见(接收者为设备)
处理程序不应该分配或释放缓冲区,这由较低层级和设备框架完成
如果不使用控制传输,则类不能实现此处理程序
传输请求完成处理程序(request)
类实现使用usbd_ep_enqueue()提交传输请求
处理程序在完成中断/批量/ISO传输请求后被调用,无论结果如何
如果只使用控制传输,则类不能实现此处理程序,例如USB DFU类
同步传输
注意事项