免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4987 | 回复: 1
打印 上一主题 下一主题

[驱动] 求助USB ACM Serial Gadget驱动问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-29 18:30 |只看该作者 |倒序浏览
我用一块AM1808的开发板,它有两个USB控制器,一个是host,一个是OTG(2.0 full speed/high speed)。现在我将OTG配置成了ACM CDC Serial Gadget设备,没有修改任何驱动代码,然后编译烧写,并自己写了测试程序进行测试,有几个问题百思不得其解,求大家帮助。

1.开发板内核版本为2.6.30,在开发板上配置好ACM CDC Serial Gadget后,在开发板上可以看到 /dev/ttyGS0。
2.用usb线连接开发板和PC,PC是ubuntu系统,内核版本为2.6.28。PC上可以枚举到开发板,/dev/ttyACM0。
3.在PC上用lsusb -v命令查看,一切看上去正常。

我写了两个串口测试程序,一个专门用于发送,一个专门用于接收。发送程序是根据一个输入参数,循环地向另一端的usb串口设备发送数据,每次发送数据为1k,循环发送的次数等于这个输入参数。接收程序也和发送程序一样,不断地循环接收1k数据。

根据我测试的结果,发现了一些奇怪的问题,求大家解答:
1.发送和接收程序都设置了波特率,但根据测试结果,波特率设置并不起作用,有同学能回答一下吗?

2.开发板向PC发送数据,无论发送程序循环发送多大的数据,PC端都能接收到。
3.反过来,PC向开发板发送数据,如果循环次数小于等于4,也就是发送4k及以下数据,开发板都能接收,并且数据是正确的。
4.如果PC向开发板发送数据大于4k,开发板却只能接收到一半的数据,但PC端的发送程序却已经结束了,并且发送过程中,write函数没有报任何错。由于接收程序需要接收和发送程序发送同样大小的数据,它在读取一半的数据后就阻塞在那,如果此时在PC端再次运行发送程序,开发板上的接收程序能读取到上次没有接收到的另一半数据,此现象太奇怪了,希望大家帮忙分析一下!!!!

5.前面提到过,开发板向PC发送数据,不论数据大小,PC都能接收到,但如果发送的数据小于256M,每次发送和接收的数据都完全一致。如果发送数据大于512M,发送和接收的数据会出现不一致的情况,频率接近1/2。这个现象也很奇怪,难不成让usb一直发送会提高误码率???

6.另一个现象也非常奇怪,如果开发板和PC只发送而另一端却不开接收程序,发送数据大小为4k时,发送程序会返回,并且write函数不报任何错误,发送数据大小大于4k时,如果另一端不开接收程序,发送程序不会返回,会阻塞住。也请大家分析一下这个问题呢,莫非每次write函数调用,只是在将数据拷贝到内核后,就返回了,而并不等待硬件操作结束。而我在发送4k过程中,由于对端并没有接收程序,会让usb停止,导致buffer中的数据没有送出,而后续的write系统调用因为buffer满了而被阻塞???

不晓得其他同学们遇到和我类似的问题没有,希望大家都帮忙分析一下,我现在对这些问题都已经两眼一抹黑,抓瞎了,都不晓得怎么解决,甚至我想到修改开发板,因为我主观地认为开发板的usb与PC不匹配,让USB工作在full speed模式下,但到代码里面去看了一下,却发现改full speed模式好像还没那么简单。而且如果开发板usb和PC不匹配的话,那它们之间互相发送4k大小的数据完全没有问题,这好像又解释不同。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
2 [报告]
发表于 2016-02-23 18:20 |只看该作者
fish_kun 发表于 2012-03-29 18:30
我用一块AM1808的开发板,它有两个USB控制器,一个是host,一个是OTG(2.0 full speed/high speed)。现在我将 ...


AM1808这个板子有卖不?贵不贵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP