input输入子系统
摘要:一、什么是input输入子系统? 1、Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型、不同原理、不同的输入信息的 输入设备的呢?其实就是通过input输入子系统这套软件体系来完成的。从整体上来说,input输
阅读全文
内核链表操作函数/宏
摘要:之前说过Linux内核中建立了一套内核链表体系,包括在内核中链表的定义和使用方法。由于内核中定义的对链表的操作方法太多了,限于时间和能力的问题,我将记录在学习过程 中所用到的操作方法。 内核中源文件位置:include\linux\list.h 1、list_entry宏 (1)原型: #defin
阅读全文
Linux内核启动logo
摘要:之前在分析samsung的fb驱动代码的时候,其中有一段代码是处理内核logo显示相关的,今天就内核logo这个话题来聊一聊! 一、处理内核logo显示相关的代码在哪? 回到samsung的fb驱动代码中,因为fb的驱动代码是基于platform平台总线编写的,所以我们需要找到platform_dr
阅读全文
proc文件系统在内核中的表现
摘要:当Linux内核启动起来之后,我们可以通过proc虚拟文件系统来查看内的中的一些动态信息。 例如:可以 cat /proc/misc 来查看系统中装载的所有misc类设备 cat /proc/devices 来查看系统中装载的字符设备和块设备 但是需要注意的是:proc文件系统现在用到比较少了,主要
阅读全文
framebuffer应用编程实践
摘要:framebuffer的使用主要包括4个部分: (1):首先需要打开设备文件 /dev/fb0。 (2):获取设备的信息。包括可变信息和不可变信息,分别使用两个结构体来进行封装,这两个结构体在 <linux/fb.h> 头文件中定义,所以需要先包含这个头文件。 (3):如果有需要可以对可变的参数进行
阅读全文
关于在应用层为何不能设置分辨率的问题
摘要:问题的描述:之前在测试fb的驱动程序的时候,试图在应用层通过ioctl函数设置LCD的分辨率,但是并没有设置成功,原因何在? 定位问题:肯定是驱动中的事情 进一步定位问题:因为我们是通过ioctl函数来进行设置的,而应用层的ioctl函数最终会调用到驱动中的ioctl函数,所以问题出在驱动中的ioc
阅读全文
三星framebuffer驱动代码分析
摘要:一、驱动总体概述 本次的驱动代码是Samsung公司为s5pv210这款SoC编写的framebuffer驱动,对应于s5pv210中的内部外设Display Controller (FIMD)模块。 驱动代码是基于platform平台总线编写的。 1、驱动代码的源文件分布: (1):drivers
阅读全文
Linux驱动框架之framebuffer驱动框架
摘要:1、什么是framebuffer? (1)framebuffer帧缓冲(一屏幕数据)(简称fb)是linux内核中虚拟出的一个设备,framebuffer向应用层提供一个统一标准接口的显示设备。帧缓冲(framebuffer) 是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层
阅读全文
S5PV210的LCD控制器详解
摘要:1、FIMD结构框图 (1)Samsung的s5pv210的LCD控制器叫做FIMD(也叫显示控制器)。Display controller(显示控制器)包括用于将图像数据从相机接口控制器的本 地总线或位于系统存储器(例如:显存)中的视频缓冲器传送到外部LCD驱动器接口的逻辑。 LCD驱动接口支持三
阅读全文
LCD如何显示图像
摘要:1、LCD显示主要相关概念 (1)像素(pixel) 整个图像是由一个个的像素组成的,像素就是一个显示点。像素就是组成图像的最基本元素,或者说显示中可以被控制的最小单位,整个图像就是由很多个像素组成的。 像素可以被单独控制,或控制其亮或不亮(单色屏)、或控制其亮度强弱(譬如亮50%,35%,这样叫灰
阅读全文
LCD相关基础知识
摘要:1、什么是LCD? (1)LCD(Liquid Crystal Display)俗称液晶。液晶是一种材料,液晶这种材料具有一种特点:可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性, 因此我们可以在整个液晶面板后面用白光照(称为背光),可以通过不同电信号让液晶分子进行选择性的透光,此时在液晶
阅读全文
内核中防止竞争状态的手段
摘要:1、什么是竞争状态,之前在应用编程的学习中已经提到过。 竞争状态就是在多进程环境下,多个进程同时抢占系统资源(内存、CPU、文件IO),竞争状态对OS来说是很危险的,此时OS如果没处理好就会造成意想不到的结果。 写程序当然不希望程序运行的结果不确定,所以我们写程序时要尽量消灭竞争状态。操作系统给我们
阅读全文
内核链表与普通链表
摘要:1、在Linux内核中经常能够看到 struct list_head 这样的一个结构体,这个就是内核中的一个链表,内核链表 struct list_head { struct list_head *next, *prev;}; 这个结构体中只有两个指向链表结构体的指针,分为前向指针和后向指针,因为可
阅读全文
Linux驱动框架之misc类设备驱动框架
摘要:1、何为misc设备 (1)misc中文名就是杂项设备\杂散设备,因为现在的硬件设备多种多样,有好些设备不好对他们进行一个单独的分类,所以就将这些设备全部归属于 杂散设备,也就是misc设备,例如像adc、buzzer等这些设备一般都归属于misc中。 (2)需要注意的是,虽然这些设备归属于杂散设备
阅读全文
Linux设备驱动模型底层架构及组织方式
摘要:1、什么是设备驱动模型? 设备驱动模型,说实话这个概念真的不好解释,他是一个比较抽象的概念,我在网上也是没有找到关于设备驱动模型的一个定义,那么今天就我所学、所了解 到的,我对设备驱动模型的一个理解:设备驱动模型其实是Linux内核为了管理硬件上的设备和对应的驱动制定的一套软件体系。那么其实设备驱动
阅读全文
platform总线驱动代码分析
摘要:/************************************************************************/ Linux内核版本:2.6.35.7 运行平台:三星s5pv210 /****************************************
阅读全文
Linux设备驱动模型之platform(平台)总线详解
摘要:/********************************************************/ 内核版本:2.6.35.7 运行平台:三星s5pv210 /********************************************************/ 1、什
阅读全文
C++标准模板库(STL)和容器
摘要:1、什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板,我们可以调用这些模板来定义一个具体的类;与之前的自己手动创建一个函数模版或者是类模板不一样,我们使
阅读全文