framebuffer 知识点
设备文件是在/dev/目录下
设备文件有主设备号,次设备号.
当操作设备文件, 系统会根据设备文件的设备号找到相应的设备驱动(驱动在内核注册时已指定使用的设备号),并调用相应的功能.
open ---> sys ----> driver ---> drv_open
read ---> sys ----> driver ---> drv_read
ioctl --> sys ----> driver ---> drv_ioctl
//////////////////////////////////////
一幅图由很多行数据, 每行由很多个像素点组成.
800x600: 表示600行, 每行800个像素点
1024x768
1024x768x16: 表示共有768行, 每行1024个像素点, 每个像素点的数据占用16位
rgb565
1024x768x24: 表示共有768行, 每行1024个像素点, 每个像素点的数据占用24位
rgb888
1024x768x32: 表示共有768行, 每行1024个像素点, 每个像素点的数据占用32位
argb8888 a:透明度
每个像素点表示一个顔色, 一个顔色由三基色(Red, Green, Blue)组成. 也就是说一个像素点的数据位里包含有R多少, G/B各是多少的信息. R,G, B各占用不同的几位来表示
256色:表示共有256种顔色, 每个像素点数据占用一个字节(8位).
首先把图里使用频率最高的256种顔色做成一个顔色表(每种顔色还是RGB888), 每个像素点的数据不是记录RGB的数据, 而是记录对应顔色表里的索引号
每个像素点占16bit(16位色):
RGB1555: RGB各占用5bit, 1bit可用于表示透明
RGB565: R占用高5位(11-15, G占用6位(5--10), B占用5位(0-4)
每个像素点占24bit(24位色):
RGB888: RGB各用8位
每个像素点占32bit(32位色):
RGB8888: RGB各占用8位, 最高8位用于透明度的表示
////////////////////////////////////////////////////
linux系统下, 没有LCD驱动. 对应的驱动应叫framebuffer驱动(显存).
驱动好后, 对应设备文件应是/dev/fb*
显存: 就是在内存里分出一个区域,专用于画出要显示的图像(如窗口系统等). 而LCD的显示是由DMA控制器自动从这个区域里把RGB数据搬到LCD控制器里显示的
DMA控制器:就是数据的搬运工, 只要设好从哪里搬,搬到哪里去. 就可以自动循环工作.
我们要显示一个图片或一个窗口,只需要改变显存里的数据就可以了
//////////////
ioctl函数用于从驱动里获取相应的配置信息; 或者把配置信息传递给驱动,让驱动根据相应的配置信息来设置硬件
int ioctl(int fd, int request, ...); //返回值为0表示执行成功,-1表示执行失败
fd表示打开设备文件获取到的文件描述符
request表示告诉驱动需要做什么操作. 具体的值是由驱动与应用程序约定好的
...不定参数.
man 2 ioctl_list //查看系统里常用的ioctl命令
///////////////////////////
bmp文件里面除了256色的文件外, 里面每个像素存放的都是RGB数据和一个文件头.
24bit的bmp文件大小: 文件头54字节+分辨率*3字节每个像素
注意:bmp文件里存放的图片数据是反着的, 要正确显示,需要把图中的第0行放到显存里的最后一行, 图里的第一行放到显存里的倒数第一行, 图里的第二行放到屏的倒数第二行....
framebuffer 知识点的更多相关文章
- 全网络最正确的让 Linux 开机进入字符界面的方法及设置 FrameBuffer 分辨率的方法
引言 这个标题有点长,是为了在标题中就把问题说清楚,以便搜索引擎能够把有需要的朋友准确地带到我这里来.目前在网络上,很多关于 Linux 方面的知识是过时的和错误的.我标题中指出的两个知识点就是其中的 ...
- iOS开发——动画OC篇&知识点总结
图层与动画知识点总结 1.Core Animation 非娱乐类的软件都会用到的动画,操作简单. 2.Quartz 2D绘图 是一个2D绘图引擎. (1) 绘图Context是一个绘图的目标对象,定义 ...
- 2016/1/9:深度剖析安卓Framebuffer设备驱动
忙了几天,今天在公司居然没什么活干 ,所以早上就用公司的电脑写写之前在公司编写framebuffer的使用心得体会总结,这也算是一点开发经验,不过我还没写全,精华部分还是自己藏着吧.直到下午才开始有点 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- UWP开发必备以及常用知识点总结
一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...
- C#高级知识点&(ABP框架理论学习高级篇)——白金版
前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...
- lucene 基础知识点
部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...
- DoraCMS 源码知识点备注
项目需要研究了下DoraCMS这款开源CMS,真心做的不错:).用的框架是常用的express 4 + mongoose,代码也很规范,值得学习. 源码中一些涉及到的小知识点备注下: https:// ...
随机推荐
- HTML拖放
<html><head><style>.droptarget { float: left; width: 100px; height: 35p ...
- [题解] Luogu P4721 【模板】分治 FFT
分治FFT的板子为什么要求逆呢 传送门 这个想法有点\(cdq\)啊,就是考虑分治,在算一段区间的时候,我们把他分成两个一样的区间,然后先做左区间的,算完过后把左区间和\(g\)卷积一下,这样就可以算 ...
- 路飞学城—Python爬虫实战密训班 第三章
路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...
- 一天一个设计模式——Bridge桥接模式
一.概念准备 在理解桥接模式之前,先要理解面向对象程序设计中的两个概念: 类的功能层次结构:假设现在有一个类Something,这个类有一些成员属性和成员方法,但是现有的功能不能满足要求,因此我们想扩 ...
- React16 新特性
一.使用Error Boundary处理错误组件 React16之前:组件在运行期出错,会阻塞整个应用的渲染. React16之后:引入新的错误处理机制——Error Bounda ...
- POJ - 1631 Bridging signals(最长上升子序列---LIS)
题意:左右各n个端口,已知n组线路,要求切除最少的线路,使剩下的线路各不相交,按照左端口递增的顺序输入. 分析: 1.设左端口为l,右端口为r,因为左端口递增输入,l[i] < l[j](i & ...
- Java算法练习——无重复字符的最长子串
题目链接 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &qu ...
- eclipse中tomcat添加或移除web项目出错,显示无资源能被添加或移除
错误截图 之前一直都能正常使用,今天莫名其妙出现这个错误 解决办法 https://blog.csdn.net/u012956987/article/details/79134474 右击项目,在属性 ...
- 程序员必备:详解XSS和CSRF
做开发的小伙伴想必都不陌生XSS 和 CSRF,但也有一些刚接触的朋友还不是很清楚,今天就给大家详解下XSS和CSRF! 一.XSS xss,即 Cross Site Script,中翻译是跨站脚本攻 ...
- 2020.2.21一些python总结
#字符串前面加r可以防止字符串转义 \也可以防止字符串转义#三引号可以实现输入多行文本#range(start,end,step)#列表 append添加一个元素到末尾 extend 添加一个素组到末 ...