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のコードを追いかけながら、この石について少し勉強しといてみたいなぁとか思ってたりします。