xtoolbox / TeenyUSB

Lightweight USB device and host stack for STM32 and other MCUs. Ready for USB 3.0 device.
http://www.tusb.org
MIT License
563 stars 175 forks source link

希望能补充一些tusb库的移植说明 #7

Open ueJone opened 4 years ago

ueJone commented 4 years ago

首先感谢楼主付出的努力! 看楼主做了多款开发板的兼容,能否基于cubemx做个移植的说明呢?看了下《USB设备开发指南》还是不清楚怎么把tusb移植到自己的目标板上,真心希望楼主能出个说明资料,谢谢

RadioOperator commented 4 years ago

有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/

ueJone commented 4 years ago

哇原来有啊,之前现在L4的芯片上移植没找着头绪,我看下资料,谢谢楼主

ueJone commented 4 years ago

有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/

楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题:

把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义

ueJone commented 4 years ago

“teeny_usb_init.h”也是在demo目录下,建议楼主把tusb的协议栈都归类到一个目录下,然后说明哪些接口需要用户来实现,这样方便移植

xtoolbox commented 4 years ago

有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/

楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题:

把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义

是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。

xtoolbox commented 4 years ago

“teeny_usb_init.h”也是在demo目录下,建议楼主把tusb的协议栈都归类到一个目录下,然后说明哪些接口需要用户来实现,这样方便移植

是的,目前还缺少一个step by step的项目建立说明文档,只提供了几个例子,估计目前用TeenyUSB的人几乎都是从例子改代码来做的。 teeny_usb_init.h是通过工具(dt1.tusb.org)自动生成的,是根据描述符初始化端点的文件。 目前TeenyUSB的初始化部分不是很规范,端点0和其它端点是一起初始化的,按照USB设计端点0在reset时初始化,其它端点在set config后初始化。后面有规范化TeenyUSB的计划,到时候会一并处理这些问题。

ueJone commented 4 years ago

有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/

楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题: 把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义

是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。

我基于demo中的drd_rtt,最后总算是能识别设备了,说下我移植过程遇到的最头疼的地方吧:

  1. usb初始化部分都是直接用的寄存器接口
  2. USB的IO配置也是使用寄存器
  3. USB的参数、时钟、中断等配置 这几个地方基本都是寄存器实现的,不同芯片会有差异,我这边花费了很多时间还是没跑起来,最终还是用直接调用HAL库的usb初始化代码简单暴力的跑起来了。

从兼容性、稳定性以及开发效率几个方面考虑推荐直接用cubemx生成的代码,也可以加上宏定义供用户选择。总之感谢您的付出,期待新的规范,还有这个库以后是不是也能做成平台无关的呢

xtoolbox commented 4 years ago

你好,感谢你的反馈。 你说的这几个问题确实很麻烦,当时的想法是只依赖ST的头文件,不依赖库的C文件。这样减少最终代码尺寸。带来的问题是就是测试不充分,无法保证在所有的芯片上都能正常工作。 如果继续采用这样的方式,随着厂家芯片的增多维护起来会更加困难。 后面会支持厂家库函数初始化的方式,把协议栈和设备操作进行分隔,这样也能支持更多其它厂家芯片。 不过这样弄下去就有点像keil和segger家的协议栈了,不够Teeny了。   ------------------ Original ------------------ From:  "zhenAcc"<notifications@github.com>; Date:  Mon, Apr 20, 2020 09:40 PM To:  "xtoolbox/TeenyUSB"<TeenyUSB@noreply.github.com>; Cc:  "XToolBox"<admin@xtoolbox.org>; "Comment"<comment@noreply.github.com>; Subject:  Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)

 

有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/

楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题: 把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义

是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。

我基于demo中的drd_rtt,最后总算是能识别设备了,说下我移植过程遇到的最头疼的地方吧:

usb初始化部分都是直接用的寄存器接口

USB的IO配置也是使用寄存器

USB的参数、时钟、中断等配置 这几个地方基本都是寄存器实现的,不同芯片会有差异,我这边花费了很多时间还是没跑起来,最终还是用直接调用HAL库的usb初始化代码简单暴力的跑起来了。

从兼容性、稳定性以及开发效率几个方面考虑推荐直接用cubemx生成的代码,也可以加上宏定义供用户选择。总之感谢您的付出,期待新的规范,还有这个库以后是不是也能做成平台无关的呢

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

RadioOperator commented 4 years ago

