2012/02/24

BeagleBoard-xMでICS(Android4.0)―rev.Bでの動作―

BeagleBoard-xMにはrev.A、rev.B、rev.Cとリビジョンがあって、特定バージョンのAndroidはrev.Bで動いてrev.Cで動かないとか、その逆とかいろいろ起こります。

というので、ICS (Android4.0)ではどうかちょっと見てみました。

結果から言えば、rev.Bでもrev.Cでも同じ程度には動きました。

そもそも、rev.Bとrev.Cで何が違うのかと言えば「BeagleBoard-xM System Reference Manual」にいろいろ記述してあって、いくつかの変更点から抜粋するに
Changed the default power state of the USB HUB to OFF as an added layer of protection to make sure the USB power rails are off on initial power up. This will minimize the initial current drain on the board. SW can turn on the HUB power as needed by setting the TPS65950 LEDA/VIBRA.P pin LO to turn it on.
これが効き目大きいかなと。
CPU含んでいるチップのリビジョンも違うから影響あるかもしれないけど、そこまでは追いかけてないです。

なのでrev.Bでもrev.Cでも動くためには「kernel内のBeagleBoard-xM固有の初期化部分」が対応する必要があるのだと認識しています。

後で書くコンソールメッセージの比較で見ると、x-loaderの表示メッセージも違うから、何かあるのかも?
u-bootの方も何か差分あった気がしたけど、思い出せない……。

で、ともかく、この辺がrev.B、rev.C両対応になったのがTI_Android_GingerBread_2_3_4_DevKit_2_1以降ではなかったかと思います。
TIからのリリース版はそれぞれ試したことはあるはずですが、忘れちゃいました。

と、それだけの話なんですが、せっかくなので、ICS起動時のシリアルコンソールのメッセージをrev.Bとrev.Cで比較してみました。
ICSより前のバージョンでも似たようなものだと想像できるので、何かのトラブルシューティングに使えるかも?

結局
  • x-loaderは基板のリビジョンを認識している (が、処理も変えているかは確認してないので不明)
  • u-bootはチップのリビジョンを認識して表示しているだけ?
  • kernelはチップのリビジョンを認識している (が、処理も変えているかは確認していないので不明)
  • kernelは基板のリビジョンも認識している (そして、初期化処理を変えていたはず)
というのが現時点で判明したことになります。
余裕があれば各ソースコードを見てみたいと思います。


rev.Bのが以下になります。rev.Cと差分ある箇所に色付けてみました。
Texas Instruments X-Loader 1.51 (Jul 11 2011 - 21:11:32)
Unsupported Chip!
Beagle xM Rev A
Starting X-loader on MMC
Reading boot sector
213256 Bytes Read from MMC
Starting OS Bootloader from MMC...
Starting OS Bootloader...

U-Boot 2010.06 (Jul 08 2011 - 04:37:45)
OMAP34xx/35xx-GP ES2.0, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  384 MiB
NAND:  HW ECC [Kernel/FS layout] selected
0 MiB
*** Warning - bad CRC or NAND, using default environment
In:    serial
Out:   serial
Err:   serial
Beagle xM Rev A/C
Die ID #49c80001************************
Hit any key to stop autoboot:  0
mmc1 is available
reading boot.scr
479 bytes read
Running bootscript from mmc ...
## Executing script at 82000000
reading uImage
2747724 bytes read
***** Kernel: /dev/mmcblk0p1/uImage *****
***** RootFS: /dev/mmcblk0p2 *****
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-2.6.37-g1236e9f
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2747660 Bytes = 2.6 MiB
   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.37-g1236e9f (ise@*) (gcc version 4.4.3 (GCC) ) #1 Wed Feb 22 16:03:22 JST 2012
CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: OMAP3 Beagle Board
Reserving 8388608 bytes SDRAM for VRAM
Memory policy: ECC disabled, Data cache writeback
OMAP3630 ES1.1 (l2cache iva sgx neon isp 192mhz_clk )
SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x10000
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 62976
Kernel command line: console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M omapdss.def_disp=dvi omapfb.mode=dvi:1024x768-16
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 248MB = 248MB total
Memory: 245292k/245292k available, 16852k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
    vmalloc : 0xd0800000 - 0xf8000000   ( 632 MB)
    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .init : 0xc0008000 - 0xc003b000   ( 204 kB)
      .text : 0xc003b000 - 0xc0531000   (5080 kB)
      .data : 0xc0532000 - 0xc0576c80   ( 276 kB)
NR_IRQS:409
Clocking rate (Crystal/Core/MPU): 26.0/400/600 MHz
Reprogramming SDRC clock to 400000000 Hz
dpll3_m2_clk rate change failed: -22
IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
Total of 96 interrupts on 1 active controller
GPMC revision 5.0
Trying to install interrupt handler for IRQ402
Trying to install interrupt handler for IRQ403
Trying to install interrupt handler for IRQ404
Trying to install interrupt handler for IRQ405
Trying to install interrupt handler for IRQ406
Trying to install interrupt handler for IRQ407
Trying to install interrupt handler for IRQ408
Trying to install type control for IRQ409
Trying to set irq flags for IRQ409
OMAP clockevent source: GPTIMER1 at 32768 Hz
Console: colour dummy device 80x30
Calibrating delay loop... 597.64 BogoMIPS (lpj=2334720)
pid_max: default: 32768 minimum: 301
Security Framework initialized
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
regulator: core version 0.5
regulator: dummy:
NET: Registered protocol family 16
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
omap_mux_init: Add partition: #1: core, flags: 0
OMAP3 Beagle Rev: xM
Found NAND on CS0
Registering NAND on CS0
Unable to get DVI reset GPIO
hw-breakpoint: debug architecture 0x4 unsupported.
OMAP DMA hardware revision 5.0
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
omap_i2c omap_i2c.1: bus 1 rev4.0 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
regulator: VUSB1V5: 1500 mV normal standby
regulator: VUSB1V8: 1800 mV normal standby
regulator: VUSB3V1: 3100 mV normal standby
twl4030_usb twl4030_usb: Initialized TWL4030 USB module
regulator: VMMC1: 1850 <--> 3150 mV at 3000 mV normal standby
regulator: VDAC: 1800 mV normal standby
regulator: VDVI: 1800 mV normal standby
regulator: VSIM: 1800 <--> 3000 mV at 1800 mV normal standby
regulator: VAUX3: 1800 mV normal standby
regulator: VAUX4: 1800 mV normal standby
omap_i2c omap_i2c.2: bus 2 rev4.0 at 400 kHz
omap_i2c omap_i2c.3: bus 3 rev4.0 at 100 kHz
Advanced Linux Sound Architecture Driver Version 1.0.23.
Switching to clocksource 32k_counter
musb-hdrc: version 6.0, otg (peripheral+host), debug=0
musb-hdrc musb-hdrc.0: dma type: dma-inventra
musb-hdrc musb-hdrc.0: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
(以下略)

rev.Cのが以下になります。
Texas Instruments X-Loader 1.51 (Jul 11 2011 - 21:11:32)
Unsupported Chip!
Beagle xM Rev C
Starting X-loader on MMC
Reading boot sector
213256 Bytes Read from MMC
Starting OS Bootloader from MMC...
Starting OS Bootloader...

