s3c6410移植android,s3c6410 android 移植Step by step

Porting android on s3c6410

Environment: ubuntu 8.10

Board: XX6410

Kernel version: linux 2.6.24, android 1.0

1.Copy files

Create working location: /mydroid and copy the following files to this location:

Filename

Description

samsung-s3c6410-android.1.0.tar.bz2

Kernel

kandroid-1.1.2.1-20080530.glibc.gz

libiconv-1.12.tar.gz

Toolchain

090227-android-cupcake-rootfs.tar.bz2

Cupcake root file system

u-boot.bin

DNW

Bootloader

Below is the list offiles:

tommy@tommy-desktop:~$ mkdir mydroid

tommy@tommy-desktop:~$ cd mydroid

tommy@tommy-desktop:~/mydroid$ ls

090227-android-cupcake-rootfs.tar.gzlibiconv-1.12.tar.gz

DNWsamsung-s3c6410-android.1.0.tar.bz2

kandroid-1.1.2.1-20080530.glibc.tgzu-boot.bin

2.Installing Toolchain

Please follow the commands below and install the tool chain in the directory mentioned below:

installing libiconv

tommy@tommy-desktop:~$ cd mydroid

tommy@tommy-desktop:~/mydroid$ tar xvf libiconv-1.12.tar.gz

tommy@tommy-desktop:~/mydroid$ cd libiconv-1.12

tommy@tommy-desktop:~/mydroid/libiconv-1.12$ ./configure --prefix=/usr/local

tommy@tommy-desktop:~/mydroid/libiconv-1.12$ make install

tommy@tommy-desktop:~/mydroid/libiconv-1.12$ vi /etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/local/lib

tommy@tommy-desktop:~/mydroid/libiconv-1.12$ ldconfig

installing toolchain

tommy@tommy-desktop:~$ cd ~/mydroid

tommy@tommy-desktop:~/mydroid$ tar xvf kandroid-1.1.2.1-20080530.glibc.tgz

tommy@tommy-desktop:~/mydroid$ sudo mkdir -p /usr/local/arm

tommy@tommy-desktop:~/mydroid$ sudo mv kandroid-1.1.2.1-20080530.glibc /usr/local/arm

3.Compiling Kernel

Kernel source is compressed by the name of‘samsung-s3c6410-android.1.0.tar.bz2’. This is patched for s3c6410 so you don’t need to do this step. Extect this bz2 file by executing command. After extracting the kernel tarball file ‘samsung-s3c6410-android.1.0’

tommy@tommy-desktop:~/mydroid$ tar jxvf samsung-s3c6410-android.1.0.tar.bz2

tommy@tommy-desktop:~/mydroid$ cd samsung-s3c6410-android.1.0

Define the path oftoolchain for cross-compiling. Open file Makefile in this folder ( samsung-s3c6410-android.1.0 ). Go to line 197 and set:

CROSS_COMPILE:= /usr/local/arm/kandroid-1.1.2.1-20080530.glibc/bin/arm-android-linux-gnueabi-

Set the configuration values for the kernel. At first, copy the default configuration files which is located in arch/arm/configs/ to be the configuration file.

tommy@tommy-desktop:~/mydroid/samsung-s3c6410-android.1.0$ cp arch/arm/configs/smdk6410_android_nfs.config ./.config

Change default configurations by excuting ‘make menuconfig’

tommy@tommy-desktop:~/mydroid/samsung-s3c6410-android.1.0$ make menuconfig

please select ‘Boot options’, enter value for ‘Boot options’: boot from nfs file. Follow the below syntax :

root=/dev/nfs rw nfsroot=/,rsize=1024,wsize=1024 ip= :::255.255.255.0::eth0:off init=/init console=ttySAC0,115200

Please change ip config to suite your PC’s configuration

My values:

root=/dev/nfs rw nfsroot=192.168.11.2:/nfsroot/090227-Android-cupcake-rootfs,rsize=1024,wsize=1024 ip=192.168.11.3:192.168.11.2:192.168.11.2:255.255.255.0::eth0:off init=/init console=ttySAC0,115200s

Please select 'Power management' , set 'Power_Suspend=y'

Finally, make the kernel image file by executing:’make zImage’,copy the image to the tftp root folder.

tommy@tommy-desktop:~/mydroid/samsung-s3c6410-android.1.0$ make zImage

.......

LDvmlinux

