内容
◆発表内容
1.@hermit4 :「Android Init Process」(発表資料)○ 自己紹介職業:プログラマ○ 前回の勉強会について回想シーンブート周りを知りたい:@pakuqi さんinit.rc を2行で説明した今回、掘り下げて説明をする。○ init.rc の概要bootloader が kernel をコールする。通常は /etc/inittabアンドロイドでは /system/etc/init.rcシステムコアの配下に init.rc が置いてる○ ファイルの説明サービスがあるフォーマットについて説明・Actionon<Target>earli-init, init, early-boot, bootコマンドの説明(2.2)・chdir・trigger・copy - eclair・chroot・import・ClassStart、ClassStopinit.rcCluster - defaultToriger の説明copyLog Lebel (Notice、Lebel 6)Device・ServiceOption の説明capability froyo ? 用途は不明Console の説明○ その他の説明Service の一覧内容の確認Zygote をとりあげて説明DalvikVM の説明は省略JAVA クラス読み込みArrayを生成するZygote Init の説明Zygote の Fork System の説明を行ったSystemServer の説明を行ったFork はC実装はJAVAServerThred の説明暗号化のサービス重要なサービスが立ち上がって行くZygote はシステムのサービスとして残るLogCat で Zygote の動きを説明エミュレータのバイスで説明稼働中のサービスを説明次回は詳しく説明する。○ 最後にまとめ・Init の構文を説明・アクションが呼び出させるコマンド・起動サービスについて説明・Zygote のシーケンスを軽く説明○ 質疑応答1 プロセスとの違いは?→ べつもの2 DDMSの質問システムプロセスは誰が起動するか?→SpecialDevice の説明は次の @pakuqi さんが説明する。3 CとJAVAで交互で動作するのは合理的か?4 JAVAアプリが起動するときZygote が起動する親プロセスはZygote ?5 DalvikVMの戦略パラメータの最適な場所は?→APPプロセスが起動している要求を待て居るアプリケーションマネージャが待っている分身に役割を与えるZygote = DalvikVM次の要求(何をしますか?)を待っているインスタンスの起動短縮が短縮されるプレロードからいらないものをチューニングする仮想メモリの理解が必要MemmoryMAP の動きが解ればぴんとくる2.@pakuqi :「デバイスの認識」(発表資料)○ 自己紹介アンドロイドと関係ないSE最近は組み込み系の作業に携わっている。○ 本編★Linuxではデバイスドライバの説明仮想化イメージ図の説明仮想化されたデバイスファイルが実際の出力をする模式図の説明固定、モジュールを選択デバイスドライバはどのようにつくるか?なければ、メジャーマイナーを調べて手で作成していた。UDEVの説明絵で説明する・ルールファイルの説明スマートフォンを認識するために作成する。★Andridではデバイスファイルの説明udevはないinit.cがそれに相当する。その説明Handle_Device_FD の説明Hndle で DeviceEvent の説明NetLinkSocket の説明pollによるソケットの説明メッセージの判別に関する説明○ まとめ1.Android は Linux と同じ2.デバイスは後から追加が可能3.init.rcに記載4.デバイスファイルの作成削除udevはinitで行うudevルールファイルはアンドロイドでどうなるの?○ 質疑応答ルールファイルに書けば認識できますか?→はい、できます。プリンター繋いで印刷もできますか?→はい、ドライバーがあれば可能ホストコントローラはあるか?→タブレット系はあります。基本ホストは電源が必要タブレットは持ってる可能性があるデバイスファイルをつくるまでですか?→はいパーティションナンバーを取ってアンドロイドでモジュールできましたか?→init.rcで書けば可能System のbootload.c に記載3.@tetsu_koba :「自社製品デバッガーの説明」○ 自己紹介京都マイクロコンピュータ小林さんエンベデットから組み込みジャヴァの中身京都マイクロコンピュータではデバッガーを作ってる新しいCPUの評価ボードを作ってるボードにはディスプレイも着いてる○ デバッガーの説明デバイスドライバーをポーティングの際デバッガーは少ないプリントKが大半デバッガーの説明JTag Ice でCPUを止めてるAndroid、Linux 2つ操作が可能○ デバッガーの実演do_execveはシステムコマンドで止まる正確に追っかける時はアセンブラと混合がまちがいなくみれるInit を例にとって説明GDBはトリッキーなので工夫が必要だがデバッガーは容易に見れるKernel のイメージを Bootloader から読み込むいにっとで止めるにはシンボルでとめるしんぼるずの実行ファイルを読み込ませるデバイスフィルを作る所を追っかけるSDを抜く意図した所でブレークポイントが止まるメモリの内容はレジスタを見るのが必要&アセンブラで解析するさすところで止める最適化すると存在しなくなる事が有るインラインはなくなる可能性があるソースで止めるすたてぃくはたくさんあるダイナミックはそんなにないSDをさすしかし止まらないはんどるいべんとでばいすの最後の方でコールされているUSBめもりをさすPCがうごいてないので再起動をするUSBは反応しているがNFSサーバーにマウント出来ない★ここで実演が終了★後日ツィッター上で原因が判明した。「デモの途中でターゲットからNFSマウントできなくなった原因が少しわかりました。ノートPCのWindows7のネットワーク設定が勝手に変わっていました。orz Windwos謎すぎる。 #yapf」○ 質疑応答JAVA のレイヤーをデバッグは可能ですか→デバッグは無理ダイナミックリンクライブラリのデバッグも可能ですカーネルと同時にデバッグも可能ARMA9は可能 ただし情報の確認が必要ビーグルボードはデバッグ可能→しかし、変換コネクターが必要トレースはとれますか→はい、可能です。メモリのR/Wは取れないI/OトレースはA9可能ですがコーデックス11は難しい仮想アドレスを理解すればデバッグ可能プログラムカウンターを気配を消すと出来る事は少なくなるなるべく消して動く様に出来る。GDRは初期化してないとできないSRAM初期化をしないと出来ないDRAMはCPUはまたないので情報が落ちる可能性がある関数のコールとれーすはありますか?→履歴を全部とって解析すれば可能再コンパイルすれば可能だがそのままでは難しい仮想マシーンの特性はぶりっちですか?→はい。SGXも入ってる1.sola_dolphin_12.sabakawa:ARMのハイバネーション(途中まで)3.klasicista : WIFI周りのネタ横浜←→関西とのサテライト中継の開催を行った。しかし、関西とのコンタクトを取る事無く中継が終了した。懇親会の内容は、中野さん持参したロボットで話が盛り上がった。最初はバッテリー残量が少なかった為、充電を行った。その後、アンドロイド携帯で操作を実演してもらった。