编写framebuffer驱动程序,内存映射出错
时间:2008-07-20
来源:互联网
先前写好的字符设备驱动程序(char设备),由于图形系统方案变动,需要修改为framubuffer驱动。现在想法是在内核空间开一块内存区,通过mmap来映射到用户空间以在用户空间写入数据。内核在这个内存区间中读出数据来显示到屏中。
在申请这个内存空间并映射到用户空间时总不成功。先后试过几个方法都失败了:
1. 直接用全局数组:
int iSize = PAGE_ALIGN(VIDEOSIZE + PAGE_SIZE);
static unsigned char pVideomem[iSize];
info->fix.smem_start = ((unsigned int)pvideomemory) + PAGE_SIZE;
info->fix.smem_size = VIDEOSIZE;
info->screen_base = ??
2.用vmalloc申请内存
static unsigned char pVideomem = NULL;
if (!(pVideomem = vmalloc(iVideoSize)))
return retval;
info->fix.smem_start = ((unsigned int)pvideomemory) + PAGE_SIZE;
info->fix.smem_size = VIDEOSIZE;
按以上方法申请的内存在用户程序用mmap映射时都失败。测试程序能得到LCD设备信息,但不能将数据写到framebuffer空间中,即程序出错。
按内核资料,info->screen_base应该设置为虚拟地址,而info->fix.smem_start则是物理地址。按上面的实现方法,并不需要具体的物理地址,因为数据只是完成空间映射,并不实际地写物理端口(实际写端口是从这个空间中取数据再进行写点操作)。则此时info->screen_base,info->fix.smem_start应该设置为什么值呢?
请各位高手支招,怎样地framebuffer中申请内存空间并设置info结构数据来实现framebuffer数据从用户空间映射到内核空间。谢谢。
在申请这个内存空间并映射到用户空间时总不成功。先后试过几个方法都失败了:
1. 直接用全局数组:
int iSize = PAGE_ALIGN(VIDEOSIZE + PAGE_SIZE);
static unsigned char pVideomem[iSize];
info->fix.smem_start = ((unsigned int)pvideomemory) + PAGE_SIZE;
info->fix.smem_size = VIDEOSIZE;
info->screen_base = ??
2.用vmalloc申请内存
static unsigned char pVideomem = NULL;
if (!(pVideomem = vmalloc(iVideoSize)))
return retval;
info->fix.smem_start = ((unsigned int)pvideomemory) + PAGE_SIZE;
info->fix.smem_size = VIDEOSIZE;
按以上方法申请的内存在用户程序用mmap映射时都失败。测试程序能得到LCD设备信息,但不能将数据写到framebuffer空间中,即程序出错。
按内核资料,info->screen_base应该设置为虚拟地址,而info->fix.smem_start则是物理地址。按上面的实现方法,并不需要具体的物理地址,因为数据只是完成空间映射,并不实际地写物理端口(实际写端口是从这个空间中取数据再进行写点操作)。则此时info->screen_base,info->fix.smem_start应该设置为什么值呢?
请各位高手支招,怎样地framebuffer中申请内存空间并设置info结构数据来实现framebuffer数据从用户空间映射到内核空间。谢谢。
作者: clm705 发布时间: 2008-07-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28