• [国嵌攻略][130][串口驱动分析-发送]


    tty数据发送流程

    //tty子系统

    1.file_operation中找到tty_write

    2.tty_write找到线路规程中的n_tty_write

    3.n_tty_write找到uart_ops中的uart_write

    //串口驱动

    4.uart_write找到s3c24xx_serial_start_tx

    当应用程序使用系统调用时最终调用到s3c24xx_serial_start_tx函数

    s3c24xx_serial_start_tx如何实现

    1.使能串口发送中断,fifo数据会发送走,然后串口产生中断

    2.中断处理程序来完成数据发送

    串口发送的数据从哪里来

    当应用程序调用write系统调用后,数据会被写入串口的循环缓冲,当发送中断处理程序开始发送数据时会把循环缓冲的数据取走。用户数据在uart_write调用时被写入循环缓冲。

    串口发送函数分析

    串口发送真正的函数是s3c24xx_serial_tx_char

    1.判断是否有需要发送的x_char字符(设备是否能发送),如果有通过将其写入UTXH寄存器发送

    2.如果循环缓存为空或者串口状态不允许发送,则关闭发送中断

    3.利用while循环,来发送数据,循环条件:1.循环缓存不为空;2.发送数据量小于256

    3.1.当发送fifo满的时候,退出发送

    3.2.从循环缓冲中取出数据,写入UTXH寄存器

    3.3.调整循环缓冲位置

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

    5.如果循环缓冲为空,则关闭发送中断

  • 相关阅读:
    c#中MessageBox的使用(转)
    ArcGIS中地图配准(转)
    VS2010中VC9.0Runtime与VC10.0Runtime在win7上装不上提示error code 1603(转)
    win7下安装Oracle 10G 的成功方法
    解决win 7 下打不开chm格式文件的办法
    vi 编辑器
    开源赚钱思路
    如何开始linux 编程
    Linux C语言开发基础
    如何做开源项目——ABC
  • 原文地址:https://www.cnblogs.com/d442130165/p/5263601.html
Copyright © 2020-2023  润新知