MINI2440へのandroidポーティングへの道2009年08月20日 15時53分58秒

今いじっているMINI2440はandroidポーティングを目指していますが、そんなに簡単なことじゃないということを整理して、作業項目を洗い出しましょう。

そもそもAndroidと標準のLinuxの違い

ソースとってきて差分とってパッチ当ててビルドしたら終わり、なんて簡単なことじゃないです。 きちんと意味を理解しておかないとそれぞれの修正もできない。

そもそも標準のLinuxとの違いが整理された資料を見つけられない。googleのどっかにおいてあるとは思うのですが、まだそこまで見つけられていません。

CE Linux ForumのTOMOYO Linuxのセミナー資料がちょっと分かりやすい。

上記資料の抜粋を含めて整理すると以下のようなことか。

  • 標準のLinuxのユーティリティの削減(toolbox)
  • glibcは使えない(Bionicを使う)
  • IPCが標準と違う(Binder)
  • ネイティブなwindowシステムがない
  • パワーマネージメントシステムを最適化
  • Low memory killer, Alarm, Kernel Debugger, etc.
  • zygoteとDalvikVM
  • SDK用の標準エミュレータ用にgoldfishという仮想のARMマシンとして構築されている
  • H/Wに依存するデバイスドライバの類とかDalvikVMの接続のあたりが不明

ポーティングプラン

  1. MINI2440のNAND FLASHにカーネルイメージを置くにはサイズが足りないので、とにかく外部デバイスでブートできるようにならなければならない
  2. MINI2440はARMなので基本的にはgoldfishのバイナリが使えるはず
  3. なので、toolboxはgoldfishのものがそのまま使えるはず
  4. Bionicはgoldfishのものがそのまま使えるはず
  5. カーネルはandroidのものをベースに考えるか標準のMINI2440のものをベースに考えるかで作業が異なる
  6. いろいろと標準のコンソールを使いたいので標準環境MINI2440に拡張していく形を検討
  7. 仮想バッテリドライバの開発?構築?でMINI2440対応
  8. 各種デバイスドライバの対応

なお、JTAG ICEは必要になってくると思うのでそちらの環境整備も検討。

外部デバイスからのブート

実はこいつではまってます。 全く標準のカーネルイメージをmkimageでu-boot用のイメージに変換して、SDメモリカードのFATにコピーしてブートを試みるも、起動しない。 このカーネルはもちろんNAND Flashからは起動するもの。

外部デバイスからのブートについては以下の方法があります。

  • SDメモリカードのFAT領域からのブート(u-boot1.3.x以降?必要)
  • USBメモリからのブート(u-boot1.3.x以降?必要)
  • TFTPまたはNFSルートからのブート(viviで対応可能)

カーネルそのものには問題ないと考えてu-bootの方を試行錯誤している最中。

今後の予定

ということで、android云々前にブートについて整理と試行錯誤が必要で、これにけりがついたらandroidのソースをいじり始めることになると思います。その前にブート手順の中身の理解やファイル構成などの把握も必要。

SDメモリーカードからのブートが無理そうならUSBブートを試して最終的にはNFS対応で当面逃げる。でも、最終的には戻ってこないといけませんね。

・・・と思ったらMINI2440用の最新カーネル2.6.31をビルドしてSDメモリーカードに書いたらあっさり起動しましたね。これについては別途書きますが、何でカーネルに依存して起動しなかったのかの理屈がわかりませんね。

ルートファイルシステムの中身は2.6.29の時のオリジナルのまま展開したものでOKでした。

MINI2440でのSDカードブート2009年08月20日 17時17分53秒

MINI2440 kernel2.6.31SDカードブート

u-boot1.3.2でのSDカードブートが出来ない問題とは本質的には関係ないと思いつつ、新しいカーネルソースを取得してビルド、SDカード書き込みでブートできましたので、おさらいも含めて書いておきます。

SDカードの諸元

  • MicroSD2GB使用
  • カードアダプタでMINI2440に装着
  • ubuntu Linux9.0.4環境でFdisk
  • パーティションはFAT,Linux,swapの三つ
  • swapパーティションは使える状況になった時にすぐに対応出来るように予め確保
  • 2番めのlinuxパーティションはext3でフォーマット

USBリーダ経由でMicroSDカードをfdiskで参照したパーティションの状況です。

