作者willy01 (网洋中的一条狗)
看板LinuxDev
标题[问题] Kernel3_10 mmap
时间Mon Dec 15 20:56:41 2014
大家好~
想要请问一下 最近在build android5.0 搭配 新的3.10 kernel内核
之前在旧个Android4.3 前辈有写份tool
主要是用mmap把底层的physical address映射到user space
让AP程式可以存取到hardware 存到记忆体的值 (类似driver)
主要code大概为
fd = open("/dev/mem",O_RDWR | O_SYNC);
map_address = mmap( (caddr_t)0 , size,
PROT_READ|PROT_WRITE,MAP_SHARED,fd,(off_t)phy_base_address );
其中
size=40* getpagesize(); //getpagesize=4096 byte
phy_base_address= 0xd80a0000 ; // GPU mmio base
在之前的版本可以正常work 但换到 ndroid5.0 搭配 新的3.10 kernel内核
则会回传errno 22 (invalid argument)
但确认过两个size和phy_base_address的都是为 pagesize的整数倍
一开始以为是SELINUX的权限 使AP不能用MMAP存取记忆体
但关掉SELINUX後 好像还是无法存取
网路上有看到一个说法是说
新的内核对 /dev/mem做了一些限制 导致不能映射了
不知有无有经验的高手
可以提供一个大概方向 让我可以继续解掉这问题?
非常感谢大家看完
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.136.25.10
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1418648205.A.F92.html