雑記帳 2009年03月
FC2ブログ

2009'03.27 (Fri)

Androidの入力デバイス初期化処理

今日は諸事情で休みなのでAndroid解析の覚え書き続き。

前書いた初期化処理の内容はgoogleにドキュメントあったし。。。orz...
まあ、だいたい正解だったけど。。。

で、課題のデバイス関連の処理について。

入力デバイス
frameworks/base/libs/ui/EventHub.cppで処理をしている。
この中のEventHub::openPlatformInput()でオープンされている。
処理するデバイスは/dev/input以下をスキャンして自動的にリストに登録
されるが、ioctlで以下をサポートしていないとエラーで登録されない。
EVIOCGVERSION, EVIOCGID, EVIOCGNAME, EVIOCGPHYS, EVIOCGUNIQ, EVIOCGBIT

deviceが見つかったらその種類を調べてリスト(ってか配列だけど)に登録。追加の時はreallocしてる。
そのあとデバイスの種類を調べて登録。登録できる種類は
CLASS_KEYBOARD, CLASS_TRACKBALL, CLASS_TOUCHSCREENの3種類。
キーボードの場合にはこの後KEYTABLEを読み込んで登録する。

実際にイベントを読む処理はEventHub::getEventで実行。

ってことでまとめると
 ・普通にType-Uのタッチパネルドライバが入ってれば普通に動くはず
  →多分Kernelのコンフィグおかしいかな??
 ・ほかの特殊ボタンもここにラッパーかませば動くのね。

って感じ。

じゃあ、こいつらはどこから呼ばれているんだろう・・・

だんだん面白くなってきたぞ。。。





テーマ : コンピュータ関連 - ジャンル : コンピュータ

11:09  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2009'03.25 (Wed)

Androidの覚え書き

とりあえず調べたことを覚え書き程度に書いておく。

ソースの取得方法、x86用にビルドする方法は以下の記事を参照
http://itpro.nikkeibp.co.jp/article/COLUMN/20090219/325052/

起動は普通のLinuxと同じっぽい。
init.rcから各種プロセスが起動される模様。
eePC用のinitrcはvendor/asus/eee_701以下に入ってる。
やってるのはモジュールのロードやら、シンボリックリンクをはったりいろいろ。

で、AndroidのFrameworkを起動しているらしい。のだが。。。
どこでGUI起動してるんだろう。。。
あとは入力デバイスの設定。タッチパネルの入力をどこかで拾っているはずだが。。。
Type-UXで使ってみたいの。。。
とりあえず起動処理の参考ページなど。。。
http://techon.nikkeibp.co.jp/article/NEWS/20081022/159959/?P=5

途方に暮れてinitのソースを眺めてみる。
普通のinitだと思ったら、Androidオリジナルなんだね。。。

このinit.rcスクリプトはこのinit専用の書式で動作するみたい。
コマンドの実装はsystem/core/init/builtins.cに実装されている。
キー入力のテーブルファイルはこの中のsetkey()でセットされる。デバイスは/dev/tty0にセットされる。

その他でバイスファイルの設定はdevices.cで実行されている??
init.rcのパースはparser.cで実行されているけど、未実装なコマンドが多そうな感じに見える。。。

てな感じで整理して流れを書いてみる。

1.各種システム関連のマウントポイントを作る
  /dev, /proc, /sysなど
2.システムファイルをマウントする
3. /dev/__null__を標準出力に設定
4. logを初期化
5. /init.rcを読み込み、パースして処理を実行する。
6. qemu初期化、カーネルコマンドラインを取得
7. H/Wの固有名称を取得し、専用のinit.rcを実行する。
 ファイル名はinit.hw名.rc1で設定されるファイル。
8. Trigger "early-init"で指定されたイベント(コマンド)を実行
Queにたまったアクションを処理する
9. デバイスを初期化。該当するのは/sys/class, /sys/service, /sys/devices
10.propertyの初期化
11.デバッグ用などでコンソールなどの設定を行う
12.ロゴ表示
13.property service用に値をセット。
14. Trigger "init"で指定されたアクションを実行
15. property serviceスタート
16. signal handler用のソケットを開く
17. Triger "eary-boot", "boot"で指定されたアクションを実行する
18. 残ってる起動アクションをすべて実行する。
19. Property Triggerを有効にする
20. 以降無限ループでイベント/プロセスを監視

てな感じの流れに見える。

これを追っていけば最初の疑問が解決するかしら。。。


テーマ : コンピュータ関連 - ジャンル : コンピュータ

22:50  |  未分類  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2009'03.08 (Sun)

飯山線のDD16

DD16-0001.jpg
久しぶりに鉄分な感じの話題。
飯山線で活躍していた除雪車DD16の引退セレモニーがあるっつー話でJR飯山線 飯山駅に行ってきたであります。駅構内からではなく、横の保線区で開催されていました。
普段は入れない場所から会場へ。
先着で配布される記念品はすでになくなっていました・・・。
ちなみにあった記念品はキーホルダー、さよならラッセル弁当などなど。
お弁当も10時半くらいには完売してました。。。

まあ、とりあえず写真でも・・・
DD16-0002.jpg
DD16-0003.jpg
DD16-0004.jpg
DD16-0006.jpgborder="0" />
このDD16、引退はするものの行き先は決まっていない模様で。。。

隣には今冬から投入されている新鋭機SR信濃川も同時に展示されていました。
DD16-0005.jpg
DD16-0007.jpg

一応主要目など
DD16
連結面間距離:35,840mm
最大幅:2,999mm(全頭車)、2,950mm(機関車本体)
最大高:4,077mm(全頭車)、3,900mm(機関車本体)
全重量:約36t(全頭車)、約48t(機関車本体)
最大引張力:約14t
最大力行速度:75km/h
21:44  |  未分類  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2009'03.03 (Tue)

いやはや、安曇野はすごい雪ですな・・・。

先日久米に行ったときに使ったウエットスーツ、まだ生乾きだったので
外に干して会社に行ったのですよ。晴れてたしね。

帰ってきたら、雪に埋もれていました。。。orz...



凍っていなかっただけましかと自分を慰めてます。。。ああぁぁ。。。
20:46  |  日記  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top
 | HOME |