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)四个选项中,只有一个选…

MVC中JSON字符长度超出限制的异常处理

异常信息如下: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。这个异常是在执行MVC中的JsonResult的时抛出的,根据异常的Message得知是序列化的字符串超出了maxJsonLength的限制。并得…

cookie 百科_cookie是什么

很多朋友并不了解cookie是什么,Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265…

pppd 源码修改1

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

学校计算机专业春联大全带横批,对联大全带横批_春节对联大全_新年春联合集...

上联:旧岁又添几个喜 下联:新年更上一层楼 横批:辞旧迎新上联:绿竹别其三分景 下联:红梅正报万家春 横批:春回大地上联:民安国泰逢盛世 下联:风调雨顺颂华年 横批:民泰国…

2014腾讯实习生招聘软件开发类附加题

附加题: 31. 一个珠宝商甲要鉴定41克以下的宝石(40克及以下的任意重量),商甲只带一个天平和四个砝码,请问带哪四个砝码? 32. 一道有关utf-8编码的题。给了个例子:“我”的Unicode码是xxxx, 其ut…

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

停止和删除Hasplms服务(二)--HASP运行环境

这一篇文章继续上一篇“停止和删除Hasplms服务(一)”讨论HASP运行环境的安装和卸载,这里的内容对软件的发行者有参考价值,普通用户也可以用这里的方法管理HASP加密锁。 首先到Sentinel官网下载HASP运行环境管理工具 http://sentin…

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

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

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

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

getline()函数详解

学习C的同学可能都会遇到一个getline()函数&#xff0c;譬如在Cpremer中&#xff0c;标准string类型第二小节就是“用getline读取整行文本”。书上给的程序如下&#xff1a;int main(){string line:while(getline(cin,line))cout<<line<<endl;return 0;}大家会发现…

android 获取和设置屏幕亮度

/**获取屏幕亮度 / public static int getScreenBrightness(Activity activity){ int value 0; ContentResolver cr activity.getContentResolver(); try{ value Settings.System.getInt(cr,Settings.System.SCREEN_BRIGHTNESS); }catch(SettingNotFoundException e){ } ret…

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

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

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

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