(Japanese version)
0. Preparation
Get source code of android-2.3
At the new directory:$ mkdir android-2.3 $ cd android-2.3 $ export ANDROID=$PWD $ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3.4_r1 $ repo sync -j4If you already have android-2.3.3, let's update it
$ cd android-2.3 $ export ANDROID=$PWD $ repo forall -c git checkout -f $ rm -rf out out.*$ repo init -b android-2.3.4_r1 $ repo sync -j4
1. At first, build the emulator
set environment variables such as PATH to use java6
$ cat ./env.shexport ANDROID_JAVA_HOME=/usr/lib/jvm/java-6-openjdkexport JAVA_HOME=/usr/lib/jvm/java-6-openjdkexport PATH=$JAVA_HOME/bin:$PATH $ . env.sh$ . build/envsetup.sh $ lunch generic-eng
Build
$ time make -j8 2>&1 |tee make.logTime to build
real 15m7.034s user 124m28.730s sys 6m51.310sMy build machine is Ubuntu 10.04, CPU: Intel Core i7 950 @3.07GHz, memory 12GB
Start the emulator
$ emulator & $ adb logcat
2. Build for KZM-A9-Dual board
set environment variables and build
$ cat ./build.sh export ARCH_ARM_HAVE_TLS_REGISTER=true export TARGET_ARCH_VARIANT=armv7-a-neon export TARGET_CPU_SMP=true export WITH_JIT=true export JS_ENGINE=v8 time make -j8 showcommands 2>&1 |tee make.log$ rm -rf out$ ./build.shTime to build. Faster than last time because source file is in cache.
real 13m54.898s user 108m58.990s sys 6m11.980sCopy root file system to NFS server.
$ cat ./make_nfsroot.sh ROOT=/export/android/root [ -e $ROOT ] && sudo rm -rf $ROOT mkdir -p $ROOT cd out/target/product/generic/ #cd out/target/product/kzm9d/ zcat ramdisk.img | (cd $ROOT; cpio -i) cp -a system $ROOT#cp -a data $ROOT #[ -e $ROOT/data/app ] && chmod 771 $ROOT/data/app cp $ROOT/init.rc $ROOT/init.rc.org sed -e 's/mount rootfs/#mount rootfs/' $ROOT/init.rc.org > $ROOT/init.rc sudo chown -R root:root $ROOT $ ./make_nfsroot.shBoot on KZM-A9-Dual board.
The kernel boot parameters are following. Assume NFS server's IP address is 192.168.1.26.
root=/dev/nfs nfsroot=192.168.1.26:/export/android/root ip=dhcp \ noinitrd init=/init mem=129M@0x40000000 mem=256M@0x50000000 \ debug no_console_suspend=1 console=ttyS1,115200n8n \ androidboot.console=ttyS1 video=qfb rootwait rwIn this moment, LCD screen is not displayed correctly. This is because kernel driver expect 24bit color but Android makes screen in 16bit color.
On the serial console,
$ ps USER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 264 180 c00aef2c 0000875c S /init root 2 0 0 0 c006291c 00000000 S kthreadd root 3 2 0 0 c004aa68 00000000 S migration/0 root 4 2 0 0 c0053450 00000000 S ksoftirqd/0 root 5 2 0 0 c004aa68 00000000 S migration/1 root 6 2 0 0 c0053450 00000000 S ksoftirqd/1 root 7 2 0 0 c005eaf8 00000000 S events/0 root 8 2 0 0 c005eaf8 00000000 S events/1 root 9 2 0 0 c005eaf8 00000000 S work_on_cpu/0 root 10 2 0 0 c005eaf8 00000000 S work_on_cpu/1 root 11 2 0 0 c005eaf8 00000000 S khelper root 12 2 0 0 c005eaf8 00000000 S suspend root 13 2 0 0 c005eaf8 00000000 S kblockd/0 root 14 2 0 0 c005eaf8 00000000 S kblockd/1 root 15 2 0 0 c005eaf8 00000000 S ksuspend_usbd root 16 2 0 0 c01de9d4 00000000 S khubd root 17 2 0 0 c005eaf8 00000000 S kmmcd root 18 2 0 0 c0085ae0 00000000 S pdflush root 19 2 0 0 c0085ae0 00000000 S pdflush root 20 2 0 0 c0089e44 00000000 S kswapd0 root 21 2 0 0 c005eaf8 00000000 S aio/0 root 22 2 0 0 c005eaf8 00000000 S aio/1 root 23 2 0 0 c005eaf8 00000000 S nfsiod root 24 2 0 0 c005eaf8 00000000 S emxx_fb root 25 2 0 0 c005eaf8 00000000 S emxx_lcd root 26 2 0 0 c01b7c04 00000000 S kv4l2_rot root 27 2 0 0 c01b7c04 00000000 S kv4l2_tmr root 28 2 0 0 c01b7c04 00000000 S kv4l2_lcd root 29 2 0 0 c01d1580 00000000 S mtdblockd root 30 2 0 0 c005eaf8 00000000 S ehci-wq root 31 2 0 0 c005eaf8 00000000 S usb_suspend root 32 2 0 0 c0203f1c 00000000 S usb_mass_storag root 33 2 0 0 c005eaf8 00000000 S rpciod/0 root 34 2 0 0 c005eaf8 00000000 S rpciod/1 root 35 2 0 0 c0218c5c 00000000 S mmcqd root 36 1 248 156 c00aef2c 0000875c S /sbin/ueventd system 41 1 768 260 c022950c afd0b6fc S /system/bin/servicemanager root 42 1 3824 564 ffffffff afd0bdac S /system/bin/vold root 43 1 3796 560 ffffffff afd0bdac S /system/bin/netd root 44 1 628 264 c02588c0 afd0c0cc S /system/bin/debuggerd radio 45 1 4336 672 ffffffff afd0bdac S /system/bin/rild root 46 1 61324 26580 c00aef2c afd0b844 S zygote media 47 1 16804 3692 ffffffff afd0b6fc S /system/bin/mediaserver bluetooth 48 1 1216 572 c00aef2c afd0c59c S /system/bin/dbus-daemon root 49 1 776 316 c02a8424 afd0b45c S /system/bin/installd keystore 50 1 1704 432 c02588c0 afd0c0cc S /system/bin/keystore shell 51 1 696 336 c0050934 afd0c3ac S /system/bin/sh root 52 1 3356 160 ffffffff 00008294 S /sbin/adbd system 66 46 129248 35628 ffffffff afd0b6fc S system_server system 114 46 74028 21096 ffffffff afd0c51c S com.android.systemui app_24 122 46 79320 19184 ffffffff afd0c51c S com.android.inputmethod.latin radio 134 46 87000 19468 ffffffff afd0c51c S com.android.phone app_18 138 46 80080 24552 ffffffff afd0c51c S com.android.launcher app_7 165 46 82172 21832 ffffffff afd0c51c S android.process.acore app_0 196 46 73144 16628 ffffffff afd0c51c S com.android.deskclock app_14 202 46 75192 17628 ffffffff afd0c51c S android.process.media app_3 216 46 72420 16788 ffffffff afd0c51c S com.android.bluetooth app_25 233 46 83452 17004 ffffffff afd0c51c S com.android.mms app_26 251 46 75884 17968 ffffffff afd0c51c S com.android.email app_27 266 46 74056 17156 ffffffff afd0c51c S com.android.providers.calendar app_1 285 46 72836 15444 ffffffff afd0c51c S com.android.protips app_19 295 46 72360 15720 ffffffff afd0c51c S com.android.music app_21 304 46 73872 16348 ffffffff afd0c51c S com.android.quicksearchbox app_28 314 46 72480 17800 ffffffff afd0c51c S com.cooliris.media shell 324 51 856 316 00000000 afd0b45c R ps $OK if these processes are alive.
Bring files from KZM-A9-Dual build tree
Set $FROYO at the top directory of KZM-A9-Dual source code, which is include in DVD with the board
$ export FROYO=/path/to/KZM-A9-Dual/source/mydroid/copy gralloc and related header files
$ cp $FROYO/bionic/libc/kernel/common/linux/fbcommon.h bionic/libc/kernel/common/linux/ $ cd hardware/libhardware/modules/ $ mv gralloc /tmp $ cp -a $FROYO/hardware/renesas/emxx/libgralloc gralloc $ cd gralloc/ $ cp Android.mk Android.mk.org $ vi Android.mkEdited Android.mk at the following line.
$ diff -u Android.mk.org Android.mk --- Android.mk.org 2011-05-02 14:23:39.357460129 +0900 +++ Android.mk 2011-05-02 14:24:35.807459846 +0900 @@ -28,6 +28,6 @@ framebuffer.cpp \ mapper.cpp -LOCAL_MODULE := gralloc.emxx +LOCAL_MODULE := gralloc.default LOCAL_CFLAGS:= -DLOG_TAG=\"gralloc\" include $(BUILD_SHARED_LIBRARY)Back to the top directory, and clean build. (You need clean build because makefile is changed.)
$ cd $ANDROID$ rm -rf out $ ./build.shTime to build
real 13m52.893s user 109m16.830s sys 6m10.000s
$ ./make_nfsroot.shThen boot the board again. Now the screen is diplayed correctly.
But icons and fonts are smaller than expected.
![]() | ![]() |
Adjust settings
DNS server settings are required to browse internet. And need to modify /system/etc/vold.fstab to mount SD card.Copy these files from previous KZM-A9-Dual source tree to NFS server.
$ export NFS_ROOT=/export/android/root $ sudo cp $FROYO/device/kmc/kzm9d/init.kzm9d.rc $NFS_ROOT/ $ sudo cp $FROYO/device/kmc/kzm9d/init.kzm9d.sh $NFS_ROOT/system/etc/ $ sudo cp $FROYO/device/kmc/kzm9d/vold.fstab $NFS_ROOT/system/etc/From gingerbread, the shell of serial console becomes not root. This is inconvient to work. So modify init.rc to get root shell on the serial console as before.
$ sudo diff -u init.rc.org init.rc --- init.rc.org 2011-05-02 18:07:19.000000000 +0900 +++ init.rc 2011-05-02 18:08:47.000000000 +0900 @@ -283,8 +283,8 @@ service console /system/bin/sh console disabled - user shell - group log +# user shell +# group log on property:ro.secure=0 start console
Related pages
Tips of "repo sync" of AndroidDownloading source code and build Android2.3(Gingerbread) (in Japanese)
Tips of repo sync of Android(in Japanese)
No comments:
Post a Comment