Phases,

ü Installing tool chain

ü Downloading Linux kernel

ü Installing Android Emulator

ü Extracting root file system

ü Modifying Linux kernel source

ü Configuring Linux kernel

ü Modifying files in root file system

ü Building Linux kernel

ü Installing kernel image

1.0 Installing tool chain

$ wget http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-

gnueabi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

$ tar -xjvf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

2.0 Downloading Linux kernel

Download Linux kernel from the link shown below,

http://code.google.com/p/android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount

Kernel : linux-2.6.23-android-m5-rc14.tar.gz

Extract the kernel with the command shown below,

$ tar -xf linux-2.6.23-android-m5-rc14.tar.gz ./

3.0 Installing Android Emulator

Download Android emulator from the link shown below,

http://code.google.com/p/android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount

Emulator : android-emulator-m5-rc14.tar.gz

Install the emulator using following command,

$ tar -xf android-emulator-m5-rc14.tar.gz

4.0 Extracting root file system

1> Download busybox binary from the link shown below.

http://benno.id.au/blog/2007/11/14/android-busybox

2> run the emulator using following steps,

$ cd /tools

$ ./emulator&

Note: Wait for the emulator to come up

$ ./adb push /busybox /data

$ ./adb shell

Note: This will get a android terminal

# /data/busybox tar -czf system.tar.gz /system

# /data/busybox tar -czf data.tar.gz /data

# /data/busybox tar -czf etc.tar.gz /etc

# /data/busybox tar -czf sbin.tar.gz /sbin

# exit

$ ./adb pull /system.tar.gz ./

$./adb pull /data.tar.gz ./

$./adb pull /etc.tar.gz ./

$./adb pull /sbin.tar.gz ./

$./adb pull /init ./

$ mkdir initial_ram_disk

$ cd initial_ram_disk

$ mkdir cache

$ mkdir d

$ mkdir dev

$ mkdir proc

$ mkdir root

$ mkdir sdcard

$ mkdir sys

$ mkdir tmp

$ mkdir var

$ tar -xf /system.tar.gz ./

$ tar -xf /data.tar.gz ./

$ tar -xf /etc.tar.gz ./

$ tar -xf /sbin.tar.gz ./

$ cp /init ./

5.0 Modifying Linux kernel source

Downloaded kernel is not supporting smdk6400 board. One should copy all architecture related smdk6400 files to the kernel. Change Kconfig and Makefile accordingly.

1> Change the /arch/arm/mach-s3c2410/Makefile.boot as shown below,

zreladdr-$(CONFIG_PLAT_S3C24XX) := 0x30008000

params_phys-$(CONFIG_PLAT_S3C24XX) := 0x30000100

zreladdr-$(CONFIG_PLAT_S3C64XX) := 0x50008000

params_phys-$(CONFIG_PLAT_S3C64XX) := 0x50000100

2> Copy the directory/files shown below from any other kernel supporting 6400 board (in the project kernel sent by Nexus chips was used for the purpose).

/arch/arm/mach-s3c6400

/drivers/serial/s3c6400.c

/drivers/input/touchscreen/s3cts.c

/drivers/usb/gadget

3> Copy /drivers/android/ashmem.c from any other android kernel (The Android source code for 2..6.23 does not have this file)

4> Change Kconfig and Makefile accordingly.

具体配置方法请参考下列地址文章
http://www.androidok.com/bbs/dispbbs.asp?boardid=5&Id=68

6.0 Configuring Linux kernel

$ cd

$ make CROSS_COMPILE=/bin/arm-none-linux-gnueabi-gcc ARCH=arm menuconfig

Note: Configure initial ramdisk support and select the path to initial_ram_disk directory.

7.0 Modifying files in root file system

Touchscreen has to calibrated before it can be used. Refer below link to do so.

http://home.androidin.com/space.php?uid=17708&do=blog&id=21

Modify /etc/init.rc in root file system to include below environmental settings,

TSLIB_CONSOLEDEVICE none

TSLIB_FBDEVICE /dev/graphics/fb0

TSLIB_TSDEVICE /dev/input/ts0

TSLIB_CALIBFILE /etc/pointercal

TSLIB_CONFFILE /etc/ts.conf

TSLIB_PLUGINDIR /lib/ts

8.0 Building Linux kernel

$ make CROSS_COMPILE=/bin/arm-none-linux-gnueabi-gcc ARCH=arm zImage

Note: While building, it may deliver errors related to dependency. One has to solve all dependency related issues.

9.0 Installing kernel image

1. Run hyperterminal in Windows box.

Config: COM1 port, 115200, 8N1, no flow control.

2. Connect serial port of smdk6400 to COM1 and power up.

3. Stop boot process at bootloader by pressing any key

4. Connect USB device port of smdk6400 to USB host port of Windows box

5. Execute below command from bootloader,

$ run bootup (For downloading bootloader)

OR

$ run kernelup (For downloading kernel)

OR

$ run rootup (For downloading root file system)

6. From Windows box,

Run dnw.exe (Utility meant for downloading image file to smdk6400)

7. From dnw.exe,

select `USB port -> tranmit`

8. Browse to image file to be downloaded

9. When download completes, reset the board.

Note: Kernel has a root file system inbuilt (Initial ram disk) which does not require any rootfs to mount. Downloading the zImage of the kernel is enough to boot the system. Use the appropriate bootloader, supplied with the release.

10. You will see the applications on desktop and the Android background image.

Double click on any application. It will get invoked.

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android(安卓)IntentService 深入分析
  5. Android下如何获取Mac地址
  6. MVP -----个人理解与示例(android例子 实现)
  7. 取WiFi MAC地址
  8. Android完全退出应用程序
  9. android工程下轻松运行java main程序

随机推荐

  1. Android(安卓)防界面劫持方案,无视Android
  2. ListView的分割线相关属性
  3. Android中关于线程使用的几点注意事项
  4. Android相对布局实现各种梅花效果
  5. Android优秀学习资源列表
  6. Android应用程序核心-应用程序的基本组件
  7. Android中的几种网络请求方式详解
  8. Ubuntu下android源码下载与编译
  9. Android的多媒体框架OpenCore(PacketVideo
  10. 【Android】Android(安卓)监听apk安装替