ラベル ICS の投稿を表示しています。 すべての投稿を表示
ラベル ICS の投稿を表示しています。 すべての投稿を表示

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
(以下略)


BeagleBoard-xMでICS(Android4.0)―自前ビルド版―

前のポストではPre-built Imageを使いましたが、ソースから自分でビルドしてICSをBeagleBoard-xMで動かしてみました。

これも基本的には「ICSonBeagleboard_WithSGX」の手順の通りですが、いくつか補足を付けてステップを説明します。
補足はこんな風にイタリックにしています。

私のPC環境ですが

  • OSはUbuntu 10.10 64bit
  • CPUはCore2 Quad Q9650 (3.00GHz)
  • メモリは4GB

といったところです。

作業には以下が必要です。
  • sudoできるアカウント
  • microSDにアクセスできる (USBのアダプタとか)
  • HDDの空き容量25GB程度
  • 作業時間として、ダウンロードから始めて最速でも約2,3時間

ビルドは以下の方針で進めます。
  • x-loaderはビルドしない (Pre-built Imageのを使う)
  • u-bootはビルドしない (Pre-built Imageのを使う)
  • kernel, Android, SGX対応モジュールをビルドする
何かカスタマイズするにしても、通常、x-loaderやu-bootは変更しないことが多いです。
あるとして、ブート手順の早い側ではu-bootの起動スクリプトboot.scrを変更することがあるぐらいです。

やっと手順です。

シェルはbash (つまりデフォルトのまま)を使って、少なくとも作業するターミナルでは環境変数LANGをCにします。
export LANG=C

repoコマンド用にディレクトリを用意します。
mkdir -p ~/bin
PATH=~/bin:$PATH
PATHの設定は~/.bashrcにしておくのがいいでしょう。

次にrepoコマンドを用意します。
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod +x ~/bin/repo
既にrepoコマンドを用意してある場合は、改めてダウンロードする必要はありません。
でも時々アップデートされているので、最新のを使うのがいいかもしれません。

これまた時々、ダウンロードに失敗して、エラーのHTML記述が~/bin/repoに記録されることがあります。
正しくスクリプトがダウンロードされたか確認します。
head ~/bin/repo
先頭の行が#!/bin/shとなっていたら大丈夫でしょう。

レポジトリを置くディレクトリを用意します。
mkdir ~/rowboat-android
cd ~/rowboat-android
ここが20GBぐらいになりますので、空き容量の十分な場所に用意してください。

レポジトリを用意します。
repo init -u git://gitorious.org/rowboat/manifest.git -m rowboat-ics.xml
元Wikiはちょっと誤字になってます(repo init -uが余分)。
若干時間かかります。
repo sync
repo syncには1時間以上かかります(インターネット接続環境にもよります)。
エラーになることがありますが、最初からやり直さずに(つまりディレクトリ消したりせずに)、何回か上のコマンド実行すれば大抵大丈夫です。

元WikiではRowboatTools.tar.gzをダウンロードしていますが、今回のビルド方針では不要なのでダウンロードしません。

クロスコンパイラへのパスを準備します。
export PATH=~/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

元Wikiではx-loaderのビルドしていますが、ビルド方針の通りスキップします。

同様にu-bootのビルドもスキップします。
u-bootをビルドすると生成されるmkimageが後で必要になりますが、Ubuntuのパッケージのを使えばOKです。
インストールは sudo apt-get install uboot-mkimage とします。

kernel、Android、SGXモジュールをビルドします。
make TARGET_PRODUCT=beagleboard OMAPES=5.x
数十分かかります。マルチコアな環境なら-j 4などと並列実行のオプション付けると高速化できます。

ここから元Wikiとちょっと違います。

microSDカードに書く準備としてrootfs.tar.bz2を作ります。
make fs_tarball
これでout/target/product/beagleboard/rootfa.tar.bz2が生成されます。

別のディレクトリでPre-built Imageをダウンロード、展開します。
wget http://rowboat.googlecode.com/files/beagleboard_xm_sgx.tar.gz
tar xfz beagleboard_xm_sgx.tar.gz
自前ビルドのものに置き換えるのでPre-built Imageのファイルを消します。
cd beagleboard_xm
rm Boot_Images/uImage
rm Filesystem/rootfs.tar.bz2

