linux UART 驱动学习笔记——用户如何操作硬件

 

学习环境: linux 2.6.32.2    mini2440串口驱动

要看懂UART的整个程序,需要看/drivers/char/tty_io.c 、tty_ldisc.c 和/drivers/serial/s3c2440.c 、samsung.c、serial_core.c

先看UART驱动的总图。。

 
                                                                   图1  uart驱动
 

 UART是TTY的一类,tty体系包括了,tty核心,tty线路规程,tty驱动三大部分,这个体系就如一个子系统一样,如下图

 这种图看着感觉很简单,也很有层次,实际上很复杂,图1只是这整个驱动体系的一部分,其实驱动开发者主要关心的是这两个文件如何编写s3c2440.c 、samsung.c,其他的linux系统都已经实现。

按照最简单的驱动,在驱动完成之后应该能看到两点: 1、在/dev下有设备文件   2、在用cat /proc/devices 下应该能看到这个设备的主设备号和设备名

第一点  s3c24xx_serial_probe(dev, &s3c2440_uart_inf);---->uart_add_one_port(&s3c24xx_uart_drv, &ourport->port);----->

tty_register_device(drv->tty_driver, uport->line, uport->dev);------>device_create(tty_class, device, dev, NULL, name);

第二点 uart_register_driver(&s3c24xx_uart_drv);---->tty_register_driver(normal);中

cdev_init(&driver->cdev, &tty_fops);
 driver->cdev.owner = driver->owner;
 error = cdev_add(&driver->cdev, dev, driver->num);

你可能感兴趣的:(linux驱动开发)