Re: [问题] Kernel3_10 mmap

楼主: unknown (ya)   2014-12-23 19:34:37
※ 引述《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

Links booklink

Contact Us: admin [ a t ] ucptt.com