Google Android@CELF18
CELF18のGoogle Andoroidの発表のレポートです。
感想
今まで、Web等の記事では、VMより上の話ばかりだったので、今回の低レベルなレイヤーに関する話はとても面白かった。Linuxをカーネルだけ使うというアプローチは、これから流行りそうです。KMCのPartner-Jは使えたら面白そうです。プロセス表示機能は面白い。ただし購入してまで使おうというモチベーションは無い。待ってれば、だれかなんとかしてくれそう。
Google Android
- 京都マイクロコンピュータの辻さん
- Google AndroidのSDKが2007/11/12にリリース。ちょうどET2007の開催直前だった。
- ダウンロードにレジストレーション不要なのにびっくり
- QEMUむけのデバッガは以前から開発していて、ET2007でデモする予定だった。
- ミドルウェア(Webkit, SQLite, ,...)がネイティブコード
- dalvik VM上でアプリが動く。アプリはJava
- SDKはQEMUのARMエミュレータ上で動く
- QEMU, LinuxカーネルがGPL
- 各種ミドルウェア、JAVA仮想マシン、各種アプリケーションはバイナリ提供。Apache license。今は、ソースコードが公開されていないが、2008年中にはソースコードが公開されると言っている
- コードはオープンソースだけでない、Googleが購入したコードも含まれる。ただ、Googleが購入したコードは、ソースコードを公開できる契約になっているらしい。
- QEMU ARM
- AndroidでのQEMU
- AndroidのLinux
- 2.6.23
- goldfish HW依存のソースを追加
- CPUはARM926を想定
- ビルド環境
- KMCでやったこと
- デモ
- AndroidのLinux環境
- 動いているプロセス
- linux的には、app_processが動いている
- デーモンは数個
- 初期化も軽い 普通のコマンドはifocnfig routeくらい
- Javaについて
- 感じたこと
- 将来の予想
- もしかすると、組み込みでもPCの水平分業モデルが成立するかも(バイナリ提供にも関わらず、移植が楽)
- パッケージングの完成度は非常に高い。
- 上位アプリケーション開発のコミュニティができる可能性がある。
- 影響 (個人の考え)
- セットベンダーは悪い話ではない
- 一部のソフトウェアベンダへの影響があるかも
- KMCは
- Q&A
- Q Partner-Jのプロセス表示ははスレッドとプロセスの違いがわかるのか
- A 分かる。マルチスレッドなアプリになっている。スレッドの種類は不明、独自のスレッドかも (Linux thread, NPL threead)
- Q スレッド、プロセスの数は?
- A スレッド、プロセスあわせて83個
- Q マルチコア対応は?
- A カーネルが対応すれば住むはず。QEMUの対応は良くわからない。MPCORE上でも動くんじゃないかなぁ
- Q ルートファイルシステムはどこに置かれているんでしょうか
- A シミュレーター上では、FlashのHWシミュレータ経由でマウントしている。実機では、サイズは、30Mのフラッシュに収まる。VMのキャッシュがディスクを結構使用する。
- Q 画面のバッファは
- A 次の資料で説明する。
- Q GDBはうごくんですか
- A QEMUはGDBのインターフェイスを持っているので、動いているかもしれない。ハードウェアブレイクポイントとかは使えない。
- Q 画面の解像度は
- A 変更できる
- Q アプリケーションのセキュリティは
- A J2SEのモデルを使うんじゃないかなぁ
実機でGoogle Android
- 富士通ソフトウェアテクノジーズの近藤さん
- willcom core module forum用に移植した
- カーネルを移植すれば動くと考えたら、そうだった。
- dmesgを解析
- adbでカーネルコンフィグを取り出した
- コンフィグにEABIとTHUMB命令が必要
- OpenBinder
- root fileを取り出す。
- 4つのファイルを作ったら、起動時の赤球が動き出した
- straceでひたすら調べる
- /dev/bider のメジャー番号はあわせましょう
- C言語アプリはstatic linkすれば作れる
- 画面がちらつくので、フレームバッファは2画面分用意する
- 電話機能
- rild が司る
- 各通信方式に応じて専用のDLLをローディングする。
- wsimdを作った。
- 本当はlibwsim-ril.soを作りたい。が、情報がない。
- ボード