作者| wenju.lu、veahow、sz.chen、user_华仔、alan.ma、An
Comake社区技术问题汇总,第20230915期,本期将分享USB相关的问题。
本期问题速览
▪ USB挂载方法
▪ RTOS的USB发送接口dcd_ep_write与dcd_dma_write的区别是什么?
▪ 使用USB烧录镜像到Flash后,芯片不自动重启,这个需要如何处理?
▪ 如何实现USB一键升级?
▪ 支持USB眼图测试吗?
▪ 如何配置打开USB Gadgetfs?
▪ USB host和device主从切换使用上有什么限制吗?
▪ USB factory tool升级时,电脑端会频繁弹出需要格式化磁盘的窗口,要怎么禁止掉?
Q1:USB挂载方法
A1:使用fdisk -l命令查看一下U盘是否有被识别到,及识别的U盘是在哪个位置 如看到U盘的位置是/dev/Sdb4,输入挂载U盘命令:mount /dev/sdb4 /mnt,回车后即挂载U盘成功,继续输入:cd /mnt回车,可以查看U盘下的文件 完成后,需要退出U盘,输入命令:umount /mnt
Q2:RTOS的USB发送接口dcd_ep_write与dcd_dma_write的区别是什么?
A2:【SSD22X/SSD21X/SSC9211 RTOS适用】
RTOS中USB的发送主要使用两个接口dcd_ep_write与dcd_dma_write,主要特点如下表:
对于dcd_dma_write来说,DMA将待发送数据搬运到FIFO完成就会产生中断。假设PC正常(例如CDC是串口打开的状态),搬运到FIFO完成后就能直接发送出去;如果不正常(CDC是串口关闭状态),待发送数据搬运到FIFO后,尽管没有发送出去,依然会产生中断,此时FIFO还会余留上次未发送的数据,与下次可以成功发送的数据一起发送出去。
举例来说,FIFO有一个固定的缓冲大小,假设为1024字节(EP2最大size为1024),如果PC状态不正常,使用dcd_dma_write发送了1202字节,那么数据通过DMA发送实际只搬运了1024字节,没有将1202字节全部搬运完,这种情况下不会产生中断,而如果PC状态正常,FIFO的1024字节能马上发出去,剩下的178字节也能马上搬运到FIFO,然后立即发送出去。
Q3:使用USB烧录镜像到Flash后,芯片不自动重启,这个需要如何处理?
如您在开发的过程中遇到USB相关问题,或您需要技术支持、选型支持、商务支持,欢迎进入Comake社区开发论坛发帖咨询,社区技术工程师和运营人员将会及时响应您的诉求。
往期回顾
周五见| kernel相关问题讲解
周五见|i2c相关问题讲解
周五见| SSD21X/22X相关问题讲解
周五见| SSD22X相关问题讲解
周五见| SSD20X相关问题讲解
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买