示例:将开发板颜色变为红色
#include<stdio.h>
#include<unistd.h>
#include<sys/mman.h>
#include<string.h>
#include<fcntl.h>
#include<linux/fb.h>int main()
{// 以读写权限打开液晶屏文件int lcd = open("/dev/fb0", O_RDWR);// 给LCD设备映射一块内存(或称显存)char *p = mmap(NULL, 800*480*4, PROT_WRITE,MAP_SHARED, lcd, 0);// 通过映射内存,将LCD屏幕的每一个像素点涂成红色int red = 0x00FF0000;for(int i=0; i<800*480; i++)memcpy(p+i*4, &red, 4);// 解除映射munmap(p, 800*480*4);close(lcd);return 0;
}
这里对LCD屏幕进行操作时,我们通常会将mmap函数的第四个参数设置为 MAP_SHARED
标志表示对映射区域的任何修改都将被同步到原始文件中,并且这些修改也会被其他映射了同一文件的进程所看到。
memcpy函数介绍
自动获取LCD硬件参数
在上面示例代码中我们其实作出了一个假设:知道LCD的屏幕尺寸大小,所以便直接将对应参数传递给了mmap函数,现实中我们很可能不知道具体尺寸,这就需要我们自己获取LCD相关参数。