2010年12月31日金曜日

今年も無事暮れまして、お疲れ様でした

いや、もうさっぱりブログが続いていない隠者でございます。

実はブログに書いてないだけで、勉強会に参加したり、Qtのカンファレンスに参加したりと面白いイベント目白押しだったわけですが、なかなかこうブログにするに至らなくて。情けない限りです。

来年こそ、色々頑張って、あれこれ書き記していきたい、今年のやり残しを来年こそはこなしたいと決意を新たにしてみたりしております。

ま、こんなのんびりブログですが、来年もどうぞよろしくお願い致します。

2010年11月25日木曜日

BeagleBoard-xMのAndroid起動microSDのパーティションをSD Cardとして認識させる

昨日のベンチマークの引き続きのためにmicroSDを探して部屋中ひっかきまわしていた隠者です。こんばんは。いやぁ・・・・みつかりませんでした。これは買わないとだめかな。

さて、そのようなわけで、今夜はベンチマークの続きではなく、中間でちょっと小技をひとつ。@himamuraさんが集めてるベンチマークを行うソフトの0xBenchmarkは、SD Cardが挿入されてると実行結果をテキストとXMLとに残してくれます。

ところが、beagleBoar-xMには、NORやNANDはありません。そのためAndroidの起動ディスクとしてmicroSDを使う事になります。

少しサイズの大きめなmicroSDカードを用意して、起動ディスクの他、SDカードとしても認識させてしまいましょう。

fdiskを使ってコマンドベースで起動用にmicroSDを設定し直す方法は、@pakuqi さんがブログにまとめて下さっています。
さて、この手順の中で領域を切るときに、64MBをMLO,u-boot,kernel用のFAT32領域、残りをすべてユーザーランド用にext3にされています。
が、例えば4GBのmicroSDなら、ユーザーランドとしてext3にするのは、2GB程度として、残りはすべてSDカード領域用にFAT32にして下さい。

え?手順?fdiskにはヘルプもあるし古くから使われているので、Google先生に聞いてもいいでしょう。僕はPF部の他の方々のようには優しくはなく、手取り足取り書き記す気はありませんのであしからず。

パーティションとしては
  1. FAT32 64MB (起動用)
  2. EXT3   2GB   (ユーザーランド用)
  3. FAT32 残りすべて (SD CARD領域)
という形にします。基本領域3もmkfs.vfatで初期化して下さい。

その後、ユーザーランドの /system/etc/vold.fstab に以下のような設定を追記します。


dev_mount sdcard /sdcard 3 /devices/platform/mmci-omap-hs.0 /devices/platform/mmci-omap-hs.0/mmc_host/mmc0

この設定でパーティション3をSDカードの領域として認識してマウントしてくれるはずです。お試しください。

2010年11月24日水曜日

BeagleBoard-xMのベンチマーク結果

大変長いことご無沙汰しておりました、hermit4です。
ネタは色々尽きないもののなかなか時間が取れませんで。全然更新されてないじゃんって怒られたので、 @himamura さんにPF部でお願いされていた、Beagle Board-XMのAndroidでのベンチマークを実施しました。

ちなみに、@himamura さんは、色々なデバイスをベンチマークとって下さりまとめてくださってます。
なお、今回の環境は、@sola_dolphin_1さんのfroyoを動かしやすいようにgithubにいれてくださって手順もまとめてくださっているので、基本的にそちらの手順に従って作成したものです(一部スクリプト部分については、手作業でやってますけど)。

使用したmicroSDは、SanDiskのものですが、残念ながら低速なclass 2の品です。いや、どこかに早いやつを数枚確保してあったはずなのですが、どのダンボールにしまってしまったのか発見できず・・・・・今夜家に帰って探しだせたら、ついでなのでそれぞれでベンチマーク比較してみたいなぁと思います。

結果は以下のとおりです。面倒なのでテキストをそのまま貼り付けます。XMLはグーグルドキュメントに置いてhimamuraさんにD飛ばしておいたので、近いうちにhimamuraさんの表に反映してもらえるかなぁとか思ってます。

Linpackの結果はあまり芳しくないように見えます。SGXを入れると描画周りでは改善が見られますけど・・・・これは満足出来る結果と言い切れるかどうか。

・TI's Android SGX SDKなし
============================================================

Linpack
------------------------------------------------------------
Mflops/s :9.437201527000578
Norm Res :1.7100673392687894E14
Precision:2.220446049250313E-16
============================================================
Scimark2
------------------------------------------------------------
Composite:
  13.017866789720463
Fast Fourier Transform:
  8.362614298864644
Jacobi Successive Over-relaxation:
  22.74927993955477
Monte Carlo integration:
  3.5335332771692993
Sparse matrix multiply:
  11.804034582132472
dense LU matrix factorization:
  18.63987185088113
============================================================
Draw Canvas
------------------------------------------------------------
Round 0 fps = 26.645351
Round 1 fps = 26.534584
Round 2 fps = 26.586315
Average: fps = 26.0
============================================================
Draw Circle
------------------------------------------------------------
Round 0: fps = 17.958694
Round 1: fps = 18.061409
Round 2: fps = 17.919006
Average: fps = 17.333334
============================================================
Draw Circle2
------------------------------------------------------------
Round 0: fps = 27.795794
Round 1: fps = 28.506271
Average: fps = 27.5
============================================================
Draw Rect
------------------------------------------------------------
Round 0: fps = 16.717749
Round 1: fps = 17.554125
Round 2: fps = 16.478989
Average: fps = 16.333334
============================================================
Draw Arc
------------------------------------------------------------
Round 0: fps = 23.337223
Round 1: fps = 23.331778
Average: fps = 23.0
============================================================
Draw Image
------------------------------------------------------------
Round 0: fps = 25.04759
Round 1: fps = 25.046337
Average: fps = 25.0
============================================================
Draw Text
------------------------------------------------------------
Round 0: fps = 21.483816
Round 1: fps = 21.457693
Round 2: fps = 21.217909
Average: fps = 21.0
==================OpenGL Cube
------------------------------------------------------------
Round 0: fps = 29.707972
Round 1: fps = 29.665668
Round 2: fps = 29.6349
Average: fps = 29.0
============================================================
OpenGL Blending
------------------------------------------------------------
Round 0: fps = 13.765573
Round 1: fps = 13.761972
Average: fps = 13.763773
============================================================
OpenGL Fog
------------------------------------------------------------
Round 0: fps = 14.064105
Round 1: fps = 14.110342
Average: fps = 14.087223
============================================================
Flying Teapot
------------------------------------------------------------
Round 0: fps = 24.663345
Round 1: fps = 23.784607
Average: fps = 24.223976
============================================================
Garbage Collection
------------------------------------------------------------
Stretching memory:
    binary tree of depth 16
*Total memory:4071392 bytes
*Free  memory:1238152 bytes


Creating:
    long-lived binary tree of depth 14
    long-lived array of 125000 doubles
*Total memory:7479264 bytes
*Free  memory:2709896 bytes


Create 37448 trees of depth 2
- Top down: 948msecs
- Bottom up: 984msecs
Create 8456 trees of depth 4
- Top down: 1015msecs
- Bottom up: 987msecs
Create 2064 trees of depth 6
- Top down: 1015msecs
- Bottom up: 930msecs
Create 512 trees of depth 8
- Top down: 950msecs
- Bottom up: 985msecs
*Total memory:7479264 bytes
*Free  memory:2212904 bytes


Completed in 8992ms.
=========================================



・TI's Android SGX SDKあり

============================================================
Linpack
------------------------------------------------------------
Mflops/s :9.300885244349358
Norm Res :1.7100673392687894E14
Precision:2.220446049250313E-16
============================================================
Scimark2
------------------------------------------------------------
Composite:
  12.901394988451766
Fast Fourier Transform:
  8.276270877619176
Jacobi Successive Over-relaxation:
  23.01006648834552
Monte Carlo integration:
  3.5054776431257824
Sparse matrix multiply:
  11.034482758620722
dense LU matrix factorization:
  18.680677174547643
============================================================
Draw Canvas
------------------------------------------------------------
Round 0 fps = 60.950832
Round 1 fps = 61.000404
Round 2 fps = 61.27451
Average: fps = 60.666668
============================================================
Draw Circle
------------------------------------------------------------
Round 0: fps = 26.071087
Round 1: fps = 26.399155
Round 2: fps = 26.403801
Average: fps = 26.0
============================================================
Draw Circle2
------------------------------------------------------------
Round 0: fps = 55.126793
Round 1: fps = 55.370983
Average: fps = 55.0
============================================================
Draw Rect
------------------------------------------------------------
Round 0: fps = 22.381378
Round 1: fps = 23.085802
Round 2: fps = 24.789291
Average: fps = 23.0
============================================================
Draw Arc
------------------------------------------------------------
Round 0: fps = 39.1604
Round 1: fps = 38.898396
Average: fps = 38.5
============================================================
Draw Image
------------------------------------------------------------
Round 0: fps = 42.448425
Round 1: fps = 42.21547
Average: fps = 42.0
============================================================
Draw Text
------------------------------------------------------------
Round 0: fps = 33.564556
Round 1: fps = 33.26311
Round 2: fps = 33.59839
Average: fps = 33.0
============================================================
Linpack
------------------------------------------------------------
Mflops/s :9.300885244349358
Norm Res :1.7100673392687894E14
Precision:2.220446049250313E-16
============================================================
Scimark2
------------------------------------------------------------
Composite:
  12.901394988451766
Fast Fourier Transform:
  8.276270877619176
Jacobi Successive Over-relaxation:
  23.01006648834552
Monte Carlo integration:
  3.5054776431257824
Sparse matrix multiply:
  11.034482758620722
dense LU matrix factorization:
  18.680677174547643
============================================================
Draw Canvas
------------------------------------------------------------
Round 0 fps = 60.950832
Round 1 fps = 61.000404
Round 2 fps = 61.27451
Average: fps = 60.666668
============================================================
Draw Circle
------------------------------------------------------------
Round 0: fps = 26.071087
Round 1: fps = 26.399155
Round 2: fps = 26.403801
Average: fps = 26.0
============================================================
Draw Circle2
------------------------------------------------------------
Round 0: fps = 55.126793
Round 1: fps = 55.370983
Average: fps = 55.0
============================================================
Draw Rect
------------------------------------------------------------
Round 0: fps = 22.381378
Round 1: fps = 23.085802
Round 2: fps = 24.789291
Average: fps = 23.0
============================================================
Draw Arc
------------------------------------------------------------
Round 0: fps = 39.1604
Round 1: fps = 38.898396
Average: fps = 38.5
============================================================
Draw Image
------------------------------------------------------------
Round 0: fps = 42.448425
Round 1: fps = 42.21547
Average: fps = 42.0
============================================================
Draw Text
------------------------------------------------------------
Round 0: fps = 33.564556
Round 1: fps = 33.26311
Round 2: fps = 33.59839
Average: fps = 33.0


2010/12/06 追記
暇村村長さんの日記が現在トラブルで表示できないようなので、BeagleBoardだけ表にしておきます。
設定 Android 2.2
SGX Driver
Android 2.2
Linpack
Mflops
9.30 9.43
Compo
site
12.90 13.02
FFT 8.28 8.36
SOR 23.01 22.75
Monte
Carlo
3.51 3.53
Sparse
Mult
11.03 11.80
LU 18.68 18.64
Draw Canvas 60.67 26.00
Circle 26.00 17.33
Circle2 55.00 27.50
Rect 23.00 16.33
Arc 38.50 23.00
Image 42.00 25.00
Text 33.00 21.00
Cube 60.00 29.00
OpenGL Blending 65.74 13.79
Fog 65.60 14.09
Flying
Teapod
60.60 24.22
Gabage
Collection
8961.00 8992.00

2010年9月27日月曜日

町田支部発足とPF部第二回勉強会とGoogle Developer Day 2010 Japan

久しぶりにブログを書いてみる隠者でございます。
本日のブログは先週参加したイベントの感想と、今週参加予定のイベントについてです。

実はひっそりとスキルアップのために、色々と過酷な環境に身を置いておりまして、えらく忙しくやってます。

でまぁ、9月は、イベント目白押しでして、先週からの今週にかけてのお話

・日本Androidの会 町田支部発足会参加
9月18日(土)に日本Androidの会の町田支部の発足が行われました。

ATNDの開始時間だけをみて13時からと思い慌てて自宅を出発。途中の駅でPF部のメンバーのsola氏と遭遇し、バスで会場に。

ところが、会場の中にも参加者らしき姿はなく、どうやら隠者とsola氏の二人が一番乗り。
入り口で待っていてもわからないからと、会議室まで出向いたのですが・・・やっぱり誰もいない。実は、ATNDの下の方には、14:00からと書いてあったようで、正式には14:00からが正しかったようで・・・・早すぎました。

ぽつぽつと人が現れるものの、なんとなくどうしたものやらという雰囲気。そこに町田支部長参上(実は、正式に支部長を名乗った事は無かったそうなのですが、他に立候補者もおらず、異議もでなかったため、町田支部長に決まったようです)。

