设为首页 加入收藏

TOP

Android HAL实践:Mini6410开发板上的mokoid
2014-11-24 13:33:56 来源: 作者: 【 】 浏览:2
Tags:Android HAL 实践 Mini6410 开发 mokoid

1)首先mokoid下载后解压到友善的Android-2.0目录下面。可以在以下地址下载我使用的mokoid:


具体下载目录在 /2012年资料/3月/10日/Android HAL实践:Mini6410开发板上的mokoid/


Android的编译一般都是通过搜索Android.mk来进行的,如果单独编译一部分代码,比如我们这里的mokoid。可以采取两种方式,第一种当然是直接运行Android的编译命令,比如友善文档里面的build-android命令编译整个项目,这种编译要搜索整个目录树,当然是很慢的了。第二种就是只编译这个模块,比如我们的mokoid. 使用以下命令:


mmm mokoid/


运行这条命令的时候可能出错:


-bash: mmm: command not found


其实mmm是一组函数,需要通过以下命令来让其生效:


. build/envsetup 注意:点和build之间记住有空格


2)现在就可以开始编译了,由于mokoid里面的led.h不在搜索路径中,需要进行一下修改,我这种全局改法应该不是很好,不过就将就看吧,


Android 编译会首先使用build/core/config.mk文件,所以可以在此修改全局的头文件搜索路径:


SRC_HEADERS := /
$(TOPDIR)system/core/include /


............................................
$(TOPDIR)vendor/generic/hardware/led_stub/include
3)要运行mokoid的测试程序,需要增加permission,不然测试程序不会出现在菜单中,即将相应的xml拷贝到/system/etc/permissions下面。


cp ../mokoid/frameworks/base/service/com.mokoid.server.xml system/etc/permissions/


4)使用genrootfs.sh更新新编译出来的mokoid到rootfs_dir目录中,使用mkyaffs2image-128M将rootfs_dir生成单个的Image文件,烧入开发板。


5)在开发板运行测试程序时会加载.so文件,编译生成的so文件是led.goldfish.so.这样就会出现一个错误:


LedService JNI: Get Stub operations failed.


从而导致在LedOn的时候出现新的错误:


LedService JNI: sLedDevice was not fetched correctly.


解决的办法就是在做文件系统的时候把led.goldfish.so直接改成led.default.so, 或者直接到开发板system/lib/hw下面去改。这样就OK了。这也是个凑合的方法,呵呵。


6)如果不确定系统load的到底是什么so文件可以在hardware/libhardware的hw_get_module函数里面利用LOGE打印path的值来确定


LOGE("++Path:%s",path);
status = -ENOENT;
if (i < HAL_VARIANT_KEYS_COUNT+1) {
/* load the module, if this fails, we're doomed, and we should not try
* to load a different variant. */
status = load(id, path, module);
}


关于path的产生还需要分析。


7)在界面上点击按钮,在adb shell上通过logcat查看HAL打印出来的log,如果出现下面的Log就证明你的mokoid已经ok了,上面一部分log是启动程序打印的,下面一部分是点击的时候打印的


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++的显示转换 下一篇Linux makefile: gcc 工作流程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: