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驱动的总图。。

linux UART 驱动学习笔记——用户如何操作硬件 - 边缘之火 - 边缘之火
 
                                                                   图1  uart驱动
 

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

linux UART 驱动学习笔记——用户如何操作硬件 - 边缘之火 - 边缘之火

 这种图看着感觉很简单,也很有层次,实际上很复杂,图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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值