WEB开发网
开发学院手机开发Android 开发 Android PMEM驱动研究 在应用程序中使用PMEM 阅读

Android PMEM驱动研究 在应用程序中使用PMEM

 2010-05-14 16:52:00 来源:WEB开发网   
核心提示:==Android PMEM主要有两个作用(来自android mail list):1. GPU or VPU buffers shared with CPU core2. Android service heap.其中1是不能cache的,2可以cache,Android PMEM驱动研究 在应用程序中使用PMEM

======================================================================================

Android PMEM主要有两个作用(来自android mail list):

1. GPU or VPU buffers shared with CPU core

2. Android service heap.

其中1是不能cache的,2可以cache,平台设备注册中 cached = X即控制是否可以被cache。

=======================================================================================

简单看PMEM驱动,主要有以下内容:

pmem_init()驱动加载

|

pmem_probe()platform加载

|

pmem_setup()

初始化 pmem[id]

启动时输出信息,格式为[名称][是否可以被cache] eg:pmem_adsp: 0 init

misc_register()

初始化所有的bitmap

通过ioremap获取所有pmem[id].vbase

pmem_map() 提供mmap接口

pmem_ioctl()

#define PMEM_GET_PHYS 获取物理地址

#define PMEM_MAP pmem_remap()

#define PMEM_GET_SIZE pmem_getsize()

#define PMEM_UNMAP pmem_remap(®ion, file, PMEM_UNMAP);

#define PMEM_ALLOCATE 分配pmem空间,len是参数,如果文件已被分配则失败

#define PMEM_CONNECT 将一个pmem file与其他相连接

#define PMEM_GET_TOTAL_SIZE 返回pmem region的全部尺寸

有篇文章值得参考http://linux.chinaunix.net/techdoc/net/2009/04/21/1108452.shtml

=======================================================================================

应用程序中使用PMEM,有待深入研究

#include "android_pmem.h"

int pmem_fd;

void *pmem_base;

unsigned int size;

struct pmem_region region;

pmem_fd = open("/dev/pmem_adsp", O_RDWR, 0);//打开设备,为了操作硬件引擎,要noncache的

if (pmem_fd >= 0)

{

if (ioctl(pmem_fd, PMEM_GET_TOTAL_SIZE, ®ion) < 0) //获取全部空间

{

printf("PMEM_GET_TOTAL_SIZE failed ");

1 2  下一页

Tags:Android PMEM 驱动

编辑录入:coldstar [复制链接] [打 印]
赞助商链接