BeagleBoardへのAndroid移植

■カーネルのコンパイル


以下の手順でカーネル用のコンパイラを入手できる。

1. Tool chain to use to build kernel
The tool chain version used is Code Sourcery ARM Sourcery G++ 2007q3.
http://www.codesourcery.com/gnu_toolchains/arm/releases/2007q3

2. How to get the base tree

http://source.mvista.com/git/?p=linux-omap-2.6.git;a=snapshot;h=33d6b...
and extract
tar xfovz linux-omap-2.6-33d6bf2227775d327cbd02ed43180383d8fff88a.tar.gz

3. Download patch and extract it.

4. How to Build kernel
cd linux-omap-2.6
patch -p1 < patch
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_android_defconfig
make CROSS_COMPILE=arm-none-linux-gnueabi- uImage

You can find Kernel binary uImage will be generated at arch/arm/boot/directory.



コンパイルしたカーネル(?)イメージ:uImageを
FAT32にフォーマットしたSDカードに載せて起動する
以下、ブートログ

Texas Instruments X-Loader 1.41
Starting on with MMC
Reading boot sector

717372 Bytes Read from MMC
Starting OS Bootloader from MMC...


U-Boot 1.3.3 (Jul 10 2008 - 16:30:47)

OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
OMAP3 Beagle Board + LPDDR/NAND
DRAM: 128 MB
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Audio Tone on Speakers ... complete
Hit any key to stop autoboot: 0
OMAP3 beagleboard.org # mmcinit
OMAP3 beagleboard.org # fatload mmc 0 0x80300000 uImage
reading uImage

