,
1 ) .概念
图像格式BMP
图像显示原理
2 )目标
代码方式:
打开设备文件/dev/fb0
将像素点写入fb0
关闭设备文件,查看现象
像素代码以十六进制表示
像素由红绿蓝三种元素组成
0x00ff0000 :红色
0x0000ff00 :绿色
0x000000ff; 蓝色
0x 00先进先出; 白色
0x00000000; 黑色
全屏显示应该写多少像素的点?
分辨率(像素点)控制液晶屏上的最大显示像素点数) 6818开发板800*480像素点
大小: 1个像素的点为4字节(共8位)
个数:全屏显示需要800*480像素的点
3 )代码
/*头文件*/# define LCD _ dev _ path '/dev/fb0 ' # defineopen _ LCD _ flago _ wronlyintmain () int LCD _ FD=opope int n; for(n=0; n800*400; n () { rgb[n]=0x00ff00; }write(LCD_FD,rgb,800*400*4); 返回0; } 3)实现显示任意大小任意位置的矩形颜色的速度
排列内像素的位置、-write-fb内的像素的位置--lcd显示像素的位置
可以简单地求出像素点在LCD上任意位置的通式; 800*y x
4 ) mmap内存映射
原理:向系统申请内存空间,将文件映射到此空间
1 ) write函数是系统IO,没有缓存的操作(没有缓冲区,数据多时很难使用)。
2 ) MMP
内存映射概念:
内存:可执行内存DRAM显存(集成显示器)。
映射:
两个集合之间的要素具有一对一的对应关系。 (像素点)
收藏A:fb0
收藏b :醒目的记忆
mmap的使用方法
头文件:
#include sys/mman.h
函数原型:
申请空间解映射:
void*mmap(void*addr,size_t length,int prot,int flags,int fd,off_t offset );
返回值:
映射成功:返回指向映射空间第一个地址的指针变量
映射失败。 返回MAP_FAILED即(void * )-1
形参一:
addr :让用户设置映射空间的起始地址。 通常设置为NULL,映射空间的起始地址由系统决定。
形参二:
length:配置申请映射空间的大小800*480*4
形参三:
prot :映射空间的权限
PROT_EXEC Pages may be executed.(运行)
PROT_READ Pages may be read.(可读取数据)
PROT_WRITE Pages may be written.(可写入数据)
PROT_NONE Pages may not be accessed.(无权限)
形参四:常规设置: MAP_SHARED,打开文件时,必须以可写方式打开!
flags :地图空间的属性
MAP_SHARED :用映射指针分配数据时,数据将复制到源文件(fb0 ) ),映射文件),源文件为其他进程(同一进程中的进程父进程子进程)
图_隐私:上的反义
(形参五)软盘
文件描述符:在映射之前,必须打开要映射的文件。
形参六:
offset:通常设置为0,并从文件头映射。
释放地图区域:
intmunmap(void*addr,size_t length );
3 )显示bmp24位图像)图像文件中存储的都是像素点)。
步骤
步骤1 :创建图像(注意格式和大小) ) )。
第二步:先把照片下载到开发板上
第三步:
代码步骤:
第一步:
打开open图像
open fb0
映射fb0
第二步:
读取(一口气读取)图像中的像素点
映射到fb0
第三步:
关闭两个文件
释放映射空间