- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]Linux串口serial、uart驱动程序设计
Linux串口(serial、uart)驱动程序设计/space.php?uido=blogid=34481
一、核心数据结构串口驱动有3个核心数据结构,它们都定义在#include linux/serial_core.h1、uart_driveruart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver)。
struct uart_driver {struct module *owner; /* 拥有该uart_driver的模块,一般为THIS_MODULE */const char *driver_name; /* 串口驱动名,串口设备文件名以驱动名为基础 */const char *dev_name; /* 串口设备名 */int major; /* 主设备号 */int minor; /* 次设备号 */int nr; /* 该uart_driver支持的串口个数(最大) */struct console *cons; /* 其对应的console.若该uart_driver支持serial console,否则为NULL *//** these are private; the low level driver should not* touch these; they should be initialised to NULL*/struct uart_state *state;struct tty_driver *tty_driver;}; 2、uart_portuart_port用于描述串口端口的I/O端口或I/O内存地址、FIFO大小、端口类型、串口时钟等信息。实际上,一个uart_port实例对应一个串口设备
struct uart_port {spinlock_t lock; /* 串口端口锁 */unsigned int iobase; /* IO端口基地址 */unsigned char __iomem *membase; /* IO内存基地址,经映射(如ioremap)后的IO内存虚拟基地址 */unsigned int irq; /* 中断号 */unsigned int uartclk; /* 串口时钟 */unsigned int fifosize; /* 串口FIFO缓冲大小 */unsigned char x_char; /* xon/xoff字符 */unsigned char regshift; /* 寄存器位移 */unsigned char iotype; /* IO访问方式 */unsigned char unused1;#define UPIO_PORT (0) /* IO端口 */#define UPIO_HUB6 (1)#define UPIO_MEM (2) /* IO内存 */#define UPIO_MEM32 (3)#define UPIO_AU (4) /* Au1x00 type IO */#define UPIO_TSI (5) /* Tsi108/109 type IO */#define UPIO_DWAPB (6) /* DesignWare APB UART */#define UPIO_RM9000 (7) /* RM9000 type IO */unsigned int read_status_mask; /* 关心的Rx error status */unsigned int ignore_status_mask;/* 忽略的Rx error status */struct uart_info *info; /* pointer to parent info */struct uart_icount icount; /* 计数器 */struct console *cons; /* console结构体 */#ifdef CONFIG_SERIAL_CORE_CONSOLEunsigned long sysrq; /* sysrq timeout */#endifupf_t flags;#define UPF_FOURPORT ((__force upf_t) (1 1))#define UPF_SAK ((__force upf_t) (1 2))#define UPF_SPD_MASK ((__force upf_t) (0x1030))#define UPF_SPD_HI ((__force upf_t)
您可能关注的文档
- [计算机软件及应用]DEFINITY-all呼叫中心方案.ppt
- [计算机软件及应用]exchange安装图解.doc
- [计算机软件及应用]expand 过程.ppt
- [计算机软件及应用]CorelDRAW 08软件大纲教学课程.ppt
- [计算机软件及应用]Extending Windows Media Library with a Media Parser Plug-in.pdf
- [计算机软件及应用]EZ Drive USB Flash Disk.pdf
- [计算机软件及应用]google C++编程风格指南.pdf
- [计算机软件及应用]ExtMail邮件服务器解决方案.doc
- [计算机软件及应用]FA-18 飞行员手册.doc
- [计算机软件及应用]gs_id考勤机详细操作说明.doc
文档评论(0)