内容としては

  • 各自自己紹介
  • 平野さん「Androidの普及に向けて」
    平野さんのコミュニティーへの思いと今後の活動について
  • 石川さん「横浜支部の運営について」
    支部立ち上げに関する提言
  • octoba net「売れるアプリのヒント」
    アプリレビューを通じて得た売れるアプリの法則
  • 簡単な売れるアプリ検討ゲーム
といった流れとなりました。人前の発表は苦手だとおっしゃってた平野さんの人を惹き付け笑顔を誘う話し方には心底すごいなぁと思いました。僕もPF部で発表するようになったのですが、どうにも話すのにいっぱいいっぱいでしてねぇ・・・・見習いたいものです。
そうそう、アプリのレビューを時折見せていただいていたoctobaさんの事務所が、まさか2年前まで済んでた割とご近所さんにあったのは知りませんでした。世の中って狭いなぁ(ってまぁ、町田支部なんだから当たり前なのか)。


町田は人数はあまり多くないようで、こじんまりしているので、これならPF部同様、気楽に参加に来れそうな雰囲気です。

・横浜PF部 第二回勉強会
9月19日(日)にPF部第二回が行われました。今回はのんびり聞きながらちらほらとつぶやいていましたけど、聞きながらつぶやくって意外と難しいですね。結構ぽろぽろと聞き漏らしていたようで。
内容についてはPF部のサイトにも軽く書いてありますので、こちらをご確認ください。
今回は
  • @klasicistaさんの 「CELinux Forum テクニカルジャンボリー34レポート」
  • @sola_dolphin_1さんの「BeagleBoard-xMでAndroid」
  • a_yokoyamaさんの「プラットフォーム学習環境の構築の軌跡」
@klasicistaさんの発表は、実は僕が参加していた@l_b__さんや、@sola_dolphin_1さんに、PF部で誰か発表してくれるよね的に無茶ぶりしていたところ、参加されていた@klasicistaさんが快く引き受けてくれるという流れになりまして。僕が犯人でした。無茶ぶりしてごめんなさい。
そんな無茶ぶりをしてたくせに、その後情報を仕入れてなかったのですが、発表で紹介していただいた資料がかなり興味深くて、発表後ダウンロードして電車の中でちらほら追いかけてます。はい。

@sola_dolphin_1さんの発表は、BeagleBoard-xMでのAndroidを動かす件での発表。この中でのmicroSDが遅い!という話は、隠者も感じていて、原因を調べてみたいなと考えている一つです。

最後のa_yokoyamaさんの発表。横山さんは、プラットフォーム学習を始めたばかりですというので、初学者として環境構築からやってはまった内容をぜひ話していって下さいという事になり、今回の発表に臨んで下さいました。すごく苦労されている様子が見て取れて、がんばってるなぁと感じました。

そして、今週参加予定のイベントは

・Google Developer Day 2010 Japan

9月28日(火)に、東京国際フォーラムにて行われる予定となっています。

いやぁ、夏休み残しておいて本当に良かったです。というわけで、火曜日は、本家の開発者イベントに初参加です。といっても、PF部向けのイベントではないので、場違いでぽかーんとして過ごしているかもしれませんけど。

夜はこっそり名古屋つ部の懇親会にも参加登録させていただいたので、このイベントに集まってきた方々の熱い気持ちを見せていただきつつ、PF側の人としてどんな事がやっていけそうか夢想してみるのもいいかなとか思っております。

2010年9月16日木曜日

横浜Android PF部のsites出来ました

hermit4@横浜Android PF部です。
いや、まぁ、他にもいくつかに所属はしてますが真面目に活動しているのはPF部なので。

勉強会が月一ペースで開かれており、その記録をどこかに残すのに、独自ドメインで公開できると良いよねという話があって、Google Sitesでのサイト作りをお手伝いしてみました。

Yokohama Android Platform Club

なにせ、Google Sitesでのサイト作りは初めてですので、つたないページでごめんなさい。
時間ができたら、もうちょっと勉強してカッコよくしたいなぁと思ってます。

ちなみに横浜AndroidPF部は、日本Androidの会 横浜支部の中で、Androidのポーティングや、Nativeに関する情報って少ないよねという話から、勉強会を作ろうかということで、 @l_b__さんが中心となり立ち上げた部です。

立ち上げの契機が日本Androidの会 横浜支部だったため、一応、横浜支部の一勉強会という形となっていますが、横浜支部のMLは結構メールの量も多くて埋もれてしまいがちで、実は横浜には住んでいない隠者のような人もいるため、別途MLと活動内容を書き留めるwiki的な役割としてsitesが開設される事となりました。

まだまだ出来立てほやほやで、第一回の勉強会が終わり、今週末に第二回の勉強会をという段階ですが、月に1回、物好きが横浜に集まって勉強してますので、Androidのポーティングや、Native側のFrameworkについて興味があるという物好きなあなたのご参加をお待ちしております。

なお、今のところ発表者の多くが大勢の前で話すなんて事に慣れていない技術者ですので、Ust等の映像記録はありませんが、上記のサイトで、第一回で使われた勉強会の資料は公開されていますので、興味がある方はぜひぜひご参加下さい。

2010年9月5日日曜日

ちょっとオアズケ中

たいして世の中の役に立てていないblogの主の隠者でございます。

書きたいネタはあるんですが、調べている時間がなかなか取れていません。
どれから手をつけようかと考えあぐねているところ。
まぁ、2ヵ月後くらいにはAndroidの発表がまためぐってくるでしょうから、Androidも一個必須なんですけどねぇ。
  • HALの続き。HALを使わないハードウェア操作周りの調査
  • QtでOAuth入門。QOAuthも使いながら、ちょっとOAuthについて書いてみようカナ。
  • Androidの音声周りのフレームワーク辺りを物色。BeagleBoard-xMを使いながら。
  • Androidのセンサー系入門。BeagleBoard-xMにとりあえず三軸センサーをつないでみる
  • ちょっと組込みIOまわりのお勉強

辺りをとりあえず今後のネタとして考えてるんですけどね。
まぁ、その前に、転職も本気で考えなきゃとか思ってますが・・・・。

とりあえず、GDDのクイズが合格点だったとかいう間違いだと思われるメールが届いているので、休みを確保できるよう、今週は仕事に精をださなきゃと思ってます。
そんなわけで、しばらくあまり意味のない日記やメモ書きの日が続くかもしれません。