ディスク /dev/sdd: 2007 MB, 2007498752 バイト
ヘッド 64, セクタ 63, シリンダ 972
Units = シリンダ数 of 4032 * 512 = 2064384 バイト
Disk identifier: 0x00000000

デバイス ブート     始点        終点    ブロック   Id システム
/dev/sdd1               1         103      207616+   6  FAT16
/dev/sdd2             104         815     1435392   83  Linux
/dev/sdd3             816         972      316512   82  Linux  スワップ / Solaris

u-bootのビルド

もともと預った時点のNAND Flashの状態のu-bootを使用していますが、http://wiki.linuxmce.org/index.php/Mini2440にある手順のとおりにソース取得、ビルド可能です。

クロス環境は一貫しておいた方が良いので、カーネルビルドも含めて正式サイトで紹介されているarm-linux-gcc-4.3.2.tgzをそのまま使っています。 以下はubootソースコードの取得状況です。

$ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git
Initialized empty Git repository in /media/mini2440/uboot/mini2440/.git/
remote: Counting objects: 57585, done.
remote: Compressing objects: 100% (11111/11111), done.
remote: Total 57585 (delta 46282), reused 57433 (delta 46146)
Receiving objects: 100% (57585/57585), 24.42 MiB | 208 KiB/s, done.
Resolving deltas: 100% (46282/46282 done.
Checking out files: 100% (5232/5232), done.
$ 

続いて、コンパイル。

  • export CROSS_COMPILE=arm-none-linux-gnueabi-
  • cd mini2440
  • make mini2440_config
  • make all

出来上がったubootのイメージ(u-boot.bin)のNAND領域への書き込みはsuperviviで[a]を選択して、DNWよりダウンロードする方法で可能です。 ただし、この方法での書き込みではsaveenvで設定値の保存ができませんでしたのできちんとNAND Flashの構成を考えて設定し直しが必要だと思います。 とりあえず私はバックアップしてあったイメージをNAND Flashに書き込んだ上で、カーネルとルートファイルシステムを上書きした状態にして作業を行っています。

u-bootの設定

おさらいで、u-bootの設定も確認しておきます。

MINI2440 # printenv
bootdelay=3
baudrate=115200
ethaddr=08:08:11:18:12:27
ipaddr=10.0.0.111
serverip=10.0.0.4
netmask=255.255.255.0
usbtty=cdc_acm
mtdparts=mtdparts=mini2440-nand:256k@0(u-boot),128k(env),5m(kernel),-(root)
mini2440=mini2440=0tb
bootargs_base=console=ttySAC0,115200 noinitrd
bootargs_init=init=/sbin/init
root_nand=root=/dev/mtdblock3 rootfstype=jffs2
root_mmc=root=/dev/mmcblk0p2 rootdelay=2
root_nfs=/mnt/nfs
set_root_nfs=setenv root_nfs root=/dev/nfs rw nfsroot=${serverip}:${root_nfs}
ifconfig_static=run setenv ifconfig ip=${ipaddr}:${serverip}::${netmask}:mini2440:eth0
ifconfig_dhcp=run setenv ifconfig ip=dhcp
ifconfig=ip=dhcp
set_bootargs_mmc=setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_mmc}
set_bootargs_nand=setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_nand}
set_bootargs_nfs=run set_root_nfs; setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_nfs} ${ifconfig}
mtdids=nand0=mini2440-nand
bootargs=console=ttySAC0,115200 root=/dev/mmcblk0p2 init=/init rootfstype=ext3 rw mini2440=0tb rootdelay=3 nohz=off noinitrd
bootcmd=mmcinit; fatload mmc 0:1 0x32000000 uImage.bin; bootm 0x32000000
partition=nand0,0
mtddevnum=0
mtddevname=u-boot

Environment size: 1209/65532 bytes
MINI2440 #

SDブートできない状況

オリジナルの2.6.29カーネルをext3対応に拡張してビルドして、mkimageで変換したものをSDカードに書いたものでブートした状況は以下です。

U-Boot 1.3.2-mini2440 (Jul  8 2009 - 13:25:23)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  64 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot:  0
trying to detect SD Card...
Manufacturer:       0x1d, OEM "AD"
Product name:       "SD   ", revision 1.0
Serial number:      270541555
Manufacturing date: 3/2008
CRC:                0x71, b0 = 1
READ_BL_LEN=15, C_SIZE_MULT=7, C_SIZE=3453
size = 2329935872
reading uImage.bin

