1、概述

(1)串口驱动程序结构
(2)串口驱动中的重要数据结构体

 

 

用户态发生write时->VFS中的sys_write,先经过file_operation中的tty_write,这个tty_fops是在哪里注册的?

 

 

2、回溯-初始化分析

两个重要的文件:
samsung.c:注册串口驱动程序
s5pv210.c

(2)串口驱动中重要的数据结构:
uart驱动程序结构:struct uart_driver  --对应串口驱动
使用场景实例:
static uart_driver s3c24xx_uart_ddrv = {
  .owner = THIS_MODULE,
  .dev_name="s3c2440_serial"
  .nr=CONFIG_SERIAL_SAMSUNG_UARTS,定义有几个端口
  .cons = S3C24XX_SERIAL_CONSOLE,
  .driver_name = S3C24XX,
  .major = 主设备号,
  .minor = 次设备号,

};
uar端口结构:struct uart_port
uart相关操作函数结构:struct uart_ops
uart状态结构:struct uart_state
uart信息结构:uart_info

(3)初始化的过程分析:
从哪里开始分析呢?samsung.c

static int __init s3c24xx_serial_modinit(void)
{
  int ret;
  ret = uart_register_driver(&s3c24xx_uart_drv);
  return 0;
}

static void __exit s3c24xx_serial_modexit(void)
{
  uart_unregister_driver(&s3c24xx_uart_drv);
}

module_init(s3c24xx_serial_modinit);
module_exit(s3c24xx_serial_modexit);