が、さすがにBlogでやろうと思ってることとか書いておいてやらないと、やるやる詐欺だ!とか言われて怖くなるでしょうから、やりたい事として上げておきました。

2010年9月2日木曜日

Mac用 Qt Binary版

実はAndroidよりよっぽどQtラブな隠者でございます。
普段Linux環境では Qtは自分でビルドしたものを使っているのですが、Macでは、横着をしてバイナリ版をインストールして使っています。

そんな他人任せなMac環境にちょっとQtを使ったライブラリを追加しようとしてディレクトリ構成がよくわからずに悩んだので、メモ書き程度に。


・開発ツール群 + Qt Demo(GUI)
/Developer/Applications/Qt
  • Assistant.app
  • Assistant_adp.app
  • Designer.app
  • Linguist.app
  • qhelpconverter.app
  • pixeltool.app
  • qtdemo.app
  • qdbusviewer.app

・開発ツール群(CUI)
/usr/bin/
  • qdbusviewer.app
  • lconvert-4.6
  • lrelease-4.6
  • lupdate-4.6
  • macdeployqt-4.6
  • moc-4.6
  • qcollectiongenerator-4.6
  • qdbus-4.6
  • qdbuscpp2xml-4.6
  • qdbusxml2cpp-4.6
  • qhelpgenerator-4.6
  • qmake-4.6
  • qt3to4-4.6
  • rcc-4.6
  • uic-4.6
  • uic3-4.6
  • xmlpatterns-4.6

・シンボリックリンク
/Developer/Tools/Qt
    (上記GUI/CUIアプリのシンボリックリンク。なお-4.6は省かれている)


・プラグイン
/Developer/Applications/Qt/plugins
  • accessible
  • codecs
  • designer
  • graphicssystems
  • iconengines
  • imageformats
  • phonon_backend
  • script
  • sqldrivers

・言語環境用ファイル
/Developer/Applications/Qt/
  • phrasebooks
  • translations

・ライブラリ、ヘッダファイル
/Library/Frameworks
  • Qt3Support.framework
  • QtAssistant.framework
  • QtCore.framework
  • QtDBus.framework
  • QtDesigner.framework
  • QtDesignerComponents.framework
  • QtGui.framework
  • QtHelp.framework
  • QtMultimedia.framework
  • QtNetwork.framework
  • QtOpenGL.framework
  • QtScript.framework
  • QtScriptTools.framework
  • QtSql.framework
  • QtSvg.framework
  • QtTest.framework
  • QtWebKit.framework
  • QtXml.framework
  • QtXmlPatterns.framework
  • phonon.framework

・設定ファイル
/usr/local/Qt4.6
  • mkspecs
  • q3porting.xml

・ドキュメント
/Developer/Documentation/Qt/
  • html
  • qch

・サンプルコード
/Developer/Examples/Qt
 (多いので略)


・アンインストーラ
/Developer/Tools/uninstall-qt.py


qmake用のスペックファイル群は/usr/local/Qt4.6/mkspecsの中となります。
ライブラリの配置が特殊で悩みますけど、自作のライブラリの場合は、/usr/local/libにでも入れて、mkspecsを用意してあげるとよいのかもしれません。

改めてみると、見慣れぬツールもいくつかあるので、今度調べてみようかなと思ってます。

2010年9月1日水曜日

Beagle Board-xMについて調べ中なう