2094152 bytes read
## Booting kernel from Legacy Image at 32000000 ...
   Image Name:   supported ext3 FS
   Created:      2009-08-19   7:30:04 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2094088 Bytes =  2 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux....................................................................................................................................... done, booting the kernel.

上記のようにハングアップしてしまいます。

SDブート出来るようになった手順

u-bootも含めてNAND Flashの状態を変えないでSDカードに書くuImage.binのみ以下の手順で入れ替えます。

http://www.friendlyarm.org/topic.asp?TOPIC_ID=42の情報によりカーネルソースを取得してビルドします。

  • git clone git://repo.or.cz/linux-2.6/mini2440.git
  • cd mini2440
  • make ARCH=arm mrproper
  • make ARCH=arm mini2440_defconfig
  • make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- zImage
  • cd arch
  • cd arm
  • cd boot
  • mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage.bin

これで出来上がったuImage.binをSDカードのFAT領域にコピーします。 カーネルのバージョンは2.6.31にあがっていました。 ブート結果は以下。

U-Boot 1.3.2-mini2440 (Jul  8 2009 - 13:25:23)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  64 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot:  0
trying to detect SD Card...
Manufacturer:       0x1d, OEM "AD"
Product name:       "SD   ", revision 1.0
Serial number:      270541555
Manufacturing date: 3/2008
CRC:                0x71, b0 = 1
READ_BL_LEN=15, C_SIZE_MULT=7, C_SIZE=3453
size = 2329935872
reading uImage.bin

1999584 bytes read
## Booting kernel from Legacy Image at 32000000 ...
   Image Name:
   Created:      2009-08-20   7:42:32 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1999520 Bytes =  1.9 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux.............................................................................................................................. done, booting the kernel.
