LCD驱动 数据结构 重要函数: 核心层提供的接口: 源码跟踪心得:
重要函数:
mmap:
1.运用层:
【1】void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);
功能:在进程的虚拟地址空间建立一个内存映射。
参数: addr :指定映射的起始地址,如果写NULL,系统自动分配
length:映射的长度
prot:指定映射区域的访问权限,不能和open的打开模式冲突
PROT_EXEC :可执行
PROT_READ :可读
PROT_WRITE :可写
PROT_NONE :不可访问
flags:指明了映射方式
MAP_SHARED :共享方式,多个进程映射同一区域,应用层映射空间的修改会互相影响, msync或munmap函数调用时回写到内核空间内存。
MAP_PRIVATE :私有方式,多个进程映射同一区域,内核中先拷贝同一区域再映射,应用层的修改不会互相影响,不能回到回写到内核中拷贝前的内存。
fd :文件描述符(普通文件或设备文件)
offset :偏移量,必须页对齐。映射的开始地址= 文件首地址+偏移量
返回值:void * : 成功返回映射的虚拟地址,失败返回(void *)-1 宏名为:MAP_FAILED,置错误码
【2】int munmap(void *addr, size_t length);
功能:取消映射
参数:addr :已经映射的虚拟地址
length :要取消映射的长度
返回值: int :成功返回0,失败返回-1,并置错错误码
- 驱动层:
核心层提供的接口:
fb_info的申请:
fb_info的释放:
注册帧缓冲设备:
注销帧缓冲设备:
源码跟踪心得:
注册及调用流程见思维导图。