自前ビルドした結果を配置してmicroSDカードに書き込みます。
cp ~/rowboat-android/kernel/arch/arm/boot/uImage Boot_Images/
cp ~/rowboat-android/out/target/product/beagleboard/rootfa.tar.bz2 Filesystem/
sudo ./mkmmc-android.sh /dev/sdb
環境によってmicroSDが/dev/sdbだったり/dev/sdcだったりします。
間違ってHDDのデバイスを指定してしまうと大変なことになるので要注意です。

あとは完成したmicroSDをBeagleBoard-xMに刺して電源投入して起動を待ちます。

2012/02/23

BeagleBoard-xMでICS(Android4.0)

rowboatのWikiで「ICSonBeagleboard」というのはかなり以前からあったのですが、最近「ICSonBeagleboard_WithSGX」というページもできていて、自分のBeagleBoard-xMで試してみました。

補足とかは後ろに回すとして、ともかく動かしてみます。

基本的にWikiの最初「Out of the Box Demo」に書いてある通りです。
追記するとすれば、
  • Linux PCで作業します
  • export LANG=Cしておきます
  • microSDが/dev/sdbなのか、sdc, sdd, ...なのか確認して間違えないよう指定します
といったところでしょうか。

microSDカードは4GBで約1,000円だったSandiskのを使っています。
SDカードへの変換アダプタも付いているのですが、USBアダプタがmicroSDを直刺しできるので、変換アダプタは使わずにUSB経由で書き込んでいます。

microSDの準備ができたら、microSDをBeagleBoard-xMにセットして電源On!
BeagleBoard-xMのrev.Cに次のものを接続して試しました。
  • PC用モニタ(HDMI-DVIケーブル経由)
  • USBマウス
  • Ethernet
  • シリアルケーブル (USB-シリアル変換で作業PCに接続)
数分で無事立ち上がってきました。

写真は言語を「日本語」に設定した後で撮影したものです。
Androidのバージョンは4.0.1のようです。

シリアルコンソール経由で設定してやると、Ethernet経由でWebのブラウズもできそうです。

シリアルコンソールからの設定は
netcfg usb0 dhcp
とします。これで、DHCP有効なLAN環境ならEthernetにIPアドレスが割り当てられ通信できるようになります。
おそらく、USB経由のadb shellでも同じコマンドを実行可能と思います。

ただし、この方法ではAndroidはインターネット接続環境が有効であると認識していないかもしれません。
アプリケーションによっては、「インターネット接続がありません」等のエラーになるかもしれません。
このあたりは今回は確認しませんでした。

――と、ここまでうまく動いているように見えますが、
シリアルコンソールも併せて見ていると、沢山エラーメッセージが出ます。
たとえば、上のブラウザ画面が出ている時点で

こんな感じです。

あと、1分間放っておくとスリープして帰ってきません。
どうも画面などから見るに、電池残量がほぼ0で充電器つながっていないという認識のようです。
もしかするとスリープというより中途半端にシャットダウンしているのかもしれません。


ここから後ろは、少しだけ補足です。

rowboatというのは、米Texas Instruments社(TI社)が製造しているARM搭載アプリケーションプロセッサチップでAndroidを動くようにしよう、というオープンソースのプロジェクトです。

BeagleBoardやBeagleBoard-xMはTI製のSitaraやDavinciを搭載しているので、rowboatの成果が使えます。
TIからリリースされるAndroid DevKit自体、rowboatの成果から派生しているようです。

With SGXというのは、グラフィックアクセラレータのSGXを有効にしたバージョンということです。主にはOpenGL経由の描画に効くらしいです。

SGXというのは英Imagination Technologies社のPowerVRのシリーズの1つで、ARMプロセッサコアとは別にグラフィックアクセラレータとしてSitaraやDavinciに内蔵されている回路です。
Androidスマートフォンだけでなく、非Androidな携帯電話にも多く搭載されているそうです。
TI社は、ARM社からARMプロセッサコアの設計図やライセンスを、Imagination Technologies社からSGXの設計図やライセンスをそれぞれ購入して、周辺回路とあわせて、自社で半導体として製造・販売しているわけですね。

実はBeagleBoard-xMに搭載されているDavinciというのは、ARMのほかにTI社製のDSPコアも内蔵しています。
DSPコア部分をうまく使えれば、動画像の圧縮・再生などのスペックが向上するはずで、他力本願ながらDSPコア部分も活用するAndroidが出ないかな~と期待しています。