serial构架分析
文章平均质量分 81
sirzjp
这个作者很懒,什么都没留下…
展开
-
linux serial构架分析及驱动开发(1)
前面介绍了tty核心分析及tty驱动开发的方法,tty设备包括串口、终端、伪终端三大类,其中终端和伪终端驱动内核都帮我们实现好了,很少需要改动。因此我们主要介绍串口驱动的开发及其在内核中的构架(其核心实现源码主要在/drivers/serial_core.c中),这一节中我们主要分析向内核中加入一个serial驱动的方法。 serial core原创 2011-01-25 09:51:00 · 5153 阅读 · 0 评论 -
linux serial构架分析及驱动开发(2)
上节介绍了serial驱动核心提供的重要数据结构,这一节将介绍serial核心提供给驱动开发的核心函数uart_register_driver向内核注册serial驱动(具体操作就是向内核注册一个tty_driver)以及uart_unregister_driver注销serial驱动。uart_add_one_port用于为串口驱动添加一个串口端口(在总线型设备驱动中,通常用于探测函数probe中),uart_remove_one_port用于删除一个已经添加到驱动中的串口端口(通常在卸载函原创 2011-01-25 16:52:00 · 4810 阅读 · 0 评论 -
linux serial构架分析及驱动开发(3)
这一节我们将介绍一个serial驱动的实例,后面各节中也将以这个例子来分析串口各种操作的实际情景(例子是at91sam9260板子的串口驱动)。该驱动将串口看作平台(platform)设备。platform可以看作一伪总线,用于将集成于片上系统的轻量级设备与Linux设备驱动模型联系到一起,它包含以下两部分(有关platform的声明都在#include ,具体实现在drivers/base/platform.c):1、platform设备。我们需要为每个设备定义一个platform_device实例str原创 2011-01-26 13:46:00 · 5654 阅读 · 0 评论 -
linux serial构架分析及驱动开发(4)
<br /> 在uart_register_driver函数中有这样的一个函数:tty_set_operations(normal,&uart_ops),这个uart_ops就是tty_operations函数集,这里是串口操作的公用函数接口,本节及后面章节将结合串口操作的流程,来介绍上面的操作函数。<br /> <br />static const struct tty_operations uart_ops = {<br /> .open = uart_open,<br /> .close原创 2011-01-30 15:06:00 · 3358 阅读 · 1 评论 -
linux serial构架分析及驱动开发(5)
<br />uart_close主要在tty_release和do_tty_hundup中调用,做与uart_pen相反的操作,具体源码如下:<br />/*<br /> * In 2.4.5, calls to this will be serialized via the BKL in<br /> * linux/drivers/char/tty_io.c:tty_release()<br /> * linux/drivers/char/tty_io.c:do_tty_handup()<br />原创 2011-01-31 10:05:00 · 2264 阅读 · 0 评论 -
linux serial构架分析及驱动开发(6)
这一节分析串口核心中对写操作的处理,从用户空间调用write系统调用开始,首先执行tty_write函数,在该函数中执行do_tty_write,将用户空间的数据复制到tty->write_buf中,然后调用线路规程中的写函数即write_chain,最后write_chain调用uart_write或uart_flush_chars,再调用专用port->ops中的数据将数据发射出去,具体的操作过程看下面的源码。//uart_write现将待写入的数据写入到环形缓存state->info->原创 2011-01-31 11:31:00 · 3364 阅读 · 1 评论