Linux version 2.6.31-rc4 (sakamoto@sakamoto-laptop) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #1 Thu Aug 20 16:02:35 JST 2009
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: console=ttySAC0,115200 root=/dev/mmcblk0p2 init=/init rootfstype=ext3 rw mini2440=0tb rootdelay=3 nohz=off noinitrd
PID hash table entries: 256 (order: 8, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60712KB available (3500K code, 414K data, 132K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:85
irq: clearing pending status 02000000
irq: clearing subpending status 00000002
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
MINI2440: Option string mini2440=0tb
MINI2440: LCD [0:240x320] 1:800x480 2:1024x768
Platform driver 's3c24xx-adc' needs updating - please use dev_pm_ops
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
bio: create slab <bio-0> at 0
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Platform driver 's3c-i2c' needs updating - please use dev_pm_ops
s3c-i2c s3c2440-i2c: slave address 0x10
s3c-i2c s3c2440-i2c: bus frequency set to 98 KHz
s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
JFFS2 version 2.2. (NAND) c 2001-2006 Red Hat, Inc.
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Platform driver 'platform-lcd' needs updating - please use dev_pm_ops
Platform driver 'pwm-backlight' needs updating - please use dev_pm_ops
Platform driver 's3c2410-lcd' needs updating - please use dev_pm_ops
Console: switching to colour frame buffer device 60x53
fb0: s3c2410fb frame buffer device
Platform driver 's3c2412-lcd' needs updating - please use dev_pm_ops
Platform driver 's3c2440-uart' needs updating - please use dev_pm_ops
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
at24 0-0050: 1024 byte 24c08 EEPROM (writable)
dm9000 Ethernet Driver, V1.31
Platform driver 'dm9000' needs updating - please use dev_pm_ops
eth0: dm9000e at c486e300,c4872304 IRQ 51 MAC: 08:08:11:18:12:27 (chip)
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
Platform driver 's3c24xx-nand' needs updating - please use dev_pm_ops
s3c24xx-nand s3c2440-nand: Tacls=1, 9ns Twrph0=3 29ns, Twrph1=2 19ns
s3c24xx-nand s3c2440-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "u-boot"
ftl_cs: FTL header not found.
0x000000040000-0x000000060000 : "u-boot-env"
0x000000060000-0x000000560000 : "kernel"
0x000000560000-0x000004000000 : "root"
ftl_cs: FTL header not found.
Platform driver 's3c2410-spi' needs updating - please use dev_pm_ops
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
Platform driver 's3c2410-usbgadget' needs updating - please use dev_pm_ops
Platform driver 's3c2440-usbgadget' needs updating - please use dev_pm_ops
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
mice: PS/2 mouse device common for all mice
Platform driver 'gpio-keys' needs updating - please use dev_pm_ops
input: gpio-keys as /devices/platform/gpio-keys/input/input0
Platform driver 's3c2410-ts' needs updating - please use dev_pm_ops
Platform driver 's3c2440-ts' needs updating - please use dev_pm_ops
s3c2440-ts s3c2440-ts: Starting
  Created group ts filter len 12 depth 2 close 10 thresh 6
  Created Median ts filter len 20 depth 2 dec 24
  Created Mean ts filter len 4 depth 2 thresh 65535
  Created Linear ts filter depth 2
s3c2440-ts s3c2440-ts: 4 filter(s) initialized
s3c2440-ts s3c2440-ts: successfully loaded
input: s3c2410 TouchScreen as /devices/virtual/input/input1
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
Platform driver 's3c2410-rtc' needs updating - please use dev_pm_ops
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
Platform driver 's3c2410-wdt' needs updating - please use dev_pm_ops
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
Platform driver 's3c-sdhci' needs updating - please use dev_pm_ops
Platform driver 's3c2410-sdi' needs updating - please use dev_pm_ops
Platform driver 's3c2412-sdi' needs updating - please use dev_pm_ops
Platform driver 's3c2440-sdi' needs updating - please use dev_pm_ops
mapped channel 0 to 0
s3c2440-sdi s3c2440-sdi: powered down.
s3c2440-sdi s3c2440-sdi: initialisation done.
s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
Registered led device: led1
Registered led device: led2
Registered led device: led3
Registered led device: led4
Registered led device: backlight
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).
s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SD    1.86 GiB
 mmcblk0: p1 p2 p3
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.20.
Platform driver 'soc-audio' needs updating - please use dev_pm_ops
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
  #0: S3C24XX_UDA134X (UDA134X)
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
s3c2410-rtc s3c2410-rtc: setting system clock to 2009-08-21 09:51:37 UTC (1250848297)
Waiting 3sec before mounting root device...
kjournald starting.  Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on mmcblk0p2, internal journal
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with writeback data mode.
VFS: Mounted root (ext3 filesystem) on device 179:2.
Freeing init memory: 132K
Failed to execute /init.  Attempting defaults...
mount: mounting none on /proc/bus/usb failed: No such file or directory
FAT: codepage cp437 not found
FAT: codepage cp437 not found
[21/Aug/2009:01:51:51 +0000] boa: server version Boa/0.94.13
[21/Aug/2009:01:51:51 +0000] boa: server built Mar 26 2009 at 15:28:42.
[21/Aug/2009:01:51:51 +0000] boa: starting server pid=786, port 80

open device leds: No such file or directory
Try to bring eth0 interface up......eth0: link down
Done

Please press Enter to activate this console.
[root@FriendlyARM /]#

おまけ

既に述べたように、NAND FlashにはU-boot,2.6.29kernel,2.6.29rootfsが書き込んであります。 この状態でU-bootの設定はSDメモリーカードからの起動に設定してあるのですが、NOR Flashから起動して[b]を入力すると、NANDに書き込んであるカーネルとファイルシステムで起動します。

##### FriendlyARM BIOS for 2440 #####
[x] bon part 0 320k 2368k
[v] Download vivi
[k] Download linux kernel
[y] Download root_yaffs image
[c] Download root_cramfs image
[a] Absolute User Application
[n] Download Nboot
[e] Download Eboot
[i] Download WinCE NK.nb0
[w] Download WinCE NK.bin
[d] Download & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the nand flash
[p] Partition for Linux
[b] Boot the system
[s] Set the boot parameters
[t] Print the TOC struct of wince
[u] Backup NAND Flash to HOST through USB(upload)
[r] Restore NAND Flash from HOST through USB
[q] Goto shell of vivi
Enter your selection: b
Copy linux kernel from 0x00050000 to 0x30008000, size = 0x00200000 ... done
zImage magic = 0x016f2818
Setup linux parameters at 0x30000100
linux command line is: "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
MACH_TYPE = 782
NOW, Booting Linux......
Uncompressing Linux....................................................................................................................................... done, booting the kernel.
Linux version 2.6.29.4-FriendlyARM (sakamoto@sakamoto-laptop) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #4 Wed Aug 19 16:11:22 JST 2009
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: FriendlyARM Mini2440 development board
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
irq: clearing subpending status 00000003
irq: clearing subpending status 00000002
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttySAC0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60468KB available (3860K code, 407K data, 128K init)
SLUB: Genslabs=12, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay loop... 201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 296 bytes
NET: Registered protocol family 16
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
cfg80211: Using static regulatory domain info
cfg80211: Regulatory domain: US
        (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
        (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
        (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
cfg80211: Calling CRDA for country: US
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
yaffs Aug 19 2009 14:29:07 Installing.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered (default)
Console: switching to colour frame buffer device 30x20
fb0: s3c2410fb frame buffer device
backlight       initialized
leds    initialized
buttons initialized
pwm     initialized
adc     initialized
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
loop: module loaded
dm9000 Ethernet Driver, V1.31
Now use the default MAC address: 08:90:90:90:90:90
eth0 (dm9000): not using net_device_ops yet
eth0: dm9000e at c4810000,c4814004 IRQ 51 MAC: 08:90:90:90:90:90 (friendly-arm)
usbcore: registered new interface driver rt73usb
Linux video capture interface: v2.00
gspca: main v2.4.0 registered
usbcore: registered new interface driver conex
conex: registered
usbcore: registered new interface driver etoms
etoms: registered
usbcore: registered new interface driver finepix
finepix: registered
usbcore: registered new interface driver mars
mars: registered
usbcore: registered new interface driver ov519
ov519: registered
usbcore: registered new interface driver ov534
ov534: registered
usbcore: registered new interface driver pac207
pac207: registered
usbcore: registered new interface driver pac7311
pac7311: registered
usbcore: registered new interface driver sonixb
sonixb: registered
usbcore: registered new interface driver sonixj
sonixj: registered
usbcore: registered new interface driver spca500
spca500: registered
usbcore: registered new interface driver spca501
spca501: registered
usbcore: registered new interface driver spca505
spca505: registered
usbcore: registered new interface driver spca506
spca506: registered
usbcore: registered new interface driver spca508
spca508: registered
usbcore: registered new interface driver spca561
spca561: registered
usbcore: registered new interface driver sunplus
sunplus: registered
usbcore: registered new interface driver stk014
stk014: registered
usbcore: registered new interface driver t613
t613: registered
usbcore: registered new interface driver tv8532
tv8532: registered
usbcore: registered new interface driver vc032x
vc032x: registered
usbcore: registered new interface driver zc3xx
zc3xx: registered
usbcore: registered new interface driver ALi m5602
ALi m5602: registered
usbcore: registered new interface driver STV06xx
STV06xx: registered
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v0.1.0)
initializing s3c2440 camera interface......
s3c2440 camif init done
Loading OV9650 driver.........
SCCB address 0x60, manufacture ID 0xFFFF, expect 0x7FA2
SCCB address 0x60, manufacture ID 0xFFFF, expect 0x7FA2
No OV9650 found!!!
Driver 'sd' needs updating - please use bus_type methods
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000030000 : "supervivi"
0x000000050000-0x000000250000 : "Kernel"
0x000000250000-0x000003ffc000 : "root"
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: S3C24XX OHCI
usb usb1: Manufacturer: Linux 2.6.29.4-FriendlyARM ohci_hcd
usb usb1: SerialNumber: s3c24xx
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.
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
mice: PS/2 mouse device common for all mice
s3c2410 TouchScreen successfully loaded
input: s3c2410 TouchScreen as /devices/virtual/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
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 98 KHz
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
mapped channel 0 to 0
s3c2440-sdi s3c2440-sdi: powered down.
s3c2440-sdi s3c2440-sdi: initialisation done.
s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.18a.
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
  #0: S3C24XX_UDA134X (UDA134X)
TCP cubic registered
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
lib80211: common routines for IEEE802.11 drivers
s3c2410-rtc s3c2410-rtc: setting system clock to 2009-08-21 15:48:32 UTC (1250869712)
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
yaffs: dev is 32505858 name is "mtdblock2"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).
s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SD    1.86 GiB
 mmcblk0: p1 p2 p3
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) on device 31:2.
Freeing init memory: 128K
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[21/Aug/2009:07:48:40 +0000] boa: server version Boa/0.94.13
[21/Aug/2009:07:48:40 +0000] boa: server built Mar 26 2009 at 15:28:42.
[21/Aug/2009:07:48:40 +0000] boa: starting server pid=514, port 80

Try to bring eth0 interface up......eth0: link down
Done

Please press Enter to activate this console.
[root@FriendlyARM /]#