免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2119 | 回复: 0
打印 上一主题 下一主题

android porting step by step to real HW [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-12 15:32 |只看该作者 |倒序浏览

skip to main
|
      
skip to sidebar
About Google Android
2007년 12월 7일 금요일
Android Porting to Real Target HW

After
digging Android a few days, we successfully ported Android to our
evaluation board (PXA270, Intel Xscale ARM) including network and touch
screen. We know some people already have done similar work with this,
but we didn't find the actual working network/touch device yet.
So we want to share our experience with you guys.
Ok, here goes our working process,
We've
chosen the target to Intel bulverde evaluation board. Why this one?
Actually there is no technical reason. Just selected because we have
this one for our Linux project, and thought Xscale would be fit for our
project.
Here are the technical spec of our bd,

-------------------------------
Intel Bulverde evaluation board :
- PXA270 520MHz
- SDRAM 128MB
- NAND 32 MB
- 7inch TFT LCD : 800x480
- 2GB USB Storage
-------------------------------
Here are our porting procedure step by step.
* get Linux
2.6.23.8
from
kernel.org
* Port
2.6.23.8
to target board
* CONFIG_AEABI=y
* CONFIG_BINDER=y
* CONFIG_LOW_MEMORY_KILLER=y
* CONFIG_INITRAMFS_SOURCE=""
* CONFIG_CC_OPTIMIZE_FOR_SIZE=y
--- EABI toolchain?
* Prepare Filesystems
* rootfs : jffs2 : using acumen270 rootfs as is
* extract android filesystem contents
* / : extract gzipped cpio
* /system & /data : download from benno(
http://benno.id.au/blog/
)'s
* build ext2 fs images for /system & /data
* mount /system & /data
* put android files to /etc
init.rc default.prop system.conf system.d init.gprs-pppd init.ril hcid.conf
* put android init-modified in /
* if you have jffs2 for / patch /init
* modify with hexedit : "/system_property" -> "/tmp/sy_property"
* NOTE: jffs2 does not support memory mapped file
* patch /etc/init.rc
---- begin : init.rc
....
## qemu-init {
## exec /etc/qemu-init.sh
## }
network-property {
exec /etc/set_network.sh
}
....
----- end : init.rc
* put this script to /etc/
------ begin : set_networkprop.sh
export PATH=/sbin:/bin:/usr/bin:/system/bin
LOCALIP=`ifconfig|grep "inet addr" |head -1|sed -e
"s/.*addr:\([0-9\.]*\) .*/\1/g"`
DNSIP=`nslookup localhost|grep Address|head -1|sed -e "s/.* //g"`
/system/bin/setprop net.eth0.dns1 $DNSIP
/system/bin/setprop net.gprs.local-ip $LOCALIP
/system/bin/setprop ro.radio.use-ppp no
/system/bin/setprop ro.config.nocheckin yes
----- end : set_networkprop.sh
* Execute a-run.sh as root
----- begin : a-run.sh
export PATH=/system/sbin:/system/bin:/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=/system/lib
export ANDROID_BOOTLOGO=1
export ANDROID_ROOT=/system
export ANDROID_ASSETS=/system/app
export ANDROID_DATA=/data
export EXTERNAL_STORAGE=/sdcard
export DRM_CONTENT=/data/drm/content
### copy Android files to /etc if not exists there.
copy_if_not_in_etc () {
if /usr/bin/test ! -e /etc/$1; then
cp -vR /home/android/etc/$1 /etc
fi
}
copy_if_not_in_etc init.rc
copy_if_not_in_etc default.prop
copy_if_not_in_etc system.conf
copy_if_not_in_etc system.d
copy_if_not_in_etc init.gprs-pppd
copy_if_not_in_etc init.ril
copy_if_not_in_etc hcid.conf
copy_if_not_in_etc set_networkprop.sh
umask 000
/bin/chmod -R a+rw /data /tmp
/bin/chmod a+rw .
/bin/chmod -R a+rw data*
/init-modified &
------ end : a-run.sh
* have fun :)
you may see android with network enabled
-----------------------------------------------

* NOTICE
(1) you need world wide write permission on
* /data /tmp $PWD
* /dev/binder /dev/fb0
(2) never run dbus-daemon, app_process, runtime by yourself.
(android) init will do it for you
------------------------------------------------------------
Lesson Learned ;
* you don't need /data filesystem image from begining. /init will create
* you need /data /tmp write permissions for other(not root) users (app)
* w/o, app may killed with Segmentation Fault
* you need /init(of android) process for system property service
* / should be ramfs for memory mapped file /system_property created by /init
* you can edit /init with hexedit ; /system_property -> /tmp/sy_property
* you need system property service for network (net.eth0.dns1 for DNS
lookup)
* to see log (in strace detail) you need /dev/log/{main,events,radio}
* just do
# rm /dev/log (if you have)
# mkdir /dev/log;touch /dev/log/{main,events,radio}
* you can see usefull infos from strace log and /dev/log/main
* you may run /init on some directory with write permission.
* init create data/ databases on running directory which cannot found in
emulator.
------------------------------------------------

ok, done for now, we will keep posting our next improvement later.
If you have any question, leave a message to this blog.
Good Luck!
작성자:
Zaharang
위치
오후 3:10

레이블:
Android
6
개의 덧글:
        
jhs012
코멘트 내용...
Good Job~~!!
2007년 12월 7일 (금) 오후 4:32

Roustabout
코멘트 내용...
This is great. Now, can you please take a traditional Java VM and
benchmark it against Dalvik? Just some simple benchmarks as found on
http://shootout.alioth.debian.org would be wonderful. Also, be sure to
include memory usage as it is hopeful that Dalvik will do better than
other Java VMs. Thank you!
2007년 12월 11일 (화) 오전 3:40

익명
코멘트 내용...
Greate job!
I'm also working on porting Andriod to my custom
Xscale-based development board. Would you please give more details on
the 'andriod init-modified', i.e. what do you mean by 'android
init-modified'? What modifications need to be done to the original
'init' in the ramdisk image of andriod?
2008년 1월 3일 (목) 오후 3:06

Robert Le Van Mao
코멘트 내용...
That's cool! Do you know if the same procedures work with older Linux kernels? I have Linux 2.6.22.
2008년 1월 12일 (토) 오전 2:21

iappi
코멘트 내용...
Beautifull work!
I thought I have to re-compile Dalvik from source as I've done with J2me.
But I can't find Dalvik source anywhere.
I'm wrong?
Bye bye
2008년 1월 20일 (일) 오전 3:05

changho
코멘트 내용...
This is great. I am korean university student. I have many interet
about android, so i try to porting android to my embedded board. But,
this is very difficult work to me... If you give a manual or tip,
please send me
my email address is superchangho at gmail.com
Please your concern Have a nice day
2008년 3월 24일 (월) 오후 8:16

Post a Comment
최근 게시물

가입위치:
게시물 코멘트 (Atom)
Links


레이블

  • Android
    (3)


블로그 아카이브







               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/35418/showart_973110.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP