Linux内核TTY驱动架构.pdf

Linux内核TTY驱动架构.pdf

ID:50453366

大小:371.92 KB

页数:14页

时间:2020-03-06

Linux内核TTY驱动架构.pdf_第1页
Linux内核TTY驱动架构.pdf_第2页
Linux内核TTY驱动架构.pdf_第3页
Linux内核TTY驱动架构.pdf_第4页
Linux内核TTY驱动架构.pdf_第5页
资源描述:

《Linux内核TTY驱动架构.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于MX51的TTY驱动架构2012-12-28一、任务目标以uart为实例分析整理TTY驱动架构。二、层次架构用户空间ttycore线路规程serialcoreuart驱动硬件图1在linux内核中,串行设备多种多样,内核开发者为了让驱动开发者尽量简单(可复用的东西多),构建了如图1所示的串行设备层次架构。ttycore里是最基本的字符驱动,经过线路规程处理的数据,通过ttycore提供的数据交互机制与用户空间通信。?图1中线路规程表示对上层或下层传过来数据的处理,不同的处理方式对应不同的协议,如红外、ppp拨号等等。serialcore是对tty驱动进行了封装,与硬件

2、无关,给底层uart驱动开发提供API,针对具体硬件的操作全在uart驱动中实现。因为uart同时涉及到以上三层,所以本文档以uart为例,阐述TTY。三、数据结构设计1.数据结构uart驱动中定义了2个重要的数据结构,structuart_drivermxc_reg,和structuart_mxc_portmxc_port[8]。a.structuart_drivermxc_reguart_driver是serial_core提供的重要结构体,下面是代码定义的uart_driver实例,变量的解释见对应注释。具体结构体见数据结构关系图。staticstructuart_

3、drivermxc_reg={.driver_name="ttymxc",//驱动名,用于与设备匹配.dev_name="ttymxc",//设备名,用于与驱动匹配,并会在dev下显示/dev/ttymxcID.nr=MXC_UART_NR,//最大支持8个uartprot.cons=MXC_CONSOLE,//serialcore中定义的structconsole,详见serialcore分析};b.structuart_mxr_portmxc_ports[8]mxc_ports[]数组是自定义的uart_mxc_port数组,数组大小为8,在mx51中只用到前3个。m

4、xc_ports[]中包含的最重要的结构体是structuart_port{},它们之间的关系详见数据结构关系图。staticuart_mxc_port*mxc_ports[MXC_UART_NR];//MXC_UART_NR=82.数据结构关系图uart_driver{}uart_state{}tty_driver{}constchar*driver_name;.port;intmagic;constchar*dev_name;.xmit;constchar*driver_name;structconsole*cons;*uart_port;constchar*name

5、;intnr;……structcdevcdev;*state;structtty_struct**ttys;*tty_driver;structktermios**termios;……conststructtty_operations*ops;intnum;structlist_headtty_drivers;……circ_buf{}tty_struct{}char*buf;intmagic;inthead;*driver;tty_port{}inttail;conststructtty_operations*ops;structtty_struct*tty;……inti

6、ndex;Conststructtty_port_operationsstructtty_ldisc*ldisc;*ops;structtty_bufheadbuf;unsignedchar*xmit_buf;tty_ldisc{}*port;……Structtty_ldisc_ops*ops;void*driver_data;……char*write_buftty_bufhead{}……structtty_buffer*head;structtty_buffer*tail;structtty_buffer*free;intmemory_used;……uart_mxc_p

7、ort{}.port;uart_port{}structclk*clk;unsignedintirq;……unsignedintline;tty_buffer{}unsignedinttype;structtty_buffer*next;unsignedintuartclk;char*char_buf_ptr;structuart_icounticount;unsignedchar*flag_buf_ptr;conststructuart_ops*ops;intused;structdevice*dev;intsize;str

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。