免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ljwilliam

[驱动] 串口接收GPS模块发送的信息,接收上丢失数据 [复制链接]

论坛徽章:
0
发表于 2010-11-19 14:00 |显示全部楼层
没看出来你是想搞清楚,很多测试方法你都不能去测试,这样猜有何用

论坛徽章:
0
发表于 2010-11-19 14:30 |显示全部楼层
回复 81# EZWORD

    现在确切的问题是丢失是因为overrun,丢掉的地方都会有overrun的标记。 之前有些问题都是测试的时候连带出来的么,比如printk导致数据更多丢失,但是这也给出数据丢失的一种可能么,就是中断处理不过来,改成不printk而是在内核就将数据写到文件中就没有了这个问题。

论坛徽章:
0
发表于 2010-11-19 14:31 |显示全部楼层
回复 79# smalloc


     那么改善的方法就是改小门限和加入硬件流控制? 有没有别的?还望指点。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2010-11-19 15:18 |显示全部楼层
回复 83# ljwilliam


    前面有位好象给出了上层数据校验方式.问题是你发送端如果没有相应重传输机制也是白费,除非你把发送端也改了
你的问题就是 在不能确保的硬件上要传输完全的正确的数据.
只能从低层改善.
我看了下UART相关的东西.觉得唯一希望在于改为no_FIFO方式工作. 每次只收一个数据. 这个时候我们只能期望他确实能硬件流控制的.
这种方式传输数据量不大.比如你要船3000Bytes每秒 可能需要3000次中断. 一般网卡也就产生这么多次
一秒几千次中断已经是嵌入式处理器的上限.再多就非常影响性能了. 而且这些数据如果集中某时刻传输可能导致性能抖动.

论坛徽章:
0
发表于 2010-11-19 15:48 |显示全部楼层
回复 84# smalloc


    上层的那个数据校验,只是说了GPS数据的格式。那些数据最后有个数字来指示前面收到的消息是否正确,不对是会被整条数据丢弃的,我们这里也会偶尔出现这样的状况。
   NO_FIFO 倒是可以尝试下
   另外,我看见一个老外的帖子上面,他说DMA。。。不过加了句God Bless u。。。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2010-11-19 17:22 |显示全部楼层
回复 85# ljwilliam


    在某个非标准的文档上提到 auto-CTS* and auto-RTS*
如果有相应的实现就能在FIFO满的时候自动停止发送端

在另一个芯片文档中没提到这个也没提到DMA.看来这都与实现相关.我还不知道标准的UART官方文档应该在哪里下载到

论坛徽章:
0
发表于 2010-11-20 20:07 |显示全部楼层
回复  ljwilliam


    在某个非标准的文档上提到 auto-CTS* and auto-RTS*
如果有相应的实现就能在FI ...
smalloc 发表于 2010-11-19 17:22



        串口手册一般是arm芯片相关的,一般在arm手册上都有,auto-CTS* and auto-RTS*是硬件流控,对于接收端来说,也就只要用cts(输出引脚),与对端的rts(输入引脚)。

      XON/XOFF是软件流控,与上面基本意思差不多,只不过不用硬件协助。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2010-11-21 03:09 |显示全部楼层
回复 87# EZWORD


    恩软件流控也可以实现缓冲满自动发送控制字
也就是LZ的问题在于没有流控制?感觉不应该啊

论坛徽章:
0
发表于 2010-11-22 09:04 |显示全部楼层
加上校验就可以了,我也遇到过读取不完整的问题。

论坛徽章:
0
发表于 2010-11-22 09:48 |显示全部楼层
回复 86# smalloc


    其实,我这里尴尬的有一点就是这个。因为标准的的串口只有两个,我提到的在用的这个口是GPIO转过来的(可以当作GPIO或者UART的某些功能来使用)。所以管脚上,作为前两个口的RTS和CTS的管脚,变成了后面的UART的receiver和transmitter,我看了下,应该没法硬件流控制。当然这是我从数据手册上看到的,没有实际的去试验过。
  DMA的确是实现,和标准的UART是无关的,只是数据手册提供了这个功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

PostgreSQL中国大会,早鸟票抢购!

PostgreSQL中国大会,早鸟票抢购!
2019年11月29~11月30日,由 PostgreSQL中文社区与ITPUB联合主办的第九届《PostgreSQL 中国技术大会》将在北京隆重召开。PostgreSQL 作为功能最强的的开源关系型数据库之一,得到了越来越多企业的推广和运用,也越来越受到广大技术爱好者的欢迎和重视。这将是 PostgreSQL 的又一次交流盛会。




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

点击报名>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP