免费注册 查看新帖 |

Chinaunix

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

串口DMA实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-03 11:43 |只看该作者 |倒序浏览
5可用积分
各位大哥!小弟最近在调试uart的DMA实现方式,具体的是接收、发送都采用DMA方式,
参考的是内核drivers/serial/bfin_5xx.c来改的!
目前遇到的问题是:大量接收数据时存在丢数据的情况,希望有做个相关的大哥们帮帮忙!

论坛徽章:
5
2 [报告]
发表于 2009-02-03 13:19 |只看该作者
DMA + polling, 还是DMA + interrupt方式?
如果是interrupt方式, 跟踪一下中断次数和发送次数是否匹配。
UART FIFO有多大? 考虑一下FIFO是否可能溢出? FIFO满的时候是怎么处理? 不处理的情况下会有数据丢失。

论坛徽章:
0
3 [报告]
发表于 2009-02-03 13:55 |只看该作者
DMA + polling方式,16级FIFO,FIFO没有溢出,如果溢出了,会进溢出错误处理中断,
FIFO满时,如果现在还有数据来,会报溢出错误;

论坛徽章:
5
4 [报告]
发表于 2009-02-03 14:14 |只看该作者
逻辑上看不出来有问题了

论坛徽章:
0
5 [报告]
发表于 2009-02-03 14:47 |只看该作者
有没有好的一点的测试方法,因为如果直接在驱动里面,添加printk 调试语句的,又是一个发送的过程

论坛徽章:
5
6 [报告]
发表于 2009-02-03 14:56 |只看该作者
把发送和接收的数据, 做log, 然后手工比较。
或是, 做一些有规律的数据来发送, 如果收到的数据不符合规律, 程序就停

论坛徽章:
0
7 [报告]
发表于 2009-02-03 16:22 |只看该作者
作LOG是什么意思阿?
   恩  我现在就是在作一些有规律的测试,但错了就停,我还是不能清楚,是错在DMA BUF,还是上层TTY

论坛徽章:
5
8 [报告]
发表于 2009-02-03 17:08 |只看该作者
有进展吗?
丢数据后, uart driver是否正常?建议出错后, 把寄存器dump出来,确认一下寄存器是否处于正常状态。

论坛徽章:
0
9 [报告]
发表于 2009-02-03 17:39 |只看该作者
没有多大进展,还没找到在那里出的错误,主要是要大量接收时,如何来判断那里出错,方法还没有找到
所以DUMP寄存器也无法判断

论坛徽章:
5
10 [报告]
发表于 2009-02-05 10:11 |只看该作者
原帖由 yinkaizhong 于 2009/2/3 17:39 发表
没有多大进展,还没找到在那里出的错误,主要是要大量接收时,如何来判断那里出错,方法还没有找到
所以DUMP寄存器也无法判断


发送有规律的数据, 比如A到Z, 接收到数据后, 进行校验。 是否可行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP