作者PCIT (冈山的火车  N I
看板LinuxDev
标题Re: [问题] Kernel3_10 mmap
时间Tue Dec 23 19:34:37 2014
※ 引述《willy01 (网洋中的一条狗)》之铭言:
: 大家好~
: 想要请问一下 最近在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做了一些限制 导致不能映射了
: 不知有无有经验的高手
: 可以提供一个大概方向 让我可以继续解掉这问题?
: 非常感谢大家看完
STRICT_DEVMEM=n
如果是X86的话,要在加
X86_PAT=n
--
Sent from my Android
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 68.98.37.225
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1419334479.A.E10.html