串口驱动8250基本结构.docxVIP

  • 35
  • 0
  • 约4.98千字
  • 约 5页
  • 2017-11-20 发布于北京
  • 举报
串口驱动8250基本结构

串口核心层 提供(定义了)3个数据结构 在下面8250.c中为初始化数据结构, uart_driver static struct uart_driver serial8250_reg = { .owner = THIS_MODULE, .driver_name = serial, /* 串口驱动名,串口设备文件名以驱动名为基础 */ .dev_name = ttyS, /* 串口设备名 */ .major = TTY_MAJOR, .minor = 64, .nr = UART_NR, /* 该uart_driver支持的串口个数(最大) */ .cons = SERIAL8250_CONSOLE, /* 其对应的console.若该uart_driver支持serial console,否则为NULL */ }; int uart_register_driver(struct uart_driver *drv); 注册函数 void uart_unregister_driver(struct uart_driver *drv); 卸载函数 uart_port struct uart_8250_port { struct uart_port port; struct timer_list timer; /* no irq timer */ struct list_head list; /* ports on this IRQ */ unsigned short capabilities; /* port capabilities */ unsigned short bugs; /* port bugs */ unsigned int tx_loadsz; /* transmit fifo load size */ unsigned char acr; unsigned char ier; unsigned char lcr; unsigned char mcr; unsigned char mcr_mask; /* mask of user bits */ unsigned char mcr_force; /* mask of forced bits */ unsigned char lsr_break_flag; /* * We provide a per-port pm hook. */ void (*pm)(struct uart_port *port, unsigned int state, unsigned int old); }; int uart_add_one_port(struct uart_driver *drv, struct uart_port *port); 发生在uart_register_driver()之后 uart_remove_one_port() uart_ops static struct uart_ops serial8250_pops = { .tx_empty = serial8250_tx_empty, /* 串口的Tx FIFO缓存是否为空 */ .set_mctrl = serial8250_set_mctrl, /* 设置串口modem控制 */ .get_mctrl = serial8250_get_mctrl, /* 获取串口modem控制 */ .stop_tx = serial8250_stop_tx, /* 禁止串口发送数据 */ .start_tx = serial8250_start_tx, /* 使能串口发送数据 */ .stop_rx = serial8250_stop_rx, /* 禁止串口接收数据 */ .enable_ms = serial8250_enable_ms, /* 使能modem的状态信号 */ .break_ctl = serial8250_break_ctl, /* 设置break信号 */ .startup = serial8250_startup, /* 启动串口,应用程序打开串口设备文件时,该函数会被调用 */ .shutdown = serial8250_shutdown, /* 关闭串口,应用程序关闭串口设备文件时,该函数会被调用 */ .set_termios = serial8250_set_termios, /* 设置串口参数 */ .pm = serial82

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档