移植android 到定制开发板
2010-05-28 15:32:00 来源:WEB开发网即http://nemustech.blogspot.com/ 说的方法:
* if you have jffs2 for / patch /init
* modify with hexedit : "/system_property" -> "/tmp/sy_property"
* NOTE: jffs2 does not support memory mapped file
为了方便测试,可以修改/etc/init.rc,注释掉 runtime,dbus-daemon,Xzygote等相关内容,在init启动以后再手工启动这些进程:
/system/bin/app_process -Xzygote /system/bin --zygote &
/system/bin/dbus-daemon --system --nofork &
sleep 1;
/system/bin/runtime &
Android的Init位于根目录下,所以如果你需要直接启动Init,可以在内核参数命令行中用init=/init 来指定,或者chroot 目录 /init来指定。 当然,启动/bin/sh以后,再手动启动/init也是可以的。
/dev/binder /dev/alarm /dev/log/* 等文件是最重要的几个设备节点,由于这几个设备节点号的主次设备号是动态分配的,所以,最好确认你的文件系统中的这几个设备节点的主次设备号是否正确。如果不知道如何确认,直接删除掉再重启 8 )
如果flash速度太慢或者nfs网络连接太差,可以将data tmp这两个目录mount到内存里,前提是你的内存足够大 8 )
如果启动过程中,红色滚动条速度太快(和emulator里的表现比较),runtime或者system_server进程CPU占用率接近 100%,那么你可以修改一下你的framebuffer代码中pan_display相关的函数的代码,保证其调用返回时得到足够的帧同步延迟时间。据 Google的swetland给我的说法是:This is usually indicative of lack of vsync/pageflip in the fb driver.The surfaceflinger believes it will be limited by the vsync rate and the startup animation depends on that.
目前的Android的内核代码有M3-r20和M5-r14两个版本,这两个版本对binder和power两个驱动做了较大的修改,上层的文件系统和内核必须配套使用。( 另,我的板子上,M5版本可以跑起来,M3的版本会出现段错误,没跑起来:(。如果一个版本实在跑不起来,不妨试试别的版本)
使用strace去跟踪问题!
更多精彩
赞助商链接