SYSMAPSystem.map

SYSMAP.tmp_System.map

OBJCOPY arch/arm/boot/Image

Kernel: arch/arm/boot/Image is ready

ASarch/arm/boot/compressed/head.o

GZIParch/arm/boot/compressed/piggy.gz

ASarch/arm/boot/compressed/piggy.o

CCarch/arm/boot/compressed/misc.o

LDarch/arm/boot/compressed/vmlinux

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

tommy@tommy-desktop:~/mydroid/samsung-s3c6410-android.1.0$ cp arch/arm/boot/zImage /TFTP

4.install nfs server and copy root file system

Please follow the below commands to install nfs server and copy cupcake root file system into the nfs server’s root folder

tommy@tommy-desktop:~$ cd ~/mydroid

tommy@tommy-desktop:~/mydroid$ tar xvf 090227-android-cupcake-rootfs.tar.gz

tommy@tommy-desktop:~/mydroid$ sudo apt-get install nfs-kernel-server portmap

tommy@tommy-desktop:~/mydroid$ sudo mkdir /nfsroot

tommy@tommy-desktop:~/mydroid$ sudo mv 090227-Android-cupcake-rootfs /nfsroot

tommy@tommy-desktop:~/mydroid$ sudo vim /etc/exports

insert:

/nfsroot/090227-android-cupcake-rootfs *(rw,no_root_squash,no_all_squash)

tommy@tommy-desktop:~/mydroid$ sudo /etc/init.d/nfs-kernel-server restart

5.Porting Android

The first step to port android on S3c6410 board is uploading u-boot.bin . This step is perfomed only 1 time. Because I don’t know how to uploading u-boot.bin on linux environment using USB cable so I move into WindowXP environment and uploading this file using DNW. Please see ‘XX6410 linux 2.6 Guide’ for more detail

a.Uploading ‘u-boot.bin’ using USB 2.0 Cable on WindowXP environment

Please copy 2 file: u-boot.bin, tftpserver-setup and DNW folder to Windowxp environment.

Step 1: Installingtftpserver

Step 2: Copy file u-boot.bin into tftp root folder.

Step 3: Change NOR Flash Boot Mode:

Step 4: Run dnw.exe in DNW folder.

On the Configuration menu, click Options to set the UART/USB options. The following

window appears on your screen. Select Baud Rate and COM Port as shown in figure

“UART/USB options”, enter the download address as 0x57e00000 and then click OK

button.

On the Serial Port menu, click Connect. Switch ON the reference board and then press

any key and then install the USB driver in DNW driver directory

Enter “0”, On the USB Port menu, click Transmit and the following window appears on

your screen. Select u-boot.bin file and then

click Open button.

As soon as u-boot.bin download is over, the following messages appear in the DNW

window. Please hit the SPACE BAR key to view the current Ethernet Boot Loader

Configuration. Configure the Ethernet Boot loader as follows by entering the respective

options.

Setting IP address: set your ip address as serverip and a ramdom ip for the board

TFTP Server IP : setenv serverip 192.168.0.232

Device PC IP : setenv ipaddr 192.168.0.236

For erasing Bad blocks in NAND : nand scrub

Input ‘Y’ directly hit ‘Enter’

tftp c0000000 u-boot.bin

nand erase 0 40000

nand write c0000000 0 40000

Please reboot After Setting NAND of Boot Mode

Now, u-boot.bin is uploaded on the board. You don’t need perform this step more. Restart PC and come back liux environment. Now, our working environment is only Linux.

b.Uploading kernel image using Minicom on Linux

If your system has not minicom , please install Mincom using apt-get.

tommy@tommy-desktop:~$ minicom -s : Execute minicom on setting mode

Please select ‘Serial port setup’ and set configuration as below:

Restart minicom, then restart the board and hit SPACE BAR immediately. On Mincom screen:

U-Boot 1.1.6 (Dec 16 2008 - 19:08:22) for XX6410

CPU:S3C6410@666MHz

Fclk = 666MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (ASYNC Mode)

Board:SMDK6410

DRAM:128 MB

Flash:0 kB

NAND:128 MB

In:serial

Out:serial

Err:serial

Net:Found CS8900@0x18800300

Hit any key to stop autoboot:0

MV6410 #

Set environment variables for the board

XX6410 # setenv serverip 192.168.11.2

XX6410 # setenv ipaddr 192.168.11.3

