串口驱动程序设计

一.tty架构导入 

 

 tty架构分为:tty核心,线路规程,tty驱动。

二.串口驱动

2.1 初始化

 

 三.打开串口

   四.串口发送

 函数调用关系

注意:调用到最后的s3xeiria_tx时是打开串口中断,在串口中断中进行发送。

 发送的数据是在uart_write中写入的循环缓冲,在中断程序中将循环缓冲发送走。

循环缓冲结构体。

  struct circ_buf{

char *buf;

int head,tail;

};

4.2中断发送函数的过程

4 如果循环缓冲中的数据量低于256就去唤醒之前在发送时阻塞的进程

5如果循环缓冲为空,则关闭中断。

4.3发送的总过程

 五串口接收

 

 5.1串口驱动接收

1.读取ufcon寄存器  2.读取ufstat寄存器  3.如果接收fifo的数据量为0,则退出。

4读取uerstat寄存器 5从urxh寄存器中取出数据6进行流控处理

7.根据uerstat寄存器的值,记录具体的错误类型8如果收到的是sysrq字符,进行特殊处理-uart_handle_sysrq-char.

9把接收到的字符放入放进串口驱动的buf-uart_insert_ch ar

10把串口驱动收到的数据松江线路规程的read_buf  函数 tty_flip_buffer_push  .

5.2串口的流控处理

为什么需要:当a接收满了,就会去通知发送方b,停下来。

有软件流控:往发送方发送xoff信号

硬件流控:分为非自动流控和自动流控。

 非自动由软件控制rts

六.串口驱动程序编写

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值