RCSN 发表于 2022-7-30 15:51

[HPM-DIY]hpm6750 USB开源协议栈性能对比-cherryusb or tinyusb?

<div class='showpostmsg'><p><span style="font-family:宋体;"><span style="font-size:22px;">&nbsp; 由于目前hpm的sdk使用的是tinyusb,但目前搞起来,性能速度还是极其不配这个MCU的高速USB,在之前的贴子也有提过,速度大概在6M/S到8M/S之间,这个速度中平。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:22px;">&nbsp; 还好国内有大佬自己搞了个开源的协议栈,叫cherryusb。这个协议栈之前有了解,但是也没去深入用。昨天和今天试了下,代码很直观,协议栈处理也在中断处理,最大保证性能执行。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:22px;">&nbsp; 把之前的类uvc传输的例子,替换tinyusb为cherryusb,经过对比,性能差距很大。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:22px;">&nbsp; cherryusb传输能达到30MB/S+,tinyusb只能最大在8MB/s多。</span></span></p>

<p></p>

<p>&nbsp; &nbsp;</p>

<p><span style="font-family:宋体;"><span style="font-size:22px;">&nbsp; 从传输显示帧率看,cherryusb能到16fps,而tinyusb在5fps左右。</span></span></p>

<p> &nbsp; &nbsp;</p>
</div><script>                                var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                               
                                if(parseInt(discuz_uid)==0){
                                                                                        (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                }
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

nmg 发表于 2022-7-30 16:44

<p>usb本身还能衍生出这么多usb,然后各种速度还不一样</p>

<p>是因为usb原始协议里对传输速度的定义,是机动的吗,那是不是可以直接自己设置速度,然后跑到上限</p>

IC爬虫 发表于 2022-7-30 18:07

<p>cherryusb 又学到新知识了</p>

IC爬虫 发表于 2022-7-30 18:09

本帖最后由 IC爬虫 于 2022-7-30 18:13 编辑

<p>不知道移植替换到ESP32会不会复杂</p>

<p>-------------------------------------------------------</p>

<p>查了以下已经有支持了ESP32:https://github.com/CherryUSB/cherryusb_esp32/tree/master/esp32s2</p>

<p>过段时间时间试试</p>

RCSN 发表于 2022-7-30 18:55

nmg 发表于 2022-7-30 16:44
usb本身还能衍生出这么多usb,然后各种速度还不一样

是因为usb原始协议里对传输速度的定义,是机动的吗 ...

<p>&nbsp;&nbsp;&nbsp;&nbsp;虽然我们在日常生活都会用到USB,而且也享受着它带来的便利。但是通信的交互还是得靠协议栈来干活,协议层处理USB规范中定义的与USB设备相关的所有操作。</p>

<p>&nbsp; &nbsp; 故市面上有很多USB协议栈,开源的,商用的都有。hpm用的就是tinyusb协议栈,他是开源的。同样cherryusb协议栈也是开源的,而且还是国内的人搞的。</p>

<p>&nbsp; &nbsp; 速度是硬件决定的。协议栈的处理决定着USB的速度性能能不能达到理想速度。</p>

RCSN 发表于 2022-7-30 18:57

IC爬虫 发表于 2022-7-30 18:07
cherryusb 又学到新知识了

<p>国内人搞的,仓库&nbsp;<a href="https://github.com/sakumisu/CherryUSB">https://github.com/sakumisu/CherryUSB</a></p>

<p>port支持不少,demo也不少。协议栈代码简洁易懂</p>

RCSN 发表于 2022-7-30 20:48

<p>按作者的readme,cherryusb的优势:</p>

<p> &nbsp;</p>

RCSN 发表于 2022-7-31 09:28

IC爬虫 发表于 2022-7-30 18:09
不知道移植替换到ESP32会不会复杂

-------------------------------------------------------

查了以 ...

<p>esp32没有usb啊,支持usb的只有esp32s2 esp32s3。esp32c3也只是jtag作用</p>

IC爬虫 发表于 2022-8-1 17:32

RCSN 发表于 2022-7-31 09:28
esp32没有usb啊,支持usb的只有esp32s2 esp32s3。esp32c3也只是jtag作用

<p>是的,计划在ESP32S3上试试</p>

<p>目前打算用ESP32S3实现类似OpenMV那种CDC和MSC复合USB设备</p>

freebsder 发表于 2022-8-3 18:32

<p>cherryusb支持单片机?</p>

安子1977 发表于 2023-2-21 21:41

IC爬虫 发表于 2022-8-1 17:32
是的,计划在ESP32S3上试试

目前打算用ESP32S3实现类似OpenMV那种CDC和MSC复合USB设备

<p>有什么进展么</p>

eew_LcNSas 发表于 2024-6-7 16:18

<p>版主,我用先楫的HPM6750EVK2做UVC摄像头,摄像头模块用0v5640,图片大小1280*720,采集一张图片需要65ms感觉有点慢,然后经过jpeg编码,一张图片大小差不多50K左右,cherryusb发送,帧率只有7左右。感觉传输速度差太多了,有什么优化的点吗?</p>
页: [1]
查看完整版本: [HPM-DIY]hpm6750 USB开源协议栈性能对比-cherryusb or tinyusb?