Linux串口驱动程序设计.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux串口(serial、uart) 驱动程序设计 http://blog.chinaunix. net/space. php?uido二blogid二34481 一、核心数据结构 串口驱动有3个核心数据结构,它们都定义在#includc linux/scrial_corc. h 1、 uart_driver uart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选) 等信息,还封装了 tty_driver(底层串口驱动无需关心tty_driver) o struct uart_driver { struct module *owner; /* 拥有该 uart_driver 的模块,一般为 THIS_MODULE */ const char *driver_name;/*屮丨I驱动名,串口设备文件名以驱动名为皋础 */ 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_port uart_port用丁?描述串口端口的1/0端口或1/0内存地址、FIFO大小、端口类型、 串口血钟等信息。实际上,一个uart_port实例对应一个串口设备 struet uartport { spinlock_t lock; /* 串口端口锁 */ unsigned int iobase; /* 10 端口基地址 */ unsigned char _iomem *membase; * 1()内 吐地」二,纟仝映讨(如 ioxiii])) 后的10内存虚拟基地址*/ unsigned int irq; /* 中断号 */ unsigned int uartclk; /* 串 口时钟 */ unsigned int fifosize; * 串丨丨 FIFO 缓冲大小 */ unsigned char x_char; /* xon/xoff 字符 */ unsigned char regshift: /* 寄存器位移 */ unsigned char iotype; /* 10 访问方式 */ unsigned char unusedl; ttdefine LPIO_PORT (0) /* 10 端口 */ ttdefine UPI0_HUB6 (1) ttdefine UPIO MEM (2) /* 10 内存 */ ^define UPI0_MEM32 (3) ^define UPTO_AU (4) /* Au1x00 type 10 */ ttdefine UPI0_TSI (5) /* Tsil08/109 type 10 */ ttdefine UPIO_DWAPB (6) /* DesignWare APB UART */ ttdefine UPIO RM9000 (7) /* RM9000 type 10 */ unsigned int read_status_mask; * 关心的 Rx error steitus * unsigned int ignore_status_mask;/* 忽略的 Rx error status */ struct uart_info *info; ,* pointer to parent info *,, st rue t uar t ico unt ico unt; /* 计数器 */ struct con sole *cons; * consol纟人构体 * ttifdef CONFIG_SERIAL_CORE_CONSOLE unsigned long sysrq; * sysrq t imeout */ #endif upf_t flags; ttdefine LPF_FOURPORT ((_force upf_t) (1 ? 1)) ttdefine UPF SAK ((_force upf t) (1 ? 2)) ttdefine UPF SPD MASK (

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档