V210 UART TX 流程

1. 虽然V210的uart驱动是平台总线设备驱动模型,但实际上他还是以字符设备驱动存在,那么分析他的发送流程,

    首先找到他的file_operations的write函数

    drivers/char/tty_io.c

         tty_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)

2. drivers/serial/serial_core.c

        uart_write(struct tty_struct *tty, const unsigned char *buf, int count)

               uart_start(struct tty_struct *tty)

                        __uart_start(struct tty_struct *tty)

                                if (!uart_circ_empty(&state->xmit) && state->xmit.buf &&!tty->stopped && !tty->hw_stopped)
                           port->ops->start_tx(port);

   对V210来说,uart0和uart1有流控,uart2和uart3没有流控,所以,如果应用程序对uart3设置的流控,那么

tty->hw_stopped这个参数会被置1,应用层的数据传到这里就停止了。

3. drivers/serial/samsung.c

     static void s3c24xx_serial_start_tx(struct uart_port *port)

     这个函数执行后,会调用发送中断处理函数

     static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id)

     从打印的log看,发送中断函数结束后,tty_write和uart_write才会返回


下面说一下log调试方法,因为uart2做为调试串口,因此,为了避免调试串口也打印log,可以在那些函数中,用

下面几个办法来区分

1. 对于tty_write函数来说,我们可以通过inode获得设备文件的子设备号来区分

     int num = MINOR(inode->i_rdev);

2. 对于uart_write来说,我们可以通过uart_port数据结构的中断号来区分

    if(port->irq != IRQ_S5P_UART_RX2)

    为什么这么写,从arch/arm/plat-s5p/dev_uart.c中可以看到4个串口的硬件资源结构体定义

    

    另外,从drivers/serial/samsung.c里的s3c24xx_serial_init_port函数里,可以看到下面几句

    res = platform_get_resource(platdev, IORESOURCE_MEM, 0);

    port->mapbase = res->start;
    port->membase = S3C_VA_UART + res->start - (S3C_PA_UART & 0xfff00000);
    ret = platform_get_irq(platdev, 0);

    port->irq = ret;
    ourport->rx_irq = ret;
    ourport->tx_irq = ret + 1;

    这几句就是在获取uart硬件资源的内存资源和中断资源,可以看到,platform_get_irq得到第一个中断号资源,即

    接收中断,然后port->irq = ret, 即uart_port这个结构体的irq变量==IRQ_S5P_UART_RX2

    然后s3c24xx_uart_port的rx_irq == IRQ_S5P_UART_RX2, tx_irq == IRQ_S5P_UART_TX2,因此可以通过判断

    中断号来区分是哪个串口

3. 另外通过s3c24xx_uart_port结构体的channelnum也可以区分是哪个串口

    在uart平台总线设备驱动的probe函数(s3c24xx_serial_probe)可以看到以下赋值

    ourport->channelnum= dev->id

    然后,从uart平台总线设备里可以看到

    arch/arm/plat-samsung/dev-uart.c

    

   因此可以知道channelnum实际就是0-3,分别对应了4个uart


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浙江省计算机二级办公软件高级应用分值,浙江计算机二级高级办公软件word题分值是多少...

计算机文化基础试题集(浙江省计算机办公室软件等级考试悬赏分:10 - 离问题结束还有 12 天 23 小时一、选择题((1)~(30)每小题1分,(31)~(55)每小题2分,共80分)下列各题 A) 、B)、C)、D)四个选项中,只有一个选…

pppd 源码修改1

1. pppd拨号成功后,会将解析到的dns服务器IP地址,写入/etc/ppp/resolv.conf 这样的话,gethostbyname_r并不会识别,并且,如果有启动两路pppd的话,后面一路会将resolv.conf文件重写。 因此,这块代…

location.href属于重定向还是转发_servlet2 单元测试、转发、重定向

解决服务端接收数据乱码问题。服务器默认采用 ISO8859-1 编码响应内容。// 1req.setCharacterEncoding("utf-8");// 2 byte[] bytes req.getParameter("username").getBytes("iso-8859-1"); System.out.println("username:" n…

如何在CSDN博客中的所贴的代码进行【代码块】显示

笔者最近很喜欢在csdn发一些技术博客,可是看了别人的博客,有代码的地方总是可以显示出代码块,而自己贴上去的代码总是没有。刚开始还以为CSDN博客里面的编辑功能有,可是找来找去都没有找到。后来才发现原来需要自己在源码上进行修…

学安全工程用不用计算机,上重点大学的末流专业,不如上普通大学的重点专业,你赞成吗?...

上重点大学的末流专业,不如上普通大学的重点专业,你赞成吗?首先,我对这个说法不赞成,这个说法是错误的。可以说:基本上说的是对的也是错的。说对的,是这个思路是对的,说错&#xff0…

ORACLE复杂查询之连接查询