1860700 bytes read
OMAP3 beagleboard.org # setenv bootargs 'console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p1 rootfstype=ext3 rw rootdelay=1 nohz=off video=omapfb:mode:1280x1024@60 init=/init'
OMAP3 beagleboard.org # bootm 0x80300000
## Booting kernel from Legacy Image at 80300000 ...
Image Name: Linux-2.6.27-omap1-05165-g5dae86
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1860636 Bytes = 1.8 MB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux........................................................................................................................ done, booting the kernel.
Linux version 2.6.27-omap1-05165-g5dae861 (matsuda@vm-ubuntu) (gcc version 4.2.1 (CodeSourcery Sourcery G++ Lite 2007q3-51)) #1 Thu Dec 25 21:47:59 JST 2008
CPU: ARMv7 Processor [411fc082] revision 2 (ARMv7), cr=00c5387f
Machine: OMAP3 Beagle Board
Memory policy: ECC disabled, Data cache writeback
OMAP3430 ES2.1
SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000
CPU0: L1 I VIPT cache. Caches unified at level 2, coherent at level 3
CPU0: Level 1 cache is separate instruction and data
CPU0: I cache: 16384 bytes, associativity 4, 64 byte lines, 64 sets,
supports RA
CPU0: D cache: 16384 bytes, associativity 4, 64 byte lines, 64 sets,
supports RA WB WT
CPU0: Level 2 cache is unified
CPU0: unified cache: 262144 bytes, associativity 8, 64 byte lines, 512 sets,
supports WA RA WB WT
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p1 rootfstype=ext3 rw rootdelay=1 nohz=off video=omapfb:mode:1280x1024@60 init=/init
clock: virt_vdd1_prcm_set: missing clockdomainclock: virt_vdd2_prcm_set: missing clockdomainClocking rate (Crystal/DPLL/ARM core): 26.0/332/500 MHz
GPMC revision 5.0
IRQ: Found an INTC at 0xd8200000 (revision 4.0) with 96 interrupts
Total of 96 interrupts on 1 active controller
OMAP34xx GPIO hardware version 2.5
PID hash table entries: 512 (order: 9, 2048 bytes)
OMAP clockevent source: GPTIMER12 at 32768 Hz
Console: colour dummy device 80x30
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: 125552KB available (3432K code, 648K data, 132K init)
Calibrating delay loop... 498.87 BogoMIPS (lpj=1945600)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 288 bytes
NET: Registered protocol family 16
Found NAND on CS0
Registering NAND on CS0
Switched to new clocking rate (Crystal/DPLL3/MPU): 26.0/332/166 MHz
OMAP DMA hardware revision 4.0
USB: No board-specific platform config found
i2c_omap i2c_omap.1: bus 1 rev3.12 at 2600 kHz
twl4030: PIH (irq 7) chaining IRQs 368..375
twl4030: power (irq 373) chaining IRQs 376..383
twl4030: gpio (irq 368) chaining IRQs 384..401
i2c_omap i2c_omap.3: bus 3 rev3.12 at 400 kHz
twl4030_usb twl4030_usb: Initialized TWL4030 USB module
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
musb_hdrc: version 6.0, musb-dma, host, debug=0
musb_hdrc: USB Host mode controller at d80ab000 using DMA, IRQ 92
musb_hdrc musb_hdrc: MUSB HDRC host driver
musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
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
NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (double precision)
ashmem: initialized
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
JFFS2 version 2.2. (NAND) c 2001-2006 Red Hat, Inc.
msgmni has been set to 245
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
omapfb: configured for panel omap3beagle
omapfb: DISPC version 3.0 initialized
Console: switching to colour frame buffer device 128x48
omapfb: Framebuffer initialized. Total vram 3145728 planes 1
omapfb: Pixclock 48000 kHz hfreq 40.5405 kHz vfreq 51.3 Hz
Serial: 8250/16550 driver4 ports, IRQ sharing enabled
serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654
serial8250.0: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654
serial8250.0: ttyS2 at MMIO 0x49020000 (irq = 74) is a ST16654
console [ttyS2] enabled
brd: module loaded
loop: module loaded
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver dm9601
usbcore: registered new interface driver net1080
usbcore: registered new interface driver cdc_subset
usbcore: registered new interface driver zaurus
i2c /dev entries driver
Driver 'sd' needs updating - please use bus_type methods
omap2-nand driver initializing
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit)
cmdlinepart partition parsing not available
Creating 5 MTD partitions on "omap2-nand":
0x00000000-0x00080000 : "X-Loader"
0x00080000-0x00260000 : "U-Boot"
0x00260000-0x00280000 : "U-Boot Env"
0x00280000-0x00680000 : "Kernel"
0x00680000-0x10000000 : "File System"
usbmon: debugfs is not available
twl4030_rtc twl4030_rtc: rtc core: registered twl4030_rtc as rtc0
twl4030_rtc twl4030_rtc: Power up reset detected.
twl4030_rtc twl4030_rtc: Enabling TWL4030-RTC.
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
logger: created 64K log 'log_main'
logger: created 256K log 'log_events'
logger: created 64K log 'log_radio'
Advanced Linux Sound Architecture Driver Version 1.0.17.
usbcore: registered new interface driver snd-usb-audio
ASoC version 0.13.2
OMAP3 Beagle SoC init
TWL4030 Audio Codec init
asoc: twl4030 omap-mcbsp-dai mapping ok
ALSA device list:
#0: omap3beagle (twl4030)
TCP cubic registered
NET: Registered protocol family 17
NET: Registered protocol family 15
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
Power Management for TI OMAP3.
VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1
twl4030_rtc twl4030_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
Waiting 1sec before mounting root device...
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SD card at address 0002
mmcblk0: mmc0:0002 00000 994816KiB
mmcblk0: p1
List of all partitions:
1f00 512 mtdblock0 (driver?)
1f01 1920 mtdblock1 (driver?)
1f02 128 mtdblock2 (driver?)
1f03 4096 mtdblock3 (driver?)
1f04 255488 mtdblock4 (driver?)
b300 994816 mmcblk0 driver: mmcblk
b301 994784 mmcblk0p1
No filesystem could mount root, tried: ext3
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,1)



以前より少し進んだ気がする.

■ルートファイルシステムの作成


After compilation of build, root file system of android is generated at ~/android_build/out/target/product/generic
$cd ~/android_build/out/target/product/generic
$mkdir ~/Android_rfs
$cp -a root/* ~/Android_rfs
$cp -a data/* ~/Android_rfs/data/
$cp -a system/* ~/ Android_rfs/system/



起動時のエラーを見る限りファイルシステムがまずいんだろうか。
ファイルシステムのビルド手順に関して見直しが必要なんだろうか。

と思ったらGoogle Groupでファイルシステムごと用意してくれたbinaryを発見しました.

Hi all,
You can download binaries (kernel uImage and Android RFS) from
following link:-

http://www.embinux.com/download_beagle.php


Regards,

--
Rupesh Gujare
http://embinux.com



1GBのSDカードを二つのパーティションに分割
一つ目のパーティションをFAT32,
二つ目のパーティションをext3でフォーマット.

OMAP3 beagleboard.org # mmcinit
OMAP3 beagleboard.org # fatload mmc 0 0x80300000 uImage
OMAP3 beagleboard.org # setenv bootargs 'console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 rw rootdelay=1 nohz=off video=omapfb:mode:1280x1024@60 init=/init'
OMAP3 beagleboard.org # bootm 0x80300000



難なく起動した.
実機移植完了??


■ドライバの整備


USB接続のLANケーブルおよび無線LANアダプタを使ってみようと思います。

コメント(0)

コメントを投稿する