问个有关串口驱动的问题

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

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

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

我感觉驱动层应该在收到中断的时候,底半部要执行接收数据的命令,接收到的数据放入驱动的缓冲区,当应用层来取数据的时候只需要取驱动缓冲区里的数据就行了,不知这样是否正确?会不会导致驱动卡死?
...全文
221 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31503869 2015-09-22
  • 打赏
  • 举报
回复
支持下 新手来学习 ,需要积分啊

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