欢迎来到天天文库
浏览记录
ID:9972761
大小:824.52 KB
页数:33页
时间:2018-05-12
《嵌入式原理与设计 第11章 嵌入式linux驱动开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章嵌入式Linux驱动开发第11章嵌入式Linux驱动开发11.1串口及控制台驱动11.2FrameBuffer驱动11.3以太网络驱动11.4Linux驱动程序总结11.1串口及控制台驱动串口及控制台驱动的作用Linux串口驱动结构Linux控制台驱动结构串口及控制台驱动的作用在嵌入式Linux中,控制台(console)是系统重要的输出设备。在通过Bootloader引导内核的时候,可以使用console=…的命令行来指定控制台。当没有指定控制台的时候,系统利用第一个注册的终端设备(tty)作为系统的控制台。串口及控制台驱动的作用嵌入式处理器一般都具有串口控制器(UAR
2、T)。在嵌入式Linux,串口的地位非常重要,尤其在系统调试阶段,一切有用的信息都可以从串口输入到主机。串口及控制台驱动的作用Linux串口驱动结构串口驱动程序的核心部分:drivers/char/serial_core.hdrivers/char/serial_core.c串口驱动(structuart_driver)串口端口(structuart_port)端口操作的数据结构(structuart_ops)串口状态(structuart_state)包含串口的操作structuart_opsLinux串口驱动结构结构体uart_driver是串口驱动程序的框架;结构体stru
3、ctuart_port用于描述一个UART端口,其中包含到structuart_ops的指针。结构体structuart_ops是serial_core.h中定义的另外一个重要的数据结构,它表示对串口的操作;结构体structuart_state表示串口的状态。Linux控制台驱动结构控制台的主要数据结构,在linux源代码的include/linux/console.h下。数据结构structconsole定义Linux的控制台,console_cmdline定义了命令行中的控制台。在Linux内核启动的时候,使用console=…指定的控制台的名字就是使用console_cm
4、dline类型结构体中的名字name[8]。Linux控制台驱动结构控制台命令行数据结构:structconsole_cmdline{charname[8];/*驱动的名称*/intindex;/*驱动次设备系引*/char*options;/*驱动的可选项*/};Linux控制台驱动结构控制台数据结构:structconsole{charname[8];void(*write)(structconsole*,constchar*,unsigned);int(*read)(structconsole*,constchar*,unsigned);kdev_t(*device)(st
5、ructconsole*);void(*unblank)(void);int(*setup)(structconsole*,char*);shortflags;shortindex;intcflag;structconsole*next;};控制台的写操作必须实现,为printk的输出所使用,读操作可以不实现。setup函数指针实现初始化的功能。11.2FrameBuffer驱动LCD驱动原理显示内存FrameBuffer驱动结构LCD驱动原理LCD的含义为液晶显示屏,在嵌入式系统中,通常使用处理器内部LCD控制器连接LCD完成显示工作。嵌入式系统中流行LCD主要包括两种类型:S
6、TN(SuperTwistedNematic,超扭曲向列型)——被动型TFT(ThinFilmTransistor,薄膜晶体管型)——主动型STN和TFT的LCD显示屏需要的驱动电平不同。LCD驱动原理嵌入式处理器的LCD控制器的共同点:LCD控制器集成在处理器芯片之中CPU通过读写LCD控制器的寄存器进行配置使用系统内存作为显示内存显示内存一般由CPU写,有LCD控制器读。LCD驱动原理LCD的操作中,主要涉及到以下部件:LCD控制器(片内)LCDDMA(片内)CPU(片内)内存控制器(片内)总线控制器(片内)LCD显示屏(片外)内存(片外)DMA用于让LCD控制
7、器访问内存。LCD驱动原理使用DMA方式读取显示内存显示内存FrameBuffer驱动结构FrameBuffer的核心是一块供显示使用的内存,由系统中显示机构将显示内存中的内容显示到显示设备上。帧缓冲驱动本质上是一个字符设备(chardevice)的驱动,但是具有自己的框架。FrameBuffer驱动结构FrameBuffer接口常使用mmap和ioctl。FrameBuffer驱动结构在linux内核目录中include/linux/fb.h定义了FrameBuffer主要数据
此文档下载收益归作者所有