10. LCD驱动程序 ——框架分析】的更多相关文章

引言: 由LCD的硬件原理及操作(可参看韦哥博客:第017课 LCD原理详解及裸机程序分析) 我们知道只要LCD控制器的相关寄存器正确配置好,就可以在LCD面板上显示framebuffer中的内容. 若应用程序需要在LCD屏幕上显示文字或图像时,只需要把相应的显示内容以正确的格式写到Framebuffer中即可. (Framebuffer,中文名字是帧缓冲,这个帧也就是一副图像所需要的数据.因此,帧缓冲其实就是LCD设备的驱动程序) 一.LCD驱动程序框架 根据上述思路,Linux LCD 驱动…
一直想花时间来整理一下Linux内核LCD驱动,却一直都忙着做其他事情去了,这些天特意抽出时间来整理之前落下的笔记,故事就这样开始了.LCD驱动也是字符设备驱动的一种,框架上相对于字符设备驱动稍微复杂一点点,真的就是一点点,难点在对LCD硬件的配置上. 开发平台:TQ210,S5PV210处理器 内核版本:linux-3.10.46 LCD型号:AT070TN92,7英寸,TFT屏,分辨率800x480x3(RGB),24位真彩色 一.框架分析 上图说明:①内核装载LCD驱动模块:设置并注册fb…
linux-3.4.2\drivers\video\S3C2410fb.c(内核自带驱动程序) fbmem.c是LCD驱动程序顶层框架文件,是一个通用的文件,在初始化init函数中会注册一个字符设备,并创建一个类,在注册字符设备的时候提供的file_operations是一个中间件,根据次设备号在registered_fb数组中找到真正的file_operation,registered_fb通过register_framebuffer来注册,并创建类下设备fb*,比如:S3C2410fb.c中…
1.framebuffer接口层(fbmem.c) 功能:给用户提供接口 fbmem_init  ),"fb",&fb_fops)  /*2.创建一个设备类*/ fb_class = class_create(THIS_MODULE, "graphics");static const struct file_operations fb_fops = { .owner = THIS_MODULE, .read =  fb_read, .write = fb_w…
根据分析的框架,自己写一个LCD驱动程序 1分析LCD硬件原理图 Von和Voff接的是一个电源电路,通过LCD_POWER接的是GPG4来控制LCD电源,高电平表示开启LCD电源 VM接的是CPU的VM:VDEN /GPC4为数据使能信号, VLINE接的CPU:HSYNC/GPC2,HSYNC信号有效时,表示一行数据的开始: VFRAME接的CPU:VSYNC/GPC3,VSYNC信号有效时,表示一帧数据的开始 VCLK接的CPU:VCLK/GPC1 表示像素时钟信号,每个VCLK信号表示正…
LCD驱动程序分析 LCD驱动程序代码在/drivers/video/s3c2410fb.c文件中,在该驱动的s3c2410fb_init中注册了平台驱动,该驱动的初始化代码在s3c24xxfc_probe函数中. 1.分配fb_info结构,使用framebuffer_alloc 2.获取LCD控制器的物理地址,并将其转化为虚拟地址 3.初始化fb_info结构 3.1.设置fb_ops 4.分配帧缓冲内存,LCD控制器通过DMA来访问帧缓冲,使用dam_alloc_writecombine…
一.LCD驱动程序架构 1.裸机驱动代码分析 ①LCD初始化:控制器初始化,端口初始化,指明帧缓冲 ②LCD图形显示:将图形数据写入帧缓冲 void lcd_init() { lcd_port_init();     //初始化gpdcon和gpccon初始化 lcd_control_init();   //时序初始化和帧缓冲初始化 //打开LCD电源 GPGCON |= 0b11<<8; LCDCON5 |= (1<<3); LCDCON1 |= 1; } 2.帧缓冲体验 帧缓冲…
目录 lcd驱动框架 框图 程序分析 入口 打开open 读read 初始化registered_fb 注册 小结 程序设计 测试 方式一操作fb0 方式二操作tty 方式三操作终端 完整程序 title: lcd驱动框架 tags: linux date: 2018/12/3 15:43:23 toc: true --- lcd驱动框架 参考文档 cnblog 鱼树笔记 韦老师2期视频 框图 LCD设备驱动程序应该编写成frambuffer接口, frambuffer设备层是对图像设备的一种抽…
tty驱动程序框架 一.TTY概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. 1.1串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备.Linux把每个串行端口都看作是一个字符设备.这些串行端口所对应的设备名称是 /dev/ttySAC0;/dev/ttySAC1… 1.2虚拟终端(/dev/tty*) 当用户登录时,使用的是虚拟终端.使用Ctcl+Alt+[F1—F6]组合键时,我们就可以切换到tty1.tty…
转自:http://blog.chinaunix.net/uid-23046336-id-3243543.html   看了http://blog.chinaunix.net/uid-11848011-id-96188.html的驱动框架分析,感觉受益匪浅.对于一些内容,我自己查漏补缺. 首先我们按照顺序,看内核模块的注册以及释放函数如下: 点击(此处)折叠或打开 static int __init usb_skel_init(void) { int result; /* register th…
学习目标:根据vivi驱动架构和linux-2.6.31/linux-2.6.31.14/drivers/media/video/uvc/Uvc_driver.c驱动源码,分析usb摄像头驱动程序框架: 一.摄像头拓扑结构 由数据手册USB_Video_Example 1.5和UVC 1.5 Class specification分析摄像头的拓扑结构,如下图所示: usb摄像头功能由摄像头接口完成,每个摄像头功能包括一个 VideoControl interface (VC)和几个VideoSt…
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤:  一.V4L2架构 1. 字符类驱动 V4L2(V4L2:vidio for linux version 2)摄像头驱动属于字符类驱动, 对于一般的字符类驱动程序,其编写步骤一般分为: 1)构造一个file_operations: 编写open=drv_open .read=drv_read2)注册设备,告诉内…
学习目标:编写LCD驱动程序,熟悉根据芯片手册分析时序图,配置寄存器,并测试LCD程序. 一.LCD驱动程序编写 步骤: 1)分配fb_info结构体 2)设置fb_info结构体 a. 固定参数 b. 可变参数 c. 操作函数 --设置调色板 d. fb_info的其它成员 --设置显存 3)硬件相关的操作 --配置GPIO用于用于LCD --根据手册设置LCD控制器寄存器 --分配显存,并把地址告诉LCD控制器 4)  注册fb_info结构体 二.源码: #include <linux/m…
前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi介绍 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构.支持多slave模式应用,一般仅支持单Master.时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first).SPI接口有2根单向数据线,为…
1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源(cpu.memory.I/O等).CGroup也是LXC为实现虚拟化所使用的资源管理手段.CGroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的.这些具体的资源管理功能称为CGroup子系统. CGroup子系统包含如下:…
tty驱动程序框架 一.TTY概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. 1.1串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备.Linux把每个串行端口都看作是一个字符设备.这些串行端口所对应的设备名称是 /dev/ttySAC0;/dev/ttySAC1… 1.2虚拟终端(/dev/tty*) 当用户登录时,使用的是虚拟终端.使用Ctcl+Alt+[F1—F6]组合键时,我们就可以切换到tty1.tty…
作者:唐老师,华清远见嵌入式学院讲师. 1. Sensor的概念 Sensor即传感器,在当前智能手机上大量存在:G-Sensor.LightsSensor. ProximitySensor.TemperatureSensor等,其作为Android系统的一个输入设备,对于重视用户体验的移动设备来说是必 不可少的.Sensor虽然是一个输入设备,但是它又不同于触摸屏,键盘,按键等这些常规的输入设备,因为Sensor的数据输入从传感器硬件到设备的, 而常规的输入设备是从用户到设备的,比如:温度传感…
作者:唐老师,华清远见嵌入式学院讲师. 1. HAL Stub框架分析 HAL stub的框架比较简单,三个结构体.两个常量.一个函数,简称321架构,它的定义在:@hardware/libhardware/include/hardware/hardware.h @hardware/libhardware/hardware.c [cpp] view plaincopyprint? 1. /*                 2. 每一个硬件都通过hw_module_t来描述,我们称之为一个硬件对…
IPC框架分析 Binder,Service,Service manager 我首先从宏观的角度观察Binder,Service,Service Manager,并阐述各自的概念.从Linux的概念空间中,Android的设计Activity托管在不同的的进程,Service也都是托管在不同的进程,不同进程间的Activity,Service之间要交换数据属于IPC.Binder就是为了Activity通讯而设计的一个轻量级的IPC框架. 在代码分析中,我发现Android中只是把Binder理…
Yii PHP 框架分析 (一)作者:wdy http://hi.baidu.com/delphiss/blog/item/f7da86d787adb72506088b4b.html 基于yii1.0.8的代码分析的.用了一个下午整理的,流水账,感兴趣的凑合着先看,国庆期间推出个整理修改版,然后再完成后两个部分(MVC和Yii的整体结构分析). 1. 启动 网站的唯一入口程序 index.php : $yii=dirname(__FILE__).'/../framework/yii.php';…
Android系统--Binder系统具体框架分析(二)Binder驱动情景分析 1. Binder驱动情景分析 1.1 进程间通信三要素 源 目的:handle表示"服务",即向实现该"服务"的进程发送数据:handle是"服务"的引用 int binder_call(struct binder_state *bs, struct binder_io *msg, struct binder_io *reply, uint32_t target,…
转自LCD显示异常分析--开机闪现花屏 最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现. 其实这类问题的原理分析并不难,只是在给别人解释的时候不太好描述,因此,我特地写了这篇文章,好让大家能够更容易.更直观的理解这类花屏问题的原因,也希望能够帮助那些遇到同样问题的朋友. 环境 软件:Android 硬件:带GRAM的LCD(如SPI屏,DSI CMD屏) 现象 分析 从上面的动态图可以看出,出现瞬…
一.SSH框架简介 SSH是struts+spring+hibernate集成的web应用程序开源框架. Struts:用来控制的,核心控制器是Controller. Spring:对Struts和Hibernate进行管理,整合的. Hiernate:操控数据库 struts标签库:Struts2默认的表达式语言是OGNL(Object-Graph Navigation Language),通过它可以存取对象的任意属性.调用对象的方法.遍历整个对象的结构图.实现字段类型转换等功能. JSP:…
 出自:http://blog.csdn.net/u013467442/article/details/46940501 simple-framework(Mali SDK框架分析) 1.所有的定义及实现放在同一个命名空间中,文件包含#include一般在命名空间的外面.总的命名空间为namespace MaliSDK{}:使用时usingnamespaceMaliSDK包含所有命名空间中的内容. 2.头文件中定义类型,并用#ifndef,#define, #endif来防止多次包含的问题,在对…
转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了.好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发.但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货.当然,还会顺带提一下其他的驱动程序写法.        事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用…
学习目标:熟悉TFT LCD的概念,分层驱动工作原理和程序编写. 一.LCD 概念 1.  显示器数据组织格式 1)一幅图像成为一帧,每帧由多行组成,每行由多个像素组成.每个像素的颜色由若干位表示,对于256色LCD,每个像素由8位表示,称为8BPP. 2)显示器呈Z字行的路线进行扫描显示,使用HSYNC.VSYNC控制扫描和跳转的路径: 2.操作过程 1)设置LCD的HSYNC.VSYNC\VCLK等信号的参数,并将帧内存的地址告诉LCD控制器,塔克自动的发起DMA传输,从帧内存中得到图像数据…
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和spi device都是通过platform_add_device和spi_register_board_info注册到内核的驱动模式中的.而最新的方式是通过设备树来实现的.以arm为例,设备树文件一般存放在arch/arm/boot/dts下,不同的平台对应不同的文件,以xilinx zynq平台为…
Binder系统具体框架分析(一) 一.Binder系统核心框架 1. IPC:Inter-Process Communication, 进程间通信 A进程将数据原原本本发送B进程,主要负责进程间数据传输 源地址 目的地址 进程B向ServiceManager注册服务 进程A向ServiceManager查询服务,得到一个handle,handle指向B进程,即目的地址 数据包 2. RPC:Remote Procedure Call, 远程过程调用,主要用于调用服务中函数 A进程想操作硬件(L…
LCD显示原理: 在JZ2440上,想要让LCD显示,需要几个部分1.LCD硬件 2.开发板上的LCD控制器 3.SDRAM内存存放数据FramBuffer 4.可能还需要一个调色板(实际上是一块内存,里面数据可以组成各种颜色) 显示原理:在开发板上操作LCD控制器,使得开发板向SDRAM内存里去除数据发送通过LCD数据引脚发送到LCD屏上. 具体硬件操作步骤: 1.LCD引脚的连接,根据LCD原理图配置引脚 2.根据LCD控制器手册设置LCD控制器 3.分配显存,并把地址告诉LCD控制器 需要…
simple-framework(Mali SDK框架分析) 1.全部的定义及实现放在同一个命名空间中.文件包括#include一般在命名空间的外面. 总的命名空间为namespace MaliSDK{}:使用时using namespaceMaliSDK包括全部命名空间中的内容. 2.头文件里定义类型.并用#ifndef,#define, #endif来防止多次包括的问题.在相应的.cpp文件里实现.定义与实现相分离. 各文件功能: 1. VectorTypes.h:在该文件里定义了向量类型.…