首页天道酬勤,

,

张世龙 05-13 03:05 35次浏览

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

第三步:

关闭两个文件

释放映射空间

, ,