免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
发表于 2010-11-15 19:07 |显示全部楼层
看看硬件的fifo溢出了没,再者看看不是中断丢失了?

论坛徽章:
0
发表于 2010-11-15 20:26 |显示全部楼层
本帖最后由 ljwilliam 于 2010-11-15 21:33 编辑

回复 21# EZWORD

if (unlikely(tty->flip.count >= TTY_FLIPBUF_SIZE)  8250里面的receive_char有这么一句话,应该指的是所说的flip_buffer吧。
测试看了下,这句话一直没有执行,也就是可以说没有超出底层驱动的buffer吧。
再往下面的话是串口本身有个16字节的缓冲,但是有个问题,看完整个8250,也没看出来有对方能改动buffer大小的(应该是固定死了的,只有一些清空和判断buffer大小的操作),这边有溢出的可能性也是有可能的,但是不好断定。
中断丢失。。。从来没有碰到过,不知道怎么查。。。。还望指点

论坛徽章:
0
发表于 2010-11-15 21:22 |显示全部楼层
你出现问题的地方与上面还没有什么关系呢,那个地方是一个提供给更上层的轮换缓冲区,两个512字节。
溢出应该可以通过状态寄存器看出来,若没有溢出,而数据又有丢失,那么可能是中断丢失。

建议:
1,你用其它的串口与引串口通讯看看能否正常?
2,查看丢失数据有没有规律?

另外问下:你现在用的gps是不是韩国生产的那块ourarv广告的芯片?

论坛徽章:
0
发表于 2010-11-15 21:32 |显示全部楼层
回复 23# EZWORD

之前忘记说了,我在8250里面添加了如下的代码,以打印信息
ch = serial_inp(up, UART_RX);
#if 1
                {
                        if(up->port.membase==(unsigned char*)IO_ADDRESS(TEST_SERIAL))                                
                                printk("\t%02x",ch);//hk
                }
#endif
                flag = TTY_NORMAL;
然后我去cat 串口,打印出来的信息是ch的字符,这和和cat所显示的信息是一致的,但是两者都少了信息(和直接从GPS接收的比较,但是具体的我没看,因为和正常接收到的比较少的非常的多,很明显,所以就懒了,没看。。。。)。这个情况很奇怪。。。但是这样可以说从这里之后到tty_flip_buffer_push一直到最后,应该说是没有问题了的。这么想是对的吧。

还有这里我也打印过,overrun的计数,在数据丢失的地方都会增加计数。。。。
数据丢失比较杂乱,没有什么固定的,只是大致过一段时间就丢一下。也可能会一下丢比较多,然后又稳定一下。
不是韩国的那个,是ublox的

论坛徽章:
0
发表于 2010-11-15 21:46 |显示全部楼层
tty_flip_buffer_push只是把此处ch从硬件中读出的内容放到更上面一层的缓存中,此处丢失,就是此处之前的问题了,那就是溢出了,你最好写个应用程序把数据不停的读出来,这里cat不知道是不是有问题。
你看看是不是512字节后的数据丢失了?
为什么要用cat呢?

论坛徽章:
0
发表于 2010-11-15 22:12 |显示全部楼层
回复 25# EZWORD


    用cat是我懒。。。另外一个原因是写过一个简单的就是读取串口信息的程序,和直接cat一样。。。后面调试看的时候就之间这么cat了。。。
   我觉得这个该是从8250里面的receive_char这里或者之前出错,这里之后到tty_flip_buffer_push到打印出信息都不该有问题。
   但是既然和tty_flip_buffer_push无关的话,那么和512的flip_buffer大小无关了吧。。。看了下不是512到了就丢
   我试试看用程序去read看看

论坛徽章:
0
发表于 2010-11-16 08:42 |显示全部楼层
ARM体系下,串口和一GPS模块连接,接收GPS的信息。但是用cat /dev/ttyS3去读取串口收到的信息的时候,发现会 ...
ljwilliam 发表于 2010-11-11 16:24



    只能说一句:lz的头像太诱惑了

论坛徽章:
0
发表于 2010-11-16 09:13 |显示全部楼层
回复 27# herocsz


    兄台能否提点一下阿。。。。。指点指点。。。

论坛徽章:
0
发表于 2010-11-16 09:39 |显示全部楼层
照理不应该的

可能是硬件本身的问题

论坛徽章:
0
发表于 2010-11-16 10:37 |显示全部楼层
回复 29# embedded007


    搞了大半天,我也觉得会是这样。。。但是没法说明软件上没有问题阿,不好交差。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


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

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP