再次研究Jollen的mokoid工程,在模拟器上运行篇!

本文详细介绍了如何在Android模拟器上实现Jollen的mokoid工程,包括内核驱动的编写、源码环境搭建、系统镜像打包等步骤,并解决了在应用中访问内核驱动的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次研究的原因是:

1.期望了解Android的权限和应用安全机制。

2.原先研究Jollen的mokoid工程是在6410的开发板上测试的,源码也是给厂家修改过的。

3.所以期望能够在一个正常的环境下面去实现一个新的设备支持。

4.最终考虑在模拟器上运行Jollen的mokoid工程。

 

Jollen的mokoid工程必须在源码环境下编译,生成了APK放在system/app下,生成的JAR放在了/framework目录下,生成的so在/system/lib/hw下。

本次测试还需要真正的编写一个驱动程序,放在内核里面编译,生成ko或者直接编译到内核。

 

需要做如下的准备工作:

0.自己编写一个什么都不做的内核驱动。随便在网上找了一个源码改了该,实现几个leds_ioctl/leds_init/leds_exit接口。记住在代码里面建立/dev/leds的节点。

1.下载andorid的内核源码,进行编译。请参见: Android 内核源代码交叉编译

2.下载android的源码,进行编译。请参见UBUNTU 10.10 编译Android 2.3.1源码以及SDK

3.为了调试应用方便,需要对编译结果system.img重新打包。节约编译时间。

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

引用一片博文:http://my.oschina.net/zengsai/blog/9798


http://my.oschina.net/zengsai/blog/9798
手工打包 system.img
单个模块编译后,直接打包/system目录下的内容到system.img,这样可以加快编译速度。

./mkyaffs2image <要打包的目录> <生成的文件>

 out/host/linux-x86/bin下有一些有用的host工具,可以添加它到环境变量:export PATH=$PATH:~/Project/android/out/host/linux-x86/bin
其中就有我们打包要用到的mkyaffs2img
mkyaffs2img可以用来手工打包emulator用到的img镜像。比如我们需要额外在system中添加一些组件的时候,直接将组件拷贝到system目录中,再执行

mkyaffs2img system system.img
就会生成带你需要组件的system.img文件。
================================================================================ 

4.少量的修改一下Jollen的mokoid工程的Android.mk,编译整个Android源码。生成了system/userdata/ramdisk.img,运行模拟器,用logcat dmesg观察打印输出。

调试的时候只用编译mokoid工程,重新打包system.img.

 

程序放入到ROM中,LedClient,LedTest是运行不对的,在logcat中提示 不能打开/dev/leds的节点。

修改/dev/leds节点的所属者 chown system system /dev/leds 。 运行LedTest就正常了,可以在dmesg中看到相应的打印输出。因LedTest进程所属者就是system。

 

但是LedClient肯定还是不行的,除非把节点的权限修改成 chmod 777 /dev/leds

 

今天就这么多,待续.............

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值