U-Boot 2010.06 (Jul 08 2011 - 04:37:45)
OMAP34xx/35xx-GP ES2.1, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  384 MiB
NAND:  HW ECC [Kernel/FS layout] selected
0 MiB
*** Warning - bad CRC or NAND, using default environment
In:    serial
Out:   serial
Err:   serial
Beagle xM Rev A/C
Die ID #3e7e0002**********************
Hit any key to stop autoboot:  0
mmc1 is available
reading boot.scr
479 bytes read
Running bootscript from mmc ...
## Executing script at 82000000
reading uImage
2747724 bytes read
***** Kernel: /dev/mmcblk0p1/uImage *****
***** RootFS: /dev/mmcblk0p2 *****
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-2.6.37-g1236e9f
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2747660 Bytes = 2.6 MiB
   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.37-g1236e9f (ise@*) (gcc version 4.4.3 (GCC) ) #1 Wed Feb 22 16:03:22 JST 2012
CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: OMAP3 Beagle Board
Reserving 8388608 bytes SDRAM for VRAM
Memory policy: ECC disabled, Data cache writeback
OMAP3630 ES1.2 (l2cache iva sgx neon isp 192mhz_clk )
SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x10000
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 62976
Kernel command line: console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M omapdss.def_disp=dvi omapfb.mode=dvi:1024x768-16
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 248MB = 248MB total
Memory: 245292k/245292k available, 16852k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
    vmalloc : 0xd0800000 - 0xf8000000   ( 632 MB)
    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .init : 0xc0008000 - 0xc003b000   ( 204 kB)
      .text : 0xc003b000 - 0xc0531000   (5080 kB)
      .data : 0xc0532000 - 0xc0576c80   ( 276 kB)
NR_IRQS:409
Clocking rate (Crystal/Core/MPU): 26.0/400/600 MHz
Reprogramming SDRC clock to 400000000 Hz
dpll3_m2_clk rate change failed: -22
IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
Total of 96 interrupts on 1 active controller
GPMC revision 5.0
Trying to install interrupt handler for IRQ402
Trying to install interrupt handler for IRQ403
Trying to install interrupt handler for IRQ404
Trying to install interrupt handler for IRQ405
Trying to install interrupt handler for IRQ406
Trying to install interrupt handler for IRQ407
Trying to install interrupt handler for IRQ408
Trying to install type control for IRQ409
Trying to set irq flags for IRQ409
OMAP clockevent source: GPTIMER1 at 32768 Hz
Console: colour dummy device 80x30
Calibrating delay loop... 597.64 BogoMIPS (lpj=2334720)
pid_max: default: 32768 minimum: 301
Security Framework initialized
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
regulator: core version 0.5
regulator: dummy:
NET: Registered protocol family 16
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
OMAP GPIO hardware version 2.5
omap_mux_init: Add partition: #1: core, flags: 0
OMAP3 Beagle Rev: xM C
Found NAND on CS0
Registering NAND on CS0
Unable to get DVI reset GPIO
hw-breakpoint: debug architecture 0x4 unsupported.
OMAP DMA hardware revision 5.0
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
omap_i2c omap_i2c.1: bus 1 rev4.0 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
regulator: VUSB1V5: 1500 mV normal standby
regulator: VUSB1V8: 1800 mV normal standby
regulator: VUSB3V1: 3100 mV normal standby
twl4030_usb twl4030_usb: Initialized TWL4030 USB module
regulator: VMMC1: 1850 <--> 3150 mV at 3000 mV normal standby
regulator: VDAC: 1800 mV normal standby
regulator: VDVI: 1800 mV normal standby
regulator: VSIM: 1800 <--> 3000 mV at 1800 mV normal standby
regulator: VAUX3: 1800 mV normal standby
regulator: VAUX4: 1800 mV normal standby
omap_i2c omap_i2c.2: bus 2 rev4.0 at 400 kHz
omap_i2c omap_i2c.3: bus 3 rev4.0 at 100 kHz
Advanced Linux Sound Architecture Driver Version 1.0.23.
Switching to clocksource 32k_counter
musb-hdrc: version 6.0, otg (peripheral+host), debug=0
musb-hdrc musb-hdrc.0: dma type: dma-inventra
musb-hdrc musb-hdrc.0: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
(以下略)


0 件のコメント:

コメントを投稿