关于在Mac,Linux(虚拟机),树莓派,Quark上的调试过程小结 #169
coolflyreg
started this conversation in
General
Replies: 1 comment 2 replies
-
不错,你可以把修改的描述符提个pr。 |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
调试过程小结
1、Linux在USB连接后,需要调用libusb_detach_kernel_driver,去detach掉linux内核cdc_acm驱动。至于第二个参数interface_number,0或1都可以。如果不detach kernel driver,claim的时候,会返回设备busy(-16)的错误
Mac不需要detach kernel driver
detach前
detach后
2、Mac下需要调用usb_claim_interface才能通讯,不需要detach kernel driver。目前在打开后USB立刻调用了一次。
3、关于usb_claim_interface的调用参数
对于Mac和树莓派(kernel 5.15.32-v7l+),claim是0或是1都没问题,视频流畅。
对于quark(ubuntu 16.x kernel 4.14.111),claim 1的话,会奇慢无比,需要使用claim 0,然后略微有点慢,比如30帧降到20帧的感觉,但是看不到三段刷新。
对于Linux虚拟机(UOS 20 kernel 5.10.0),不管是0还是1,都很慢,但是比quark的奇慢无比要快一点,大约1秒3帧左右,能明显看到分三段刷新。
仔细测试了下:虚拟机的Linux的和虚拟机的Win10,串口都比较慢,虚拟机的win10比虚拟机linux略快一点
4、在quark(ubuntu 16.x kernel 4.14.111)和Linux虚拟机(UOS 20 kernel 5.10.0)上连接的时候,需要先启动上位机,然后再插设备,才能正常通讯。正常通讯以后,不拔插设备,等Sample播完,可以再次运行Sample。使用如下图方法来等待连接
在Mac和树莓派(kernel 5.15.32-v7l+)上,先插后插都可以
5、如果想让Linux插ElectronBot后,不自动attach kernel driver,那么就要设置设备描述符DeviceClass为0xff,即厂商自定义。
DeviceClass改为0xff后,Win10上一样可以
目前不解的问题
1、[已解]Quark上的速度播放掉帧率,是不是因为H3本身的性能问题。
测试结果:没有修改代码,仅仅将视频转为了240x240的大小,再次测试,效果也差不多。结论:还是性能不足导致卡顿
Beta Was this translation helpful? Give feedback.
All reactions