V210 UART 整体流程

2.6内核以后,多数驱动都是以平台总线的方式编写,因此对于这种类型的驱动,实际就是要分成两个流程来分析

平台总线设备的构造,平台总线驱动的构造。

下面先分析平台总线设备的构造,平台总线设备里是硬件相关的信息,比如中断资源,寄存件地址定义。

1. arch/arm/mach-s5pv210/mach-x210.c 

       smdkc110_map_io()

             s3c24xx_init_uarts(smdkc110_uartcfgs, ARRAY_SIZE(smdkc110_uartcfgs))


2. arch/arm/mach-s5pv210/init.c

       s5pv210_common_init_uarts(struct s3c2410_uartcfg *cfg, int no)

s3c24xx_init_uartdevs("s5pv210-uart", s5p_uart_resources, cfg, no)


3. arch\arm\plat-samsung\init.c

       s3c24xx_init_uartdevs(char *name, struct s3c24xx_uart_resources *res, struct s3c2410_uartcfg *cfg, int no)

上面3部完成了  platform_device  的构造

其中:name = "s5pv210-uart"

               resource = arch\arm\plat-s5p\dev-uart.c 文件中定义s3c24xx_uart_resources结构体

          dev.platform_data = arch\arm\mach-s5pv210\mach-x210.c  文件中定义 s3c2410_uartcfg 结构体


下面分析平台总线驱动

1. drivers/serial/s5pv210.c

        s5p_serial_init(void)

                 s3c24xx_serial_init(&s5p_serial_driver, *s5p_uart_inf)

2. drivers\serial\samsung.c

                s3c24xx_serial_init(struct platform_driver *drv, struct s3c24xx_uart_info *info)

                         platform_driver_register(drv);

上面2部构造并注册了platform_driver


因为uart驱动是字符设备驱动,因此,下面分析uart的字符设备驱动的初始化

1.  drivers\serial\samsung.c

      s3c24xx_serial_modinit()

               uart_register_driver(&s3c24xx_uart_drv)

2.   drivers\serial\serial_core.c

              uart_register_driver(struct uart_driver *drv)

                        tty_register_driver(normal)

3. drivers\char\tty_io.c

             tty_register_driver(struct tty_driver *driver)

                       register_chrdev_region(dev, driver->num, driver->name)

                       cdev_init(&driver->cdev, &tty_fops)

                       cdev_add(&driver->cdev, dev, driver->num)

从上面的关键步骤可以看出一个标准的字符设备驱动的初始化流程,但是没有创建出设备文件。显然,设备文件的

创建,应该是平台总线驱动的probe函数创建的。


下面分析设备文件的创建

1.drivers/serial/s5pv210.c

              s3c24xx_serial_probe(pdev, s5p_uart_inf[pdev->id])

2. drivers\serial\samsung.c

              int s3c24xx_serial_probe(struct platform_device *dev, struct s3c24xx_uart_info *info)

                           device_create_file(&dev->dev, &dev_attr_clock_source)

可以看到设备文件的创建是在平台总线的驱动的probe函数中创建

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

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

相关文章

安徽大学计算机考研学硕2019初试单科线,安徽大学2019年考研复试分数线已公布...

2019考研国家线及各大院校复试分数线已公布!考生们自从得知考研成绩后都在忐忑的等待着。下面中公考研小编整理了“安徽大学2019年考研复试分数线已公布”相关内容,希望能对2019考研考生们有所帮助。点击查看:2019考研国家线一、第一志愿报考…

1 jquery对checkbox的简单操作

//全选和全不选 votefunction selectAll(){ if($(":checkbox").prop(checked)){ //$(":checkbox").removeAttr(checked);//attr不兼容了jquery1.6以上 $(":checkbox").prop(checked,false); }else{ $(":checkbox").prop(c…

e记法 python 底数_备战python二级

明天考试去,滚吧提醒与分值:1*40(选择)5*3(填空)101520比如今年的一个题目是要求随机抽一个手机品牌,这道题目的关键点在于你要使用seed()函数覆盖原来的给定的种子seed(1),因为要求…

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 cou…

浙江省计算机二级办公软件高级应用分值,浙江计算机二级高级办公软件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)类省…