XX6410 # setenv bootargs root=/dev/nfs rw nfsroot=192.168.11.2: /nfsroot/090227-Android-cupcake-rootfs,rsize=1024,wsize=1024 ip=192.168.11.3:192.168.11.2:192.168.11.2:255.255.255.0::eth0:off init=/init console=ttySAC0,115200N81

XX6410 # saveenv

Saving Environment to NAND...

Erasing Nand...Writing to Nand... done

Download image kernel from tftp server into DRAM

XX6410 # tftp c0008000 zImage

XX6410 # tftp c0008000 zImage

TFTP from server 192.168.11.2; our IP address is 192.168.11.3

Filename 'zImage'.

Load address: 0xc0008000

Loading: #################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

######

done

Bytes transferred = 2027440 (1eefb0 hex)

Boot from DRAM(only for testing)

MV6410 # bootm

Boot with zImage

Starting kernel ...

Uncompressing Linux.............................................................

Linux version 2.6.24.back-21-26-lgs-android-g10351122-dirty (tommy@tommy-de9

CPU: ARMv6-compatible processor [410fb766] revision 6 (ARMv7), cr=00c5387f

Machine: SMDK6410

Ignoring unrecognised tag 0x00000000

Memory policy: ECC disabled, Data cache writeback

CPU S3C6410 (id 0x36410101)

S3C6410: core 666.000 MHz, memory 133.000 MHz, peripheral 66.500 MHz

S3C6410: EPLL 192.000 MHz

S3C64XX Clocks, (c) 2007 Samssung Electronics

CPU0: D VIPT write-back cache

CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets

CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets

Built 1 zonelists in Zone order, mobility grouping on.Total pages: 32512

Kernel command line: root=/dev/nfs rw nfsroot=192.168.11.2:/nfsroot/090227-Andr1

Trying to install chained interrupt handler for IRQ0

Trying to install chained interrupt handler for IRQ1

Trying to install chained interrupt handler for IRQ32

Trying to install chained interrupt handler for IRQ33

PID hash table entries: 512 (order: 9, 2048 bytes)

timer tcon=00600000, tcnt 103c3, tcfg 00000400,00000000, usec 00001340

Console: colour dummy device 80x30

console [ttySAC0] enabled

Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

Memory: 128MB = 128MB total

Memory: 125312KB available (3412K code, 530K data, 508K init)

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

net_namespace: 64 bytes

android_power_init

android_power_init done

NET: Registered protocol family 16

S3C6410 Power Management, (c) 2008 Samsung Electronics

s3c6410: Initialising architecture

S3C DMA-pl080 Controller Driver, (c) 2006-2007 Samsung Electronics

Total 32 DMA channels will be initialized.

SCSI subsystem initialized

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

NET: Registered protocol family 2

IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

TCP established hash table entries: 4096 (order: 3, 32768 bytes)

TCP bind hash table entries: 4096 (order: 2, 16384 bytes)

TCP: Hash tables configured (established 4096 bind 4096)

TCP reno registered

NetWinder Floating Point Emulator V0.97 (double precision)

ashmem: initialized

JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.

yaffs May4 2009 21:03:15 Installing.

io scheduler noop registered

io scheduler anticipatory registered (default)

io scheduler deadline registered

io scheduler cfq registered

S3C_LCD clock got enabled :: 133.000 Mhz

LCD TYPE :: LTE480WV will be initialized

Window[0] - FB1: map_video_memory: clear ff200000:00177000

FB1: map_video_memory: dma=57a00000 cpu=ff200000 size=00177000

Window[0] - FB2: map_video_memory: clear ff2bb800:000bb800

FB2: map_video_memory: dma=57abb800 cpu=ff2bb800 size=000bb800

Console: switching to colour frame buffer device 100x30

fb0: s3cfb frame buffer device

Window[1] - FB1: map_video_memory: clear ff377000:00177000

FB1: map_video_memory: dma=57c00000 cpu=ff377000 size=00177000

Window[1] - FB2: map_video_memory: clear ff432800:000bb800

FB2: map_video_memory: dma=57cbb800 cpu=ff432800 size=000bb800

fb1: s3cfb frame buffer device

lp: driver loaded but no devices found

ppdev: user-space parallel port driver

Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled

s3c-uart.0: s3c_serial0 at MMIO 0x7f005000 (irq = 37) is a S3C

s3c-uart.1: s3c_serial1 at MMIO 0x7f005400 (irq = 38) is a S3C

s3c-uart.2: s3c_serial2 at MMIO 0x7f005800 (irq = 39) is a S3C

s3c-uart.3: s3c_serial3 at MMIO 0x7f005c00 (irq = 40) is a S3C

RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize

loop: module loaded

cs89x0:cs89x0_probe(0x0)

cs89x0.c: v2.4.3-pre1 Russell Nelson , Andrew Morton

eth0: cs8900 rev J found at 0xf7600300

cs89x0: Extended EEPROM checksum bad and no Cirrus EEPROM, relying on command le

cs89x0 media RJ-45, IRQ 74, programmed I/O, MAC 00:09:c0:ff:ec:48

cs89x0_probe1() successful

Invalid chip endian 0x080

smc911x: not found (-19).

Driver 'sd' needs updating - please use bus_type methods

S3C NAND Driver, (c) 2007 Samsung Electronics

S3C NAND Driver is using hardware ECC.

NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-b)

