欢迎来到天天文库
浏览记录
ID:17533482
大小:408.50 KB
页数:66页
时间:2018-09-02
《linux串口驱动编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux串口(serial、uart)驱动程序设计目录Linux串口(serial、uart)驱动程序设计2一、核心数据结构2二、串口驱动API6三、串口驱动例子9linuxUART串口驱动开发文档27概念阐述27一、老版本的串口驱动程序28二、目前的串口驱动程序29三、3个数据结构及其串口核心层API311、uart_driver312、uart_port323、uart_ops33四、uart_ops37五、注册串口终端40六、支持platform_driver43七、串口接收数据和发送数据流程451.相关
2、文件452.数据收发47基于Linux2.6.22和s3c2440的串口驱动简析---(1)2013-11-2115:56:3248基于Linux2.6.22和s3c2440的串口驱动简析---(2)2013-11-2115:58:4956Linux串口(serial、uart)驱动程序设计分类:LINUX原文地址:Linux串口(serial、uart)驱动程序设计作者:lingdxuyan一、核心数据结构串口驱动有3个核心数据结构,它们都定义在<#includelinux/serial_core.h>1、ua
3、rt_driveruart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver)。structuart_driver{structmodule*owner;/*拥有该uart_driver的模块,一般为THIS_MODULE*/constchar*driver_name;/*串口驱动名,串口设备文件名以驱动名为基础*/constchar*dev_name;/*串口设备名*/intmajor;/*主设备号*/intm
4、inor;/*次设备号*/intnr;/*该uart_driver支持的串口个数(最大)*/structconsole*cons;/*其对应的console.若该uart_driver支持serialconsole,否则为NULL*//**theseareprivate;thelowleveldrivershouldnot*touchthese;theyshouldbeinitialisedtoNULL*/structuart_state*state;structtty_driver*tty_driver;};2
5、、uart_portuart_port用于描述串口端口的I/O端口或I/O内存地址、FIFO大小、端口类型、串口时钟等信息。实际上,一个uart_port实例对应一个串口设备structuart_port{spinlock_tlock;/*串口端口锁*/unsignedintiobase;/*IO端口基地址*/unsignedchar__iomem*membase;/*IO内存基地址,经映射(如ioremap)后的IO内存虚拟基地址*/unsignedintirq;/*中断号*/unsignedintuartcl
6、k;/*串口时钟*/unsignedintfifosize;/*串口FIFO缓冲大小*/unsignedcharx_char;/*xon/xoff字符*/unsignedcharregshift;/*寄存器位移*/unsignedchariotype;/*IO访问方式*/unsignedcharunused1;#defineUPIO_PORT(0)/*IO端口*/#defineUPIO_HUB6(1)#defineUPIO_MEM(2)/*IO内存*/#defineUPIO_MEM32(3)#defineUPIO
7、_AU(4)/*Au1x00typeIO*/#defineUPIO_TSI(5)/*Tsi108/109typeIO*/#defineUPIO_DWAPB(6)/*DesignWareAPBUART*/#defineUPIO_RM9000(7)/*RM9000typeIO*/unsignedintread_status_mask;/*关心的Rxerrorstatus*/unsignedintignore_status_mask;/*忽略的Rxerrorstatus*/structuart_info*info;/*
8、pointertoparentinfo*/structuart_icounticount;/*计数器*/structconsole*cons;/*console结构体*/#ifdefCONFIG_SERIAL_CORE_CONSOLEunsignedlongsysrq;/*sysrqtimeout*/#endifupf_tflags;#defineUPF_FOURPORT
此文档下载收益归作者所有