利用mmap显示bmp图片,相关说明在代码注释中~
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#define FB_PATH "/dev/fb0"
#define BMP_NAME "demo.bmp"
int lcd_fd;
unsigned int *mem_p; //定义无符号类型指针,用于存放映射地址
//初始化LCD
void LCD_Init(void)
{
//打开屏幕
lcd_fd = open(FB_PATH,O_RDWR);
if(lcd_fd == -1)
{
printf("open lcd failure!\n");
return ;
}
/*
mmap将一个文件或者其它对象映射进内存。
函数原型:void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);
参数:
start:映射区的开始地址,设置为0时表示由系统决定映射区的起始地址。
length:映射区的长度。//长度单位是 以字节为单位,不足一内存页按一内存页处理
prot:期望的内存保护标志,不能与文件的打开模式冲突。是以下的某个值,可以通过or运算合理地组合在一起
PROT_EXEC //页内容可以被执行
P