如果牺牲Teeny的优点,就不建议楼主搞成万能的USB库。 一个人的能力实在有限,就是厂家也是好几个团队的工作量。 建议楼主,

  1. 选择最常用,销量大,有特点的STM32芯片,目前有demo的还可以减少,重点优化完善。也方便测试。
  2. API最好是完全彻底兼容一个或几个常用的USB库,做到无缝更换。
  3. 其他的STM32,依靠使用者自己移植/分享。
hacklinshell commented 4 years ago

楼主,RTT的env环境使用的是cubemx ,建议就在原始的RTT上面,用cubemx配置下usb的初始化等,让rtt和cubemx自己把usb的初始化完成。然后再把tusb移植上去,这样是不是方便一些?

xtoolbox commented 4 years ago

你这个建议很好,后面打算把初始化的部分用cubemx来做,协议栈只处理协议,不管寄存器初始化

--------------原始邮件-------------- 发件人:"hacklinshell "<notifications@github.com>; 发送时间:2020年5月27日(星期三) 下午3:48 收件人:"xtoolbox/TeenyUSB" <TeenyUSB@noreply.github.com>; 抄送:"XToolBox "<admin@xtoolbox.org>;"Comment "<comment@noreply.github.com>; 主题:Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)

楼主,RTT的env环境使用的是cubemx ,建议就在原始的RTT上面,用cubemx配置下usb的初始化等,让rtt和cubemx自己把usb的初始化完成。然后再把tusb移植上去,这样是不是方便一些?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

hacklinshell commented 4 years ago

你这个建议很好,后面打算把初始化的部分用cubemx来做,协议栈只处理协议,不管寄存器初始化 --------------原始邮件-------------- 发件人:"hacklinshell "<notifications@github.com>; 发送时间:2020年5月27日(星期三) 下午3:48 收件人:"xtoolbox/TeenyUSB" <TeenyUSB@noreply.github.com>; 抄送:"XToolBox "<admin@xtoolbox.org>;"Comment "<comment@noreply.github.com>; 主题:Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7) ----------------------------------- 楼主,RTT的env环境使用的是cubemx ,建议就在原始的RTT上面,用cubemx配置下usb的初始化等,让rtt和cubemx自己把usb的初始化完成。然后再把tusb移植上去,这样是不是方便一些? — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

感谢这么快回复啊,我正准备这么做,今天刚看到你这个库,rtt官方的usb host 的class都还没过更新,也用不了,我先这样搞下,tusb的代码我还没看。 usb的初始化 rtt是在cubemx配置后 回打开一个宏,然后就会进行usb初始化,配置为host就初始化为usbh设备 ,device就初始化一个usbd设备 ,然后usb示例再创建具体的实例,比如devcie ecm就多一个u0设备 ,我准备弄host模式下的rndis或者ecm,

hacklinshell commented 4 years ago

你好,感谢你的反馈。 你说的这几个问题确实很麻烦,当时的想法是只依赖ST的头文件,不依赖库的C文件。这样减少最终代码尺寸。带来的问题是就是测试不充分,无法保证在所有的芯片上都能正常工作。 如果继续采用这样的方式,随着厂家芯片的增多维护起来会更加困难。 后面会支持厂家库函数初始化的方式,把协议栈和设备操作进行分隔,这样也能支持更多其它厂家芯片。 不过这样弄下去就有点像keil和segger家的协议栈了,不够Teeny了。   ------------------ Original ------------------ From:  "zhenAcc"<notifications@github.com>; Date:  Mon, Apr 20, 2020 09:40 PM To:  "xtoolbox/TeenyUSB"<TeenyUSB@noreply.github.com>; Cc:  "XToolBox"<admin@xtoolbox.org>; "Comment"<comment@noreply.github.com>; Subject:  Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)   有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/ 楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题: 把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义 是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。 我基于demo中的drd_rtt,最后总算是能识别设备了,说下我移植过程遇到的最头疼的地方吧: usb初始化部分都是直接用的寄存器接口 USB的IO配置也是使用寄存器 USB的参数、时钟、中断等配置 这几个地方基本都是寄存器实现的,不同芯片会有差异,我这边花费了很多时间还是没跑起来,最终还是用直接调用HAL库的usb初始化代码简单暴力的跑起来了。 从兼容性、稳定性以及开发效率几个方面考虑推荐直接用cubemx生成的代码,也可以加上宏定义供用户选择。总之感谢您的付出,期待新的规范,还有这个库以后是不是也能做成平台无关的呢 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

