免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
1 [报告]
发表于 2010-11-11 19:52 |显示全部楼层
你确定是串口丢的?最好跟进串口驱动去看看吧。。。

论坛徽章:
0
2 [报告]
发表于 2010-11-11 20:19 |显示全部楼层
呵呵,这么确信。那再上层点就应该更不会丢掉先到的数据了,这个很奇怪。
要是有机会的话还是在串口中断中把接收到的东西打印出来看看吧,又不是很麻烦。

论坛徽章:
0
3 [报告]
发表于 2010-11-12 16:30 |显示全部楼层
本帖最后由 EZWORD 于 2010-11-12 16:31 编辑

那现在就要检查是不是驱动的问题了,内核层(《hardware》->tty_driver层->ldisc层->tty核心层->)到应用层,基本都能打印出来看看。

论坛徽章:
0
4 [报告]
发表于 2010-11-12 16:49 |显示全部楼层
在8250.c中有个函数叫receive_chars,把ch接收到的内容有条件的打印出来看看。
只打印接收gps数据的那个串口的数据

论坛徽章:
0
5 [报告]
发表于 2010-11-12 16:57 |显示全部楼层
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;
类似上面,那个TEST_SERIAL为gps对应串口所在的物理地址。

论坛徽章:
0
6 [报告]
发表于 2010-11-12 20:23 |显示全部楼层
晕,这里就丢数据,这是直接从硬件中读出来的东西。
是不是模式设置的问题,或者中断共享出现问题,最坏可能是硬件的问题。

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

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

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

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

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

论坛徽章:
0
10 [报告]
发表于 2010-11-16 13:42 |显示全部楼层
办法总是有的,就怕你不去寻找
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP