问个有关串口驱动的问题

周靖峰 无业游民  2015-08-28 09:37:12
目前我的串口驱动是这样实现的,一个驱动管8个串口通道,驱动只实现ioctl,串口的读写只能是一个通道一个字节,然后应用层调用ioctl来读写数据。驱动层没有任何缓冲,缓冲全靠硬件的15字节缓冲区。串口接收流程如下:驱动收到数据会触发中断,中断会唤起poll函数,应用层poll被唤醒后查看8个串口通道哪个有数据,有数据就执行ioctl接收数据

然后就有一个问题,在9600波特率的情况下,每个串口通道50ms发送35字节,应用层因为进程调度的原因,会有几十ms不执行程序的情况,但是因为几十ms不去接收数据导致底层硬件15字节缓冲区溢出了,然后数据就被丢弃了

在这里我想请教下做过串口驱动的大神们,这样的串口驱动是否合理,是否应该在驱动层缓冲数据?

我感觉驱动层应该在收到中断的时候,底半部要执行接收数据的命令,接收到的数据放入驱动的缓冲区,当应用层来取数据的时候只需要取驱动缓冲区里的数据就行了,不知这样是否正确?会不会导致驱动卡死?
...全文
173 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_31503869 2015-09-22
支持下 新手来学习 ,需要积分啊
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4150

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2015-08-28 09:37
社区公告
暂无公告