嗨 ,兄弟 ,可以分享想你在最新teenyusb上移植的工程,想参考下,想一部分用RTT本身的usb初始化嗯,一部分用teenyusb

xtoolbox commented 4 years ago

目前最新的就是GitHub上的,新的还在设计中,没有开始写代码。

--------------原始邮件-------------- 发件人:"hacklinshell "<notifications@github.com>; 发送时间:2020年5月29日(星期五) 下午4:06 收件人:"xtoolbox/TeenyUSB" <TeenyUSB@noreply.github.com>; 抄送:"XToolBox "<admin@xtoolbox.org>;"Comment "<comment@noreply.github.com>; 主题:Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)

你好,感谢你的反馈。 你说的这几个问题确实很麻烦,当时的想法是只依赖ST的头文件,不依赖库的C文件。这样减少最终代码尺寸。带来的问题是就是测试不充分,无法保证在所有的芯片上都能正常工作。 如果继续采用这样的方式,随着厂家芯片的增多维护起来会更加困难。 后面会支持厂家库函数初始化的方式,把协议栈和设备操作进行分隔,这样也能支持更多其它厂家芯片。 不过这样弄下去就有点像keil和segger家的协议栈了,不够Teeny了。   ------------------ Original ------------------ From:  "zhenAcc"<notifications@github.com>; Date:  Mon, Apr 20, 2020 09:40 PM To:  "xtoolbox/TeenyUSB"<TeenyUSB@noreply.github.com>; Cc:  "XToolBox"<admin@xtoolbox.org>; "Comment"<comment@noreply.github.com>; Subject:  Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)   有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/ 楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题: 把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义 是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。 我基于demo中的drd_rtt,最后总算是能识别设备了,说下我移植过程遇到的最头疼的地方吧: usb初始化部分都是直接用的寄存器接口 USB的IO配置也是使用寄存器 USB的参数、时钟、中断等配置 这几个地方基本都是寄存器实现的,不同芯片会有差异,我这边花费了很多时间还是没跑起来,最终还是用直接调用HAL库的usb初始化代码简单暴力的跑起来了。 从兼容性、稳定性以及开发效率几个方面考虑推荐直接用cubemx生成的代码,也可以加上宏定义供用户选择。总之感谢您的付出,期待新的规范,还有这个库以后是不是也能做成平台无关的呢 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

嗨 ,兄弟 ,可以分享想你在最新teenyusb上移植的工程,想参考下,想一部分用RTT本身的usb初始化嗯,一部分用teenyusb

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

hacklinshell commented 4 years ago

目前最新的就是GitHub上的,新的还在设计中,没有开始写代码。 --------------原始邮件-------------- 发件人:"hacklinshell "<notifications@github.com>; 发送时间:2020年5月29日(星期五) 下午4:06 收件人:"xtoolbox/TeenyUSB" <TeenyUSB@noreply.github.com>; 抄送:"XToolBox "<admin@xtoolbox.org>;"Comment "<comment@noreply.github.com>; 主题:Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7) ----------------------------------- 你好,感谢你的反馈。 你说的这几个问题确实很麻烦,当时的想法是只依赖ST的头文件,不依赖库的C文件。这样减少最终代码尺寸。带来的问题是就是测试不充分,无法保证在所有的芯片上都能正常工作。 如果继续采用这样的方式,随着厂家芯片的增多维护起来会更加困难。 后面会支持厂家库函数初始化的方式,把协议栈和设备操作进行分隔,这样也能支持更多其它厂家芯片。 不过这样弄下去就有点像keil和segger家的协议栈了,不够Teeny了。   ------------------ Original ------------------ From:  "zhenAcc"<notifications@github.com>; Date:  Mon, Apr 20, 2020 09:40 PM To:  "xtoolbox/TeenyUSB"<TeenyUSB@noreply.github.com>; Cc:  "XToolBox"<admin@xtoolbox.org>; "Comment"<comment@noreply.github.com>; Subject:  Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)   有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/ 楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题: 把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义 是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。 我基于demo中的drd_rtt,最后总算是能识别设备了,说下我移植过程遇到的最头疼的地方吧: usb初始化部分都是直接用的寄存器接口 USB的IO配置也是使用寄存器 USB的参数、时钟、中断等配置 这几个地方基本都是寄存器实现的,不同芯片会有差异,我这边花费了很多时间还是没跑起来,最终还是用直接调用HAL库的usb初始化代码简单暴力的跑起来了。 从兼容性、稳定性以及开发效率几个方面考虑推荐直接用cubemx生成的代码,也可以加上宏定义供用户选择。总之感谢您的付出,期待新的规范,还有这个库以后是不是也能做成平台无关的呢 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. 嗨 ,兄弟 ,可以分享想你在最新teenyusb上移植的工程,想参考下,想一部分用RTT本身的usb初始化嗯,一部分用teenyusb — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