Creating 4 MTD partitions on "NAND 128MiB 3,3V 8-bit":

0x00000000-0x00040000 : "Bootloader"

0x00040000-0x00400000 : "Kernel"

0x00400000-0x03400000 : "Root - Cramfs"

0x03400000-0x08000000 : "File System"

usbmon: debugfs is not available

s3c2410-ohci s3c2410-ohci: S3C OHCI

s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1

s3c2410-ohci s3c2410-ohci: irq 47, io mem 0x74300000

usb usb1: configuration #1 chosen from 1 choice

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 ports detected

Initializing USB Mass Storage driver...

usbcore: registered new interface driver usb-storage

USB Mass Storage support registered.

mice: PS/2 mouse device common for all mice

S3C Touchscreen driver, (c) 2008 Samsung Electronics

S3C TouchScreen got loaded successfully : 12 bits

input: S3C TouchScreen as /class/input/input0

S3C24XX RTC, (c) 2004,2006 Simtec Electronics

s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling

s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0

i2c /dev entries driver

S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics

s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled

[s3c_hsmmc_probe]: s3c-hsmmc.0: at 0xc9000000 with irq 56. clk src: sclk_DOUTmp0

[s3c_hsmmc_probe]: s3c-hsmmc.1: at 0xc9200000 with irq 57. clk src: sclk_DOUTmp1

[s3c_hsmmc_probe]: s3c-hsmmc.2: at 0xc9400000 with irq 49. clk src: sclk_DOUTmp2

usbcore: registered new interface driver usbhid

drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver

logger: created 64K log 'log_main'

logger: created 64K log 'log_events'

logger: created 64K log 'log_radio'

Advanced Linux Sound Architecture Driver Version 1.0.15 (Tue Nov 20 19:16:42 20.

ASoC version 0.13.1

WM9713/WM9714 SoC Audio Codec 0.12

asoc: AC97 HiFi s3c64xx-ac97 mapping ok

ALSA device list:

#0: SMDK6400 (WM9713)

TCP cubic registered

NET: Registered protocol family 1

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

s3c2410-rtc s3c2410-rtc: setting system clock to 2000-01-04 23:42:11 UTC (94702)

eth0: using half-duplex 10Base-T (RJ-45)

IP-Config: Complete:

device=eth0, addr=192.168.11.3, mask=255.255.255.0, gw=192.168.11.2,

host=192.168.11.3, domain=, nis-domain=(none),

bootserver=192.168.11.2, rootserver=192.168.11.2, rootpath=

Looking up port of RPC 100003/2 on 192.168.11.2

Looking up port of RPC 100005/1 on 192.168.11.2

VFS: Mounted root (nfs filesystem).

Freeing init memory: 508K

Warning: unable to open an initial console.

init: cannot open '/initlogo.rle'

init: cannot find '/system/bin/playmp3', disabling 'bootsound'

sh: can't access tty; job control turned off

# tsdev (compaq touchscreen emulation) is scheduled for removal.

See Documentation/feature-removal-schedule.txt for details.

android_power_suspend: 117110645000

android sleep state 0->2 at 117110645000

active wake lock

PowerManagerService

android_power_suspend: enter suspend

Syncing filesystems ... done.

Freezing user space processes ... (elapsed 0.00 seconds) done.

Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.

Suspending console(s)

The system hangs at here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值