一、传统的连接查询 1、交叉连接:返回笛卡尔积 WHERE中限定查询条件,可以预先过滤掉掉不符合条件的记录,返回的只是两个表中剩余记录(符合条件的记录)的笛卡尔积。 2、内连接:参与连接的表地位平等&#xf…

12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输

4月8日,中国电信、中国移动、中国联通联合举行线上发布会,共同发布《5G消息白皮书》。《白皮书》阐述了5G消息的核心理念,明确了相关业务功能及技术需求,提出了对5G消息生态建设的若干构想。据介绍,5G消息业务是终端原…

winpe修复计算机无法启动,用winpe来修复无法进入系统的问题

很多网友都碰到过有的时候无法进入系统?不知道该怎么操作,U大师告诉你一个方法:那就是用winpe来修复无法进入系统的问题,可以先在硬盘上安装一个PE维护系统,重启电脑时在多重启动菜单选择Windows PE,系统便会自动进入P…

详细解说 STL 排序(Sort)

0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也…

ad9生成坐标文件_GROMACS各种文件格式介绍

CPT文件:该文件为模拟断点文件(check point,.cpt)。该文件为模拟过程固定时间间隔产生,保存模拟系统所有信息。该文件一部分可以在能量文件(.edr)找到,一部分可以在双精度轨迹文件(.trr)中找到。如果模拟因为外界条件中断&#xf…

广东计算机电子学校,广东省电子职业技术学校

开设6大专业类别,十九个专业方向,其中电子技术应用是全国首批示范专业和省重点建设专业,计算机及应用是省重点建设专业。广东省电子职业技术学校创建于1974年,主管部门是广东省教育厅,是我省创办最早的电子信息(IT)类省…

为什么不能睁一只眼闭一只眼_自媒体人上哪里找非常多的原创短视频素材?我为什么一定要你做原创?...

现在短视频非常火,很多人都想拍摄3-5分钟的视频,因为各个平台对于视频的收益补贴简直太大了,比文章大多了,目的就是为了让大家多去创作视频。但是创作视频真的不容易,于是很多人就是想起了搬运,把某个人在A…

计算机控制的点火系统由,第八节(点火系统)

1、点火系统作用(1)将蓄电池电压12V,转换成点火系统需要极高的电压,并分配到各缸。(2)适时地点燃发动机气缸内的空气和燃油的混合气体。相关阅读:浅谈汽车电子稳定程序系统(ESP)驱动的革命 本田SH-AWD四轮驱动详解看丰田专家如何解释发动机转速升高2、对…

搭建Windows Embedded Compact 7开发环境

大家期盼已久的WindowsEmbedded Compact 7是微软2010年发布的第七代嵌入式操作系统!微软可谓对它寄予很大的希望,所以连名字都改了。以下就简称WEC7吧。WEC7 的最大亮点就是引入了Silverlight 使用Expression blend 3 作为UI的首选开发,当然这…

华中师范大学计算机考研论坛,2020年华中师范大学计算机考研经验分享

本人是2020年考入华中师范大学计算机专业硕士的学生,已成功上岸,下面给大家分享一下我的个人考研经验。我为什么考研我从大一就已经确定要考研,毕竟自己错过了高考这样的机会,希望自己的人生能再一次重新洗牌,不受人冷…

ELF文件和BIN文件

文件的内容:1. BIN文件是 raw binary 文件,这种文件只包含机器码。2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。所以ELF文件的体积比对应的BIN文…

计算机辅助项目管理课程方案,天津大学计算机辅助管理研究生课程简介

8 / 14【育明教育】中国考研考博专业课辅导第一品牌 官方网站:http://www.doczj.com/doc/e25fb4dad4d8d15abe234eb2.html8《翻译硕士英语》重点考察考生的英语水平,内容包括:词汇语法、阅读理解、英语写作等, 总分 100 分。 二、考…

android list 替换元素_Python数据结构(一)List使用(大厂面试解答)

List是什么?List顾名思义就是列表,那么它具体描述是什么呢?列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。在Python中list是保留字,List中的每个元素都有自己的编号,很像C、C、ja…

java 获取打印机缺纸_JAVASE 语言概述和JAVA

第一章:开发前言计算机分为硬件和软件,一般来说。硬件就是组成计算机的可见的物理组件。我们的电脑、手机、电子设备都算一个小的计算机。而软件提供看不见的指令,这些指令控制硬件并且通过硬件完成特定任务。常见硬件:CPU、内存、…

冯诺依曼原理中计算机包括功能部件,水泥越细,强度发展越快,对混凝土性能也越好...

现象其结定相同的不一果却,水泥现象现象现象确定模糊机现非随随机,下同的条件在相,称为。、越细越快也效期望强度联性某价C激励激励、关值B水平,需要学习得到的机脱产会”“我非常是否属于。下面不是哪个功能够完成的操作页能开始…