刚把teeny编译通过了,还没初始化。给几个建议总结下: 1:usb的初始化部分参考cubemx生成代码和rtt的初始化,把host和device分别初始化,两个分别定义的是HCD_HandleTypeDef 和 PCD_HandleTypeDef类型,本质都是HCD_TypeDef, 2:文件结构修改下,host是host的,device是device的,usb core部分区分开来。建议和Linux框架结构一样,或者rtt的一样。

楼主能否给个联系方式,可以直接请教你一些问题

xtoolbox commented 4 years ago

我的qq是19148022,添加时注明teenyusb交流

--------------原始邮件-------------- 发件人:"hacklinshell "<notifications@github.com>; 发送时间:2020年5月30日(星期六) 中午11:29 收件人:"xtoolbox/TeenyUSB" <TeenyUSB@noreply.github.com>; 抄送:"XToolBox "<admin@xtoolbox.org>;"Comment "<comment@noreply.github.com>; 主题:Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)

目前最新的就是GitHub上的,新的还在设计中,没有开始写代码。 … --------------原始邮件-------------- 发件人:"hacklinshell "<notifications@github.com>; 发送时间:2020年5月29日(星期五) 下午4:06 收件人:"xtoolbox/TeenyUSB" <TeenyUSB@noreply.github.com>; 抄送:"XToolBox "<admin@xtoolbox.org>;"Comment "<comment@noreply.github.com>; 主题:Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7) ----------------------------------- 你好,感谢你的反馈。 你说的这几个问题确实很麻烦,当时的想法是只依赖ST的头文件,不依赖库的C文件。这样减少最终代码尺寸。带来的问题是就是测试不充分,无法保证在所有的芯片上都能正常工作。 如果继续采用这样的方式,随着厂家芯片的增多维护起来会更加困难。 后面会支持厂家库函数初始化的方式,把协议栈和设备操作进行分隔,这样也能支持更多其它厂家芯片。 不过这样弄下去就有点像keil和segger家的协议栈了,不够Teeny了。   ------------------ Original ------------------ From:  "zhenAcc"<notifications@github.com>; Date:  Mon, Apr 20, 2020 09:40 PM To:  "xtoolbox/TeenyUSB"<TeenyUSB@noreply.github.com>; Cc:  "XToolBox"<admin@xtoolbox.org>; "Comment"<comment@noreply.github.com>; Subject:  Re: [xtoolbox/TeenyUSB] 希望能补充一些tusb库的移植说明 (#7)   有哇: http://blog.xtoolbox.org/add_teenyusb_to_cubemx_project/ 楼主,这篇文章是不是不太适用新版的tusb了呢,新的tusb在usb_stack多了很多文件。或者说usb_stack目录下并非所有文件都需要加到工程中?我移植过程遇到了下面的问题: 把usb_stack目录下的所有源码添加到工程目录下,编译的时候usb_stack/inc/stm32_otg_platform.h会提示缺少board_config.h board_config.h好像都是demo里做的bsp,demo里的board_config.h没有和我相似的芯片,需要您指导一下board_config.h中接口定义 是的,那篇文章在写的时候用的时比较老的TeenyUSB,那个时候还没设计类驱动。现在新的TeenyUSB可能不太适合了,我后面会更新一下那篇文章。 我基于demo中的drd_rtt,最后总算是能识别设备了,说下我移植过程遇到的最头疼的地方吧: usb初始化部分都是直接用的寄存器接口 USB的IO配置也是使用寄存器 USB的参数、时钟、中断等配置 这几个地方基本都是寄存器实现的,不同芯片会有差异,我这边花费了很多时间还是没跑起来,最终还是用直接调用HAL库的usb初始化代码简单暴力的跑起来了。 从兼容性、稳定性以及开发效率几个方面考虑推荐直接用cubemx生成的代码,也可以加上宏定义供用户选择。总之感谢您的付出,期待新的规范,还有这个库以后是不是也能做成平台无关的呢 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. 嗨 ,兄弟 ,可以分享想你在最新teenyusb上移植的工程,想参考下,想一部分用RTT本身的usb初始化嗯,一部分用teenyusb — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

刚把teeny编译通过了,还没初始化。给几个建议总结下: 1:usb的初始化部分参考cubemx生成代码和rtt的初始化,把host和device分别初始化,两个分别定义的是HCD_HandleTypeDef 和 PCD_HandleTypeDef类型,本质都是HCD_TypeDef, 2:文件结构修改下,host是host的,device是device的,usb core部分区分开来。建议和Linux框架结构一样,或者rtt的一样。

楼主能否给个联系方式,可以直接请教你一些问题

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

mttbx commented 3 years ago

我完全不赞同hal的添加,hal是个非常垃圾的库,极大的占用了flash空间,对于一些商业应用而言,说他是垃圾是不过分的。使用LL库或者是寄存器的方法明显要更为优秀,考虑到usb的LL库支持的不充分,因此就应该直接采用寄存器版本。至于移植性个人提出以下建议:

  1. 对主流支持usb的stm32芯片在teenyusb内部进行移植,这样外界调用而言已经移植好了。
  2. 提供移植接口,就像许多usb栈,他们提供一个结构体,把结构体中的函数指针正确实现,就移植好了。

这样主流芯片予以支持,其他芯片提供接口。就算要新移植一个芯片也很容易,有参考。 我用过opencm3和libusb_stm32的库,他们的实现都是这样的,对我们开发者而言就非常的爽。但是他们对于usb的全面性不够,所以我找到了teenyusb。 不要让自己的缺点掩盖了自己的优点。

mttbx commented 3 years ago

@xtoolbox

xtoolbox commented 3 years ago

我完全不赞同hal的添加,hal是个非常垃圾的库,极大的占用了flash空间,对于一些商业应用而言,说他是垃圾是不过分的。使用LL库或者是寄存器的方法明显要更为优秀,考虑到usb的LL库支持的不充分,因此就应该直接采用寄存器版本。至于移植性个人提出以下建议:

  1. 对主流支持usb的stm32芯片在teenyusb内部进行移植,这样外界调用而言已经移植好了。
  2. 提供移植接口,就像许多usb栈,他们提供一个结构体,把结构体中的函数指针正确实现,就移植好了。

这样主流芯片予以支持,其他芯片提供接口。就算要新移植一个芯片也很容易,有参考。 我用过opencm3和libusb_stm32的库,他们的实现都是这样的,对我们开发者而言就非常的爽。但是他们对于usb的全面性不够,所以我找到了teenyusb。 不要让自己的缺点掩盖了自己的优点。

感谢你的建议及反馈,就工程项目而言,HAL的确是一个比较差的库。我认为HAL的目标不是用来做实际的工程,而是用来给工程师验证板子是否正确,特别是配合CubeMX,对于外设的验证非常方便。而TeenyUSB使用HAL做底层,也能较容易实现快速验证这一目的。对于STM32的OTG型号芯片,后续不太会投入精力来做寄存器版本的。TeenyUSB的Archive版本的OTG部分就是采用的寄存器,带来的问题就是测试很不充分,换型号十分困难。

更加方便的移植接口是很好的建议,也是未来TeenyUSB的主要目标。由于目前只在STM32上进行了移植,现有的接口适应性还未得到充分测试。最近的计划是移植到一些国产的芯片上,用来测试库的兼容性,同时也作为移植到其它芯片的示例。

jiuxiaxixi commented 2 years ago

我完全不赞同hal的添加,hal是个非常垃圾的库,极大的占用了flash空间,对于一些商业应用而言,说他是垃圾是不过分的。使用LL库或者是寄存器的方法明显要更为优秀,考虑到usb的LL库支持的不充分,因此就应该直接采用寄存器版本。至于移植性个人提出以下建议:

  1. 对主流支持usb的stm32芯片在teenyusb内部进行移植,这样外界调用而言已经移植好了。
  2. 提供移植接口,就像许多usb栈,他们提供一个结构体,把结构体中的函数指针正确实现,就移植好了。

这样主流芯片予以支持,其他芯片提供接口。就算要新移植一个芯片也很容易,有参考。 我用过opencm3和libusb_stm32的库,他们的实现都是这样的,对我们开发者而言就非常的爽。但是他们对于usb的全面性不够,所以我找到了teenyusb。 不要让自己的缺点掩盖了自己的优点。

感谢你的建议及反馈,就工程项目而言,HAL的确是一个比较差的库。我认为HAL的目标不是用来做实际的工程,而是用来给工程师验证板子是否正确,特别是配合CubeMX,对于外设的验证非常方便。而TeenyUSB使用HAL做底层,也能较容易实现快速验证这一目的。对于STM32的OTG型号芯片,后续不太会投入精力来做寄存器版本的。TeenyUSB的Archive版本的OTG部分就是采用的寄存器,带来的问题就是测试很不充分,换型号十分困难。

更加方便的移植接口是很好的建议,也是未来TeenyUSB的主要目标。由于目前只在STM32上进行了移植,现有的接口适应性还未得到充分测试。最近的计划是移植到一些国产的芯片上,用来测试库的兼容性,同时也作为移植到其它芯片的示例。

hal 库对实际的运行效果有影响么?

RadioOperator commented 2 years ago

@jiuxiaxixi HAL库,仍然大行其道主要是因为,整体来讲HAL库仍然是最容易使用的库 和 经过长期测试过的库。 有这样的基础,HAL库其他的问题,比如速度慢,占用内存大,等等,都是可以忽略不计的,特别是在MCU的速度和FLASH的大小都不是问题的今天。

xtoolbox commented 2 years ago

我完全不赞同hal的添加,hal是个非常垃圾的库,极大的占用了flash空间,对于一些商业应用而言,说他是垃圾是不过分的。使用LL库或者是寄存器的方法明显要更为优秀,考虑到usb的LL库支持的不充分,因此就应该直接采用寄存器版本。至于移植性个人提出以下建议:

  1. 对主流支持usb的stm32芯片在teenyusb内部进行移植,这样外界调用而言已经移植好了。
  2. 提供移植接口,就像许多usb栈,他们提供一个结构体,把结构体中的函数指针正确实现,就移植好了。

这样主流芯片予以支持,其他芯片提供接口。就算要新移植一个芯片也很容易,有参考。 我用过opencm3和libusb_stm32的库,他们的实现都是这样的,对我们开发者而言就非常的爽。但是他们对于usb的全面性不够,所以我找到了teenyusb。 不要让自己的缺点掩盖了自己的优点。

感谢你的建议及反馈,就工程项目而言,HAL的确是一个比较差的库。我认为HAL的目标不是用来做实际的工程,而是用来给工程师验证板子是否正确,特别是配合CubeMX,对于外设的验证非常方便。而TeenyUSB使用HAL做底层,也能较容易实现快速验证这一目的。对于STM32的OTG型号芯片,后续不太会投入精力来做寄存器版本的。TeenyUSB的Archive版本的OTG部分就是采用的寄存器,带来的问题就是测试很不充分,换型号十分困难。 更加方便的移植接口是很好的建议,也是未来TeenyUSB的主要目标。由于目前只在STM32上进行了移植,现有的接口适应性还未得到充分测试。最近的计划是移植到一些国产的芯片上,用来测试库的兼容性,同时也作为移植到其它芯片的示例。

hal 库对实际的运行效果有影响么?

没有什么影响,加了只是引用的东西比较多一些,一些流程会比较啰嗦。

jiuxiaxixi commented 2 years ago

没有什么影响,加了只是引用的东西比较多一些,一些流程会比较啰嗦。

我在调试 rtt 的winusb 的时候感觉非常痛苦,好像bulk send 的时候必须先设置下 request ,作为端点和端点之间的 长度证明

RadioOperator commented 2 years ago

HAL库的主要问题是,配置受制于CubeMAX,一般的应用不容易配置出超出CubeMAX的预先设定,即是不能充分发挥出USB的潜力,比如一次想配置5个CDC口功能,HAL做不到。这也是各种第三方USB库的优点。

SmartElec commented 2 years ago

没看到 host msc设备的demo或者usbh_msc类

xtoolbox commented 2 years ago

新架构下的host库还没有开始做,host的msc在老版本才有,地址是 https://github.com/xtoolbox/archive_TeenyUSB

yamslc commented 11 months ago

高速usb有例子吗