tty串口驱动问题
本人在调试串口驱动时遇到这样的问题:在串口接收数据部分:一收到数据就会产生中断,把字符存在变量ch中,然后调用tty_insert_flip_char(tty, ch, flg);这个函数把它存到内核的buffer,最后调用tty_flip_buffer_push(tty);应用层却得不到数据,为什么?
硬件方面是肯定没有问题的,打印变量ch的值就是我传输的值。请高手解答啊。
static inline int tty_insert_flip_char(struct tty_struct *tty,
12 unsigned char ch, char flag)
13{
14 struct tty_buffer *tb = tty->buf.tail;
15 if (tb && tb->active && tb->used < tb->size) {
16 tb->flag_buf_ptr = flag;
17 tb->char_buf_ptr = ch;
18 return 1;
19 }
20 return tty_insert_flip_string_flags(tty, &ch, &flag, 1);
21}
看你的tty串口是什么线路规则,如果是标准的行规范,那么你的应用程序一直会被阻塞直到有回车符输入才有才会从内核返回,哥们,你可以确认下是否有回车符从输入 struct termios opt;
tcgetattr(fd,&opt);
cfmakeraw(&opt);
tcsetattr(fd,TCSANOW,&opt);
我在用户态下加入这几个函数就可以接受到数据了。
这几个应该是设置线路规程为非规范模式吧??
页:
[1]