(9月に入って憂鬱な隠者でございます。
いや、そろそろいろいろ決着をつけなければならない問題が積まれている状態でして。

というわけで、現実逃避がてら、BeagleBoard-xMを調べてみてたりします。
まぁ、Androidを動かすというミッションは、既にsolaさんが情報公開してくださってますので、僕はのんびりと、マニュアルを眺めるところから。


システムマニュアルは、BeagleBoard Hardware Design から、入手ができます。
マニュアルのIntroductionには

The processor used on the BeagleBoard-xM is compatible with several Cortex A8 processors manufactured by Texas Instruments. Currently, the processor is a DM3730 processor, which has yet to be announced by Texas Instruments. The only documentation that is available is the AM3715. The key difference between the AM3715 and the DM3730, is that the DSP is not included on the AM3715.
と書かれています。というわけで、CPUはAM3751にDSPが含まれているDM3730ですね。マニュアル中にはまだアナウンスされていないとなっていますが、本日の時点で、既にTIのサイトでは、Activeになってます。

まぁ、僕と同じく組込み系の経験が浅いアプリ屋だと、 DSPってなんぞやとか思うわけですが、デジタルシグナルプロセッサ (Digital Signal Processor)といって、デジタル信号処理に特化したマイクロプロセッサで、画像処理とか動画のエンコード、デコードといった処理をこちらで行うことで高速に処理することができるようになるという代物です。これが付いていると出来る事の可能性が広がります。

PMIC(電源管理)用のチップとしては、TPS65950が載っているようです。

TIのWebを見ると統合パワー・マネージメント IC、3 DC/DC、11 LDO、オーディオ・コーデック、USB HS トランシーバ、チャージャー内蔵って書いてます。電源管理とオーディオコーデックはこちらのチップの役割のようです。


Beagle Board-xMには、残念ながらNORもNANDもありません。
DM3730には、GPMC Busという外部メモリコントローラのバスがあるのですが、マニュアルを見ると
8.10.3 GPMC Bus
The GPMC bus is not accessible on the BeagleBoard. Its connectivity is limited to the POP memory access on the top of the processor and therefore is only accessible by the NAND memory.
The memory on the GPMC bus is NAND and therefore will support the classical NAND interface. The address of the memory space is programmable.
ということで、使えないようです。こっそりNORを付けてu-bootまでは高速起動できないだろうかとか思ってたので残念です。

ま、そのようなわけで、BeagleBoard-xM君を起動すると
  1. BootRomが最低限の初期化を行ない、microSD Powerの設定をTPS65950へ行う
  2. BootRomはその後、GPMC(xM君は利用なし),MMC1(microSDが接続)の順に検索しMLOをさがす
  3. MLOからX-Loaderが起動。u-boot.binをメモリに展開
  4. u-bootが起動し、uImageを読み込む・・・
    といった流れで起動するようです(*1)。詳しいことはまだわかってませんけど、MLOというのは、どうやらBootRomが理解できるような署名を付けた X-Loader でしょうか。

    なおxMに付属のmicroSDに入ってる中身と、その起動の様子は先日のエントリーを参照してください。

    ところで、Power Connectorの項目を見ると
    5.16 Power Connector
    Power will be supplied via the USB OTG connector and if a need arises for additional power, such as when a board is added to the expansion connectors, a larger wall supply 5V can be plugged into the optional power jack. When the wall supply is plugged in, it will remove the power path from the USB connector and will be the power source for the whole board. The power supply is not provided with the BeagleBoard.
    と書かれています。つまり、電源の供給は、USB OTGを接続すればできるってことですねぇ。電力食うようなボードを追加しなければ、USB供給で動くんですか。知らなかった。もしかして、古いBeagle Boardもできたんでしょうか。

    ちなみに、Beagle Boardのマニュアルは164ページ。CPUのリファレンスマニュアルは3642ページ。もちろん英語です。全部読むつもりなら結構な覚悟が必要そうですよね。
    とりあえず、せっかくなので、僕はしらばくu-bootのコードを追いかけながら、この石について少し勉強しといてみたいなぁとか思ってたりします。



    2010年8月31日火曜日

    BeagleBoard-xM届きました

    万年金欠どころか、最近では借金まみれとも噂される隠者でございます。
    組込みと呼ばれる業界の難しいところは、勉強のためにハードウェアを購入しないとならないことですよね。おかげさまでいつもお財布が悲鳴を上げています。

    まぁ、そんなわけで仕入れた、期待の新星 BeagleBoard-xM。この性能でこのお値段はびっくりですよね。


    左側が、BeagleBoard RevCで、右側がBeagleBoard-xMのA2です。
    ちょっとサイズが大きくなりました。


    USBが4つに、そして待望のEthernetが追加されてます。



    USB OTG portはBeagleBoardからかわりないですが、以前はピンコネクタのみだったシリアルポートが今回はボードに直付けされてます。これは便利です。はい。


    音声の出力とVideoは、前回同様のようです。DVD-D(HDMI)がついてますね。


    JTAG pinも以前と同じですが、今回はカメラ用のピンコネクタがついてます。その右上にちっちゃくあるのはGNDピンですね。今回は豪勢にピンやコネクタが付きまくりです。裏面はというと


    ついてます。右上にLCD関連ピンコネクタ。その下はExpansionコネクタです。Power,McBSP,I2C,MMC2,UART,McSPI,GPIO,PWMがここにでているようです。
    ちょっと見づらいですが、左上にあるのが、Micro SDのスロットで、その右にこっそり4pin分のMcBSP2 portも出ています。

    その下の方にあるのは、Auxiliary Access Headerで、MMC3, GPIO,ADC,HDQとマニュアルに記載されてます。
    Beagle Boardよりも色々用意されているようです。しかもコネクタまで実装してくれている豪勢さ。いやぁ、すばらしいです。

    CPUは、Texas Instruments Cortex A8 1GHz processor
    Memoryは、Micron 4Gb MDDR SDRA(512MB) 200MHz
    今回は、NANDこそ無いものの、かなりリッチな環境になっているのは間違いありません。

    ついでに、今回はmicro SDが付属していました。中身は
    • md5Sum.txt
    • MLO
    • ramdisk.gz
    • ramfs.img
    • u-boot.bin
    • uImage
    • user.scr
    となっています。これ、テスト起動用ディスクですね。
    というわけで、こちらのmicro SDから起動してみました。
    電源投入と同時にシリアルコンソールには色々でましたけど、なんだか起動は遅いです。特に、ramdisk.gzの展開に時間がかかるのか、このファイルの読み込みに結構時間がかかりました。

    以前は、電源を入れてすぐにHDMIから犬の絵が表示されていましたけど、このMicroSDカードには入ってないようです。おかげで、シリアルをつながないと、途中でとまっているのではないかと、かなり不安に感じます。
    こちらは、起動完了後のログイン画面です。


    とりあえず、今週は色々と忙しいので、お遊びができるかどうかちょっと怪しい所なんですが。まぁ、時間があれば、まずはAndroidから動かしてみないとなぁと思ってます。

    2010年8月30日月曜日

    JAG 横浜支部 PF部の勉強会で発表してきました

    人前で話すのが苦手な隠者でございます。

    でも、こればかりは何時までも避けていてはけして上達しないわけで。とりあえず、PF部くらいの少人数、非Ustな環境なら、多少は話せるのではないかと、第一回目の簡単な発表を行なってきました。

    反省点

    1. 時間ばかり気にして、話の「間」がうまく取れてなかったなと思います。聞いてくださってるみなさんが、ちゃんと内容を咀嚼できるように緩急をつけて話すべきなんですが・・・話し始めるとそこを考える余裕はさっぱりありませんでした。
    2. 資料の文字のサイズが小さすぎたかも。まぁ、最初は壁に写していたこともあって、文字が潰れてさっぱり見えませんでした。人数を考えれば、実は紙を数枚用意して回すとか気を使ってみればよかったかも。
    3. もうちょっと終わった後の質問が出やすいようなネタを仕込んでおければよかったのだけど・・・・。一応、みなさんの知識レベルを共有する意味で、これ知ってる人?とか聞いてみたので、今後は、もうちょっと楽しくみんなで考えられるネタが仕込めるといいなぁとか思ってます。
    4. 資料作成が遅くて事前公開できてなかったのは失敗でした。あと、keynoteはとっても素敵なんだけど、keynoteのエフェクトに頼りすぎると後で公開したときに後悔するはめに。
    5. もうちょっと発表するときの自分に余裕が欲しい・・・・。
    とまぁ、反省すべき点が多々ある発表ではございましたが・・・。とりあえず、この週末を乗りきれて何よりです。9月は色々忙しいですし、でしゃばって発表しすぎるのもなんなので、9月の集まりは他の方々の発表を楽しみにしつつ、何かのネタを温めておきます。はい。

    一応、こちらが発表資料のPDF版です。
    Blogとほとんどかぶってますし、大したものではないのでお役に立つかわかりませんが、興味があればお持ち下さい。

    2010年8月27日金曜日

    Androidのソースの構成を軽くおさらいしてみる

    珍しく割とこまめに投稿している隠者でございます。
    いやまぁ、今週末のネタ作りのために色々考えなくてはならないわけで・・・・。考えたネタをさらにkeynoteにまとめなければなので、時間も、ネタも足りない気がしてならないですが。
    しかも、話す内容まで考えないと・・・うわぁぁん。てな状況です。はい、まだ資料になってません。

    さて、今回のおはなしの肝は、最初のAndroidネタの日記の絵が3枚でほぼ全てなんですが、それだけだと持ち時間30分程度なんて時間はつぶせません。いや、話すのは最後なので、もしかしたら時間が押していて、軽く終わるという可能性もあるのですけど。

    # 誰ですか?みんなあまり話すことがなくて、時間が大きく余ってるかもよとかいう人は!

    ともかく、とりあえずPF部的アーキテクチャ図について軽くお話した後、ソースの構成まで立ち入って軽く見て、最後に、ソースを追いかける時に便利な、envsetup.shのお話をして、後は、アーキテクチャ図にいちゃもんをつけていただいて、議論がいい感じになったあたりで、ちゃんちゃんと行きたいなと思ってまして。そういう意味では、ちょっと日記が前後してしまいますが、まぁ、今日はソースの構成を軽くおさらいです。

    というわけで、Android 2.2のソースコードでトップディレクトリを見てみましょう。
    ソースコードは大きく分けると、Androidのシステムを構成するソース・ファイル群と開発環境を構成するファイル群とに分けられます。

    * Androidのコード群
    種別 ディレクトリ概要
    Applicationspackagesアプリケーション
    Application FrameworkframeworkAndroid Framework
    Android RuntimedalvikDalvik VM
    Library externalサードパーティ製ライブラリ(正確には、qemuのようなSDK用のプログラムや、pingのようなインストールするコマンドも含まれる)
    HAL hardwareハードウェア抽象化レイヤのコード
    System systembluetooth tools, システムファイル, wlan等システムに必要なファイル類
    Bionicbioniclibcおよびローダ等、基本となるライブラリ・プログラムのコード

    * 開発環境コード
    種別ディレクトリ概要
    Build関連buildビルド用のMakefile,シェルスクリプト等
    prebuiltバイナリ提供のツール類(クロスコンパイラ等)
    deviceデバイス固有のMakeファイル、スクリプト関連
    SDK関連sdkSoftware Development Kit code
    NDK関連ndkNative Development Kit code
    ツール関連developmentPlatform engineering tools
    テスト関連ctsAndroid CTS (Compatibility Test Suite)
    Bootloader関連bootableブートローダリファレンスコード

    ポーティングを意識してコードを読んでいくとすると、目を通しておくべき箇所を敢えて選ぶとすると。
    • hardware
      ハードウェアを有効に利用できるようにするのに実装が必要
    • system
      デバイスファイルを作っているinit等、いくつかのプログラムに手を入れる必要があるかも。init.rcのオリジナルも置いてあるので個々は意外とよく探索することになります。
    • device
      デバイスに合わせたビルド環境の構築のために必要
    • framework
      トラブルが起きた時に、logcatの内容からコードを追いかけて行くのによく読む場所

    といった所でしょうか。もう少し詳しく踏み込みたい所ですが、まぁ、アーキテクチャの概要という趣旨から外れるので、PF部での発表ではここまででしょうかねぇ。というわけで、今日、明日は、資料作りに専念するため、更新はなしかと思いますので、あしからず。

    2010年8月25日水曜日

    ソースを追うのに便利なenvsetup.shのコマンド

    Javaはあまり詳しくない隠者でございます。

    言い訳から始めるのもどうかなと思いますが、とりあえず、Javaは、かなり昔に独学でかじった程度なんです。そんなわけで、出展もはっきり覚えていませんが、Javaというのは、ソースツリーのディレクトリもまたアーキテクチャの一つとしてとらえている言語だったように記憶しています。

    隠者は、もともとTags系(etagsとかgtagsとか)を使いません。隠者は、ソースコードを格納するディレクトリも、アーキテクチャをしっかり考え、意味あるものにすべきだと考えてきており、ディレクトリ構成も含めて「アーキテクチャ」として考えられているのであれば、おおよそコードのある位置を覚えてしまう方が、都合がよいからです。そんなわけで、どこに目的のコードがあるかを意識しにくくなるタグジャンプは、記憶力の悪い隠者に便利すぎるツールになってしまうからです。

    そのような理由から、普段からソースコードは手作業で追いかけているわけですが、この場合、主にgrepを使う事になります。
    ただし、ファイル数が多かったりディレクトリが深くなったりすると、find等もいろいろ組み合わせ結構コマンドを打つのも手間になったりします。
    そんなgrepに関して、Androidのbuild/envsetup.shの中に、少しだけ便利になる関数が定義されています。それは

    • cgrep PATTERN
    • jgrep PATTERN
    • resgrep PATTERN
    • sgrep PATTERN

    です。それぞれ、Cソースコード、Javaソースコード、Resourceファイル、すべてのソースファイルにPATTERNでgrepをかけて、検索したキーワードを色分けして表示してくれるというコマンドです。長々とgrepコマンドを書くことなく、grepがかけられるので、grepで解析する派のあなたには重宝するツールになるでしょう。

    ちなみに、他にもいくつかのコマンドが定義されています。ビルド時に使われるものもあれば、開発作業に有用なものもありますので、中身を一度チェックしてみるとよいかもしれません。
    なお、以下にコマンドの一覧と、わかるものには簡単な解説なり、コメントの抜書きなりを記載しておきます。

    ずいぶん大量に穴があいてますが、穴埋めは今後の課題ということでお許しください。

    help

    helpを表示する(一部のコマンドのみ)

    get_abs_build_var

    Get the value of a build variable as an absolute path.

    get_build_var

    Get the exact value of a build variable.

    check_product

    check to see if the supplied product is one we can build

    check_variant

    check to see if the supplied variant is valid

    setpaths


    printconfig


    set_stuff_for_environment


    set_sequence_number


    settitle


    choosesim


    choosetype


    chooseproduct


    choosevariant


    choosecombo


    add_lunch_combo


    print_lunch_menu


    lunch


    tapas

    Configures the build to build unbundled apps.Run tapas with one ore more app names (from LOCAL_PACKAGE_NAME)

    gettop

    topディレクトリを表示する

    m

    プロジェクトのトップディレクトリでmakeを行う。

    findmakefile

    現在のディレクトリを上に遡りながら、Android.mkファイルを見つける

    mm

    現在のディレクトリのAndroid.mk内のモジュールをトップディレクトリからmakeする

    mmm dirname

    dirnameで指定したディレクトリのAndroid.mk内のモジュールをトップディレクトリからmakeする

    croot

    トップディレクトリに移動する

    cproj

    ディレクトリを上に遡りAndroid.mkのあるディレクトリに移動する

    pid program

    adb接続した先のprogramのPIDを取得する

    systemstack

    systemstack - dump the current stack trace of all threads in the system process to the usual ANR traces file

    gdbclient [EXE] [PORT] [PROG]

    arm-eabi-gdbを起動し、各種シンボルを読み込んでgdbserverへ接続する

    sgrep PATTERN

    .*\.(c|h|cpp|S|java|xml|sh|mk)に対してPATTERNでgrepをかける

    jgrep PATTERN

    .*\.javaに対してPATTERNでgrepをかける

    cgrep PATTERN

    .*\.cに対してPATTERNでgrepをかける

    resgrep PATTERN

    *\.xmlに対してPATTERNでgrepをかける

    mgrep PATTERN

    .*/(Makefile|Makefile\..*|.*\.make|.*\.mak|.*\.mk)に対してPATTERNでgrepをかける

    treegrep PATTERN

    .*\.(c|h|cpp|S|java|xml)に対して、grep -iをかける

    getprebuilt

    ANDROID_PREBUILTS変数の値を取得する

    tracedmdump tracename

    tracenameのdmtraceを実行する

    runhat [ -d | -e | -s serial ] target-pid [output-file]

    communicate with a running device or emulator, set up necessary state,and run the hat command.

    getbugreports

    /sdcard/bugreportsのバグレポートファイルを取得する

    startviewserver


    stopviewserver


    isviewserverstarted


    smoketest

    SmokeTestApp.apk SmokeTest.apkを再インストールし実行する?

    runtest args

    argsを引数として/development/testrunner/runtest.pyを実行する

    godir regexp

    PATTERNにマッチするディレクトリのリストを表示し、選択されたディレクトリに移動する

    set_java_home

    JAVA_HOME環境変数がない場合に固定値を設定する

    2010年8月23日月曜日

    Androidのバージョン

    なんというかあっという間に一週間だった隠者でございます。
    いやぁ、私事でもろもろございまして、早速三日坊主みたいな状況に。

    まぁ、でも、実際、発表は来週という状況で、そろそろ色々話の流れを考えなくてはならない状況で、意外と切羽詰ってまいりました。

    さて、Androidには、実は大きな弱点がありまして。それは進化が速すぎた事。

    日本Androidの会でAndroid関連の書籍の著者の方々も書いてる間にバージョンが上がってしまってというような苦労話をされていました。最近でこそかなり落ち着いている感がありますが、以前は、バージョンの変更に伴いAPIも結構変わったりして、アプリ開発の書籍を買ってきてそのとおりに打ち込んだのに動かないなんて話もよく耳にしたものです。

    プラットフォームの移植を考えるときでも、やはりバージョンというのは悩みものです。でまぁ、話をする時には、どのバージョンの話なのか明確にできるように、きちんと把握しておきたいなと思ってます。

    実は、バージョンについて、各特徴というのは、wikipediaに出てました。

    プロジェクト名バージョン公開日Linux Kernel新機能
    Cupcake 1.5 2009/04/40 2.6.27
    • Ability to record and watch videos through camcorder mode
    • Uploading videos to YouTube and pictures to Picasa directly from the phone
    • A new soft-keyboard with text-prediction
    • Bluetooth A2DP and AVRCP support
    • Ability to automatically connect to a Bluetooth headset within a certain distance
    • New widgets and folders that can populate the Home screens
    • Animated screen transitions
    Donut 1.6 2009/09/15 2.6.29
    • An improved Android Market experience
    • An integrated camera, camcorder, and gallery interface
    • Gallery now enables users to select multiple photos for deletion
    • Updated Voice Search, with faster response and deeper integration with native applications, including the ability to dial contacts
    • Updated search experience to allow searching bookmarks, history, contacts, and the web from the home screen
    • Updated technology support for CDMA/EVDO, 802.1x, VPNs, and a text-to-speech engine
      Support for WVGA screen resolutions
    • Speed improvements in searching and camera applications
    • Gesture framework and GestureBuilder development tool
    Eclair 2.0 2009/10/26
    • Optimized hardware speed
    • Support for more screen sizes and resolutions
    • Revamped UI
    • New Browser UI and HTML5 support
    • New contact lists
    • Better white-black ratio for backgrounds
    • Improved Google Maps 3.1.2
    • Microsoft Exchange support
    • Built in flash support for Camera
    • Digital Zoom
    • MotionEvent class enhanced to track multi-touch events
    • Improved virtual keyboard
    • Bluetooth 2.1
    2.1 2010/01/12
    • Live Wallpapers
    Froyo 2.2 2010/05/20 2.6.32
    • General Android OS speed, memory, and performance optimizations
    • Additional application speed improvements courtesy of JIT implementation
    • Integration of Chrome's V8 JavaScript engine into the Browser application
    • Increased Microsoft Exchange support (security policies, auto-discovery, GAL look-up, calendar synchronization, remote wipe)
    • Improved application launcher with shortcuts to Phone and Browser applications
      USB tethering and WiFi hotspot functionality
    • Added an option to disable data access over mobile network
    • Updated Market application with batch and automatic update features
    • Quick switching between multiple keyboard languages and their dictionaries
      Voice dialing and contact sharing over Bluetooth
    • Support for numeric and alphanumeric passwords
    • Support for file upload fields in the Browser application
    • Browser can now display animated GIFs (instead of just the first frame)
    • Support for installing applications to the expandable memory
    • Adobe Flash 10.1 support

    長くなりましたが、wikipedia英語版から概ね抜粋させていただきました。ちょっとLinux Kernelについて別の列に分けたので若干見にくいかもしれませんが。
    プロジェクト名という呼び方が公式にされているかどうかはわかりません。ただ、海外でのプロダクト開発の場合、あるリリースに向けた開発に「プロジェクト名」をつけるのが一般的なようです。そのプロジェクトの成果物としてブラッシュアップしたものが、リリース版になるわけです。
    git上にも、プロジェクトを指すタグと、リリースした製品バージョンを示すタグがあることから、そういった一般的な流れに沿って開発が行われているんじゃないかと思います。

    ちなみに、この表の発表年月日を見ると、1.5から2.0までの進化の速さは異様でしょう。丁度かなり盛り上がりを見せ始めたところでしたし、この頃はバージョンアップの速さに悲鳴がちらほら聞こえていたものです。

    なお、今後については、ソースが見当たらないのでうる覚えな情報ですが、今後は、短気のスパンで出すのではなく、一定のスパンで出すようにしたいという方向にあったはずです。ですので、ここまで無茶な出方は今後しないはずです。

    ところで、AndroidのバージョンとLinux Kernelのバージョンの更新は別段同期していません。Android用のLinux Kernelには、いくつかGoogleの独自追加した機能やドライバが必要になるのですが、これはLinux本家で行われているわけでもなく、アップストリームへの還元もいまいちうまくいっていないようです。

    PF部として移植の対象として考える場合は、どうしても、Linuxのカーネルと、Androidのユーザーランドの2種類を念頭に入れる必要があります。

    なお、面白い事に、Kernel依存の機能というのは、HALをのぞけばほとんどないようで、たとえば、EclairとLinux Kernel 2.6.27の組み合わせでも、基本的な機能の動作は可能です。おそらく、カメラ周りや、センサー周り等、HALを適切に実装していけば、異なるKernelでもそれなりの動きはするのでしょう。

    ただし、最近のinit.rc等を読むと、Control Group等のカーネルのごく最近の機能なども積極的に使われていることから、真面目なポーティングを考えるのであれば、できるだけカーネルのバージョンも公式に発表されている製品に合わせてポーティングしたいものです。

    2010年8月14日土曜日

    Androidのアーキテクチャ図を描いてみる

    日本Androidの会 横浜支部 プラットフォーム部参加中の隠者<hermit4>でございます。
    さて、栄えある第一回の勉強会で、何か簡単な発表をすることになりました。

    初回顔合わせの会で集まったメンバーは、必ずしもAndroidの下回りに精通している人たち・・・というわけではなく、これから学びたいと思っていらっしゃる方もいて安心しました。正直、仕事としてはAndroidとは無縁のアプリばかりをやってる人なので、場違いだったらどうしようかとも思ってたもので。

    まぁ、でも、そういうわけなので、まだまだ初学者な隠者が、同じくこれから勉強をと思う方に初回らしく示せるものが無いかなと色々考えた末、これから、どこを学んでいきたいか、その指針の一助にでもなればと、Androidのアーキテクチャ構成について、簡単に説明してみようかなと考えています。ま、そんなわけで、まずはお手軽に図からということで、アーキテクチャ図を描いてみました。

    Androidのアーキテクチャといえば、大方の人が思い浮かべるのが以下の図でしょう。公式のWebページで公開されているアーキテクチャ図はこんな感じです。あ、まだサイズ調整等はしていないので、いまいち見難いのは勘弁してください。

    アプリケーション、アプリケーションフレームワーク、ライブラリ、アンドロイドランタイム、Linuxカーネルの5つの層から成り立っています。ところで、実は2008年のGoogle IOで公開されたアーキテクチャ図には、もう一層あって、なお且つ、ポーティング等下周りに着目する人にはそれこそ重要な層なわけです。その層を足した図が、以下のような感じになります。

    その層は、Hardware Abstruction Layer - 通称HAL です。まぁ、そのまま、ハードウェア抽象レイヤですね。Dalvik VMより上の層からハードウェアを利用する場合に、直接カーネルにアクセスするのではなく、ユーザー空間に一層設けて、そこでハードウェアへのアクセスを吸収しています。

    私見ですが、このような層が設けられている理由としては

    ・Linud DriverではGPLになるが、HAL部分はカーネルとリンクしないのでGPLに縛られない
    ・Linuxへの依存をここで吸収することで、上位の層をLinux Kernelに依存しすぎないようにする

    等が考えられるかなと思っています。実際、LinuxのドライバだとGPLなの、いやだなぁ・・・と思うベンダーさんもまだいるのではないかと思います。まぁ、隠者はハード屋ではないので、ドライバのコード読まれる事のリスクがどれほどのものなのかはわかりませんが。
    何か、特殊な技術が読み取られかねないというなら、ドライバは、至極一般的な作りにして、本当に守りたいアルゴリズムは、ユーザー空間に置く事も可能なのかもしれません。
    まぁ、ユーザー空間だけに、パフォーマンス的な制約が気になるところですけど。

    ところで、このHAL、ソースコード上では、libhardware.so等になり、Dalvik VMにロードされます。まぁ、つまり一般的な動的ライブラリです。そして、libcはライブラリの中でも少し特殊な立場にあるわけなのは、プログラマな方ならお分かりの事かと思います。ソースコードを調べると、libcはbionicというディレクトリにまとめられています。他にはローダーであるLinkerや、pthread等、Nativeのライブラリ、アプリケーションを作るときに必要なライブラリ群はBionic の下にまとめられているわけです。

    というわけで、どうせなので、アーキテクチャ図もちょっと変えてみました。



    うーん、どうでしょう。やっぱりいまいちですかねぇ。まぁ、隠者は、HALの部分に大分興味があったりするので、心の声を反映してHALがかなり大きくなってしまってますし。バランスも悪いですね。なかなかどうして難しいものです。まぁ、プラットフォーム関係者向けの資料としては、これくらいの大きさを占めておいてもよいかもしれません。

    実際、Androidのポーティングというと、実は、いくつかの段階を踏む事になります。

    (1) Android向けドライバの入ったLinux Kernelをターゲット上で動作するようにする
    (2) ターゲットのアーキテクチャ向けにAndroidをビルドする。
    (3) init.rc等各種設定ファイルをターゲット向けに書き換える

    ちなみに、動作実績があまりない環境だと
    (4) Dalvik VMのパフォーマンスチューニング
    等も必要になるかもしれませんけど。

    で、ここまでで最低限の動作はしますが、これに、
    (5) 接続するセンサーやGPS,カメラ等のHALを用意する
     まで行わないと、各種デバイスがAndroidのアプリケーションから動かない状態になってしまいます。
    ついでにいうと、HAL層のグラフィック向けの処理を描かないと、すべてがCPUで処理されるためパフォーマンスがグンと落ちるという事になったりもします。
    真面目に動くAndroid機器を作るとなると、どうしてもこのHALをきちんと実装する必要がでてくるわけです。


    というわけで、次回の日本アンドロイドの会 横浜支部 プラットフォーム部(長いから次回からはPF部って呼ぶかな) では、このアーキテクチャ図をもとに、アーキテクチャと、簡単なディレクトリ構成と、隠者がソースコードを追いかけたり、ポーティングするときに使っている方法やツール等を、簡単にお話しできればいいなぁと思っています。


    P.S.
    いや、まぁ、ポーティング話で実は一番大変そうなのが
    (6) 動作検証
    なわけですが、みなさんどうしてるんでしょうねぇ。

    2010年8月13日金曜日

    初投稿

    というわけで、今回ははじめましての隠者でございます。
    基本的にぐうたらなプログラマーでして、日記というものが続いた記憶がございません。

    恥を書くのもなんなので、ブログはもう二度としないと心に誓っていたのですが、ここ最近、Androidコミュニティにおいても、そろそろ情報を取得する側ではなく、発信する側に回らないとイケない頃合いなんじゃなかろうと思いはじめまして。

    そのようなわけで、なんとなくブログに挑戦してみることにしました。
    この先いつまで続くかわかりませんが、この、のほほん日記。生暖かい目で見守っていただければ幸いです。