2016/08/29

Asus ZenPad7.0 のFactory Imageを書き込む

SIMフリーのAndroidタブレット Asus ZenPad7.0(Z370KL)にAndroid6.0のアップデートが来ていたのでインストールしたのですが、Android6.0ではうまく動かないアプリがあることがわかりました。

Androidのバックアップとリストアで前のバージョンに戻るかやってみましたが、残念ながらきれいなAndroid6.0の状態に戻るだけでした。

Asusのサポートページのドライバー&ツールというところでファームウェアが公開されていたので
バージョン JP_12.32.1.40 をダウンロードしました。

ブートローダを起動してSDカードからファームウェアを更新する手順は以下のとおりです。

  1. 電源を完全に切る
  2. マイクロSDの直下にZIPファイルを置いたものを本体に取り付ける
  3. 音量+ボタンと電源ボタンを同時押ししてブートローダを起動する
  4. 音量ボタンを何度か押し、「Recovery」モードで起動する
  5. apply update fromを選ぶ
  6. アップデータ(今回はUL-P002-JP-12.21.1.40-user.zip)を選び、電源ボタンを押して決定
  7. インストールが始ま...らない
以下のようなメッセージがでて、インストール出来ません。
 Verify Image...
 Invalid footer....

なんでだろうと思い、zipファイルを開いてみると、zipファイルの中に同じ名前でzipファイルが有りました。

更に解凍するとboot.imgを含むディレクトリが出てきました。
階層で表すと以下の様な形です。

UL-P002-JP-12.32.1.40-user.zip
└UL-P002-JP-12.32.1.40-user.zip
  └UL-P002-JP-12.32.1.40-user
    ├boot.img
    ├file_contexts などその他

1回解凍したUL-P002-JP-12.32.1.40-user.zip を改めてSDカードにコピーし、
同じ手順でやったところ

 Finding update package...
 Opening update package..
 Verifying udpate package...
 Installing update...
 Patching firmware Images...
 script succeeded: result was [/system]
 
 Install from sdcard complete.

と無事インストールができました。
リカバリーメニューのトップに戻り、[reboot system now]を選んで再起動。

Android 5.1.1のセットアップが開始され、無事戻すことができました。

2015/11/21

ロジックアナライザを購入

会社でロジックアナライザを使う機会があり、電子工作には大変便利なものであるとわかりました。
ロジックアナライザは回路上のデジタル信号をキャプチャして解析するもので、printfを使った根性デバッグしなくてもよくなるツールです。
 
会社にあるのは10万円以上するロジックアナライザで、チャネル数も多く置き場所もとるので個人で買うにはオーバースペックです。なのでチャネル数が8チャネル程度の安価なロジックアナライザは無いものかと秋月電子で探したところ、いいものがありました。

Salae logic 4という商品です。

価格は14,200円で、上位モデルの logic 8は28,400円、 logic pro 8は62,000円、 logic pro 16は77,800円となっています。
モデル間の違いは最大サンプリング周波数とチャネル数で、logic4は4ch・最大12MHz、logic8は8ch・最大100MHz、proは8ch/16ch・500MHzです。あとはアナログ入力機能の有無といったところです。

logic4かlogic8でどちらを買おうか迷いましたが、ひとまずはlogic 4を買いました。
どうしても足りなくなったらlogic8を買おうかなと思っています。
 
モノが届いてまず驚いたのはその小ささと軽さです。
42mm x 42mm、重さも30g程度。

とっても小さい!
PCとはマイクロUSBで接続し、バスパワーで動作します。
キャプチャ用の専用ソフトもあるのですが、Windows,Mac,Linuxで使えるようになっています。
キャプチャしたデータはそのままUSB経由でPCに転送する方式のため、
本体メモリに格納するタイプよりも長い時間の計測が可能です。


シリアル通信、I2C、SPIなど、主要なプロトコルアナライザーも標準でついているので、
Arduinoなどのマイコンで遊ぶ人は一つ持っておいたほうが便利だとおもいます。

2015/06/05

Intel Edisonの修復

Intel Realsenseはすぐ通信が切れてしまうので放置してます。。


それはさておき、最近またIntel Edisonを触り始めたのですが、
ファームウェアのアップデートに失敗してデバイスマネージャで認識されなくなりました。

  1. USB OTGポートにUSBケーブルをつなぐと、デバイスマネージャにMerrifieldというデバイスが2~3秒あらわれ、消える。(MerrifieldというのはAtom Z3400/3500シリーズのコードネームとのこと)
  2. Flasall.batを実行しても、Waiting dfu device 8087:0a99 のところでタイムアウトしてしまう
  3. FTDIのUSBシリアル変換チップが積んであるほうのUSBポートの出力では、

******************************
PSH KERNEL VERSION: b0182929
                WR: 20104000
******************************
SCU IPC: 0x800000d0  0xfffce92c
PSH miaHOB version: TNG.B0.VVBD.0000000c
microkernel built 10:14:01 Jan 13 2015
******* PSH loader *******
PCM page cache size = 192 KB
Cache Constraint = 0 Pages
Arming IPC driver ..
Adding page store pool ..
PagestoreAddr(IMR Start Address) = 0x04899000
pageStoreSize(IMR Size)          = 0x00080000
*** Ready to receive application ***
 で止まったまま。。

Flashall.bat --recovery をやってみても、
You should install xfstk tools, please visit http://xfstk.sourceforge.net/

と出てきて終わってしまいます。

xfstk toolsのWindows版のインストーラは残念ながら無いようなので、Ubuntu機を用意してxfstkをビルド。
ビルド方法は Building xFSTK on Ubuntu 14.04 (32-bit) for flashing Edison  を参照ください。

そうして Flashall.sh --recovery と実行すると、なにやら書き込みが行われてDFU Deviceとして表示されるようになりました!

あとはflashall.sh を実行してファームウェアを転送して、無事Edisonが復活しました。
さて、天気予報ガジェットでも作りますかね。。。



2015/03/17

Intel RealSense Camera一覧

先月 IntelのReal Sense F200というカメラを購入したのですが残念ながらいじれていません。
Intelのサイトで情報収集でもしようかなと思ったら、RealSenseのカメラは1種類じゃないようです。

  • フロント向け(モニタの上に置いたり、液晶パネルのベゼルに埋め込んだり)のFront F200カメラ
  • 背面向けのRear R200カメラ
  • 可変焦点写真を撮るためのSnapshot
の3種類があるとのこと。




F200とR200はリアルタイム処理向け、Snapshotはオフライン処理向けのカメラのようです。
測定できる距離もリアルタイム処理向け(F200,R200)は0.5m~3m程度に対して、Snapshotは30m程度までと、使っているカメラも方式も異なるようです。

現時点で購入できるのはF200のみで、SnapshotはDellのVenue 8 7000についていますが、この機種はAndroidタブレットなのでRealsense SDKで開発を行うことはできなさそうですね。

SnapshotもRealSenseのホームページには"そのうちAndroidタブレットじゃない状態で発売するから待っててね"といった感じで書かれているので、IntelのWebサイト経由で買えるようになると思います。

まずはF200を使いこなさないと。。。
ではまた。

2015/02/23

Intel RealSense カメラが到着

去年の10月ごろに予約した、Intel RealSenseカメラが到着しました。
本体が99ドル、送料が25ドルで合計1万5千円ほどでした。

箱の中には本体と薄い説明書のみ。詳しくはWebを見てね、ということなのでしょう。


インターフェースはUSB3.0が1本あるのみです。
KinectはACアダプタも必要でしたが、こちらはUSB3.0からの給電だけで動作するようです。
USB3.0は900mAまでいけたとおもうので、カメラ+3Dセンサ+処理チップで消費電力が4.5W未満ということでしょう。

RealSense SDKをIntelのサイトからダウンロードしてインストールして中身を確認したところ、
サンプルプログラムに3D Scanというものがありました。

カメラで3Dデータを取り込み、obj形式にしてくれるという優れものです。
赤外線で3Dデータを取得している関係上、透明なものや反射するものはスキャンすることができないor難しいので、簡単そうなリサラーソンのぬいぐるみをスキャンしてみました。

アプリケーション側で、objファイルを生成してくれるので、meshmixerなどで読み込めるようになっています。 



音声認識などの機能もあるようなので、ドキュメントを見ながらすこしずついじっていきたいと思います。

ではまた。

2014/12/13

メインPC入れ替え

年末なので、各PCメーカーがオンラインストアで年末セールを行っています。
そろそろメインPC入れ替え時かな~と思っていたので、新しくデスクトップを購入しました。

今回購入したのはHPのPavilion 500 440jpというミニタワーのデスクトップ。

届いてからメモリを増設しようと側面カバーを開けてびっくり。
  • メモリスロットが2本しかない
  • 3.5インチベイがなく、HDDが増設できない
コストダウンや省スペース化・軽量化のためにいろいろと削っているのでしょう。
4GB x 4本の16GBにしようと思いましたが、仕方なく4GB x 2本の8GBに。
増設用のSSDもとりあえず内部にテープで固定しました。回転部品がないSSDだからこそできる芸当ですね。


新メインPCのスペックは以下の通りです。手持ちの部品があったとはいえ、10万円でここまで組めるとは驚きです。 Core i7-4790 は単体で買うと4万円ぐらいするようですし。
  • CPU: Core i7-4790 
  • メモリー: 8GB
  • HDD:500GB (Windows8.1)
  • SSD:240GB (Ubuntu 14.04)
  • グラフィック:内蔵
さっそくubuntuのほうに開発環境を整え、Intel edisonのカーネルをビルドしてみました。
マニュアルには4時間ぐらいかかると書かれていましたが、2時間ぐらいで終わったようなので速度は申し分ないかと思います。

Core i7-4790には Intel HD graphics 4600がついているので、OpenCLの実行スピードのほうも気になるところです。
そのうち、外部給電が不要なGeforceかRadeonを積んで比較してみたいです。

ではまた。

2014/10/13

OpenCLについて理解する

OpenCLの書籍(OpenCL Programming Guide)とOpenCLの仕様書を読んで少しはOpenCLについてわかったので、メモを残しておきます。
詳しくは書籍または仕様書にて確認ください。

  • OpenCLはCPUとGPU,さらにはDSPなどをも並列計算のリソースとして活用できるようにするプラットフォーム
  • OpenCLはISO C99をベースにしたOpenCL C言語を使用
  • OpenCLはベンダーに依存しないオープンな規格
  • データ単位またはタスク単位での並列プログラミングモデルをサポート
  • 組み込みデバイス用のプラットフォームも提供

OpenCL プラットフォーム
OpenCLプラットフォームは一つ以上のOpenCLデバイスから構成されます。
OpenCLデバイスはひとつ以上のCompute Unitに分けられ、さらにCompute Unitは複数のProcessing Elementに分けられます。
実際の計算はProcessing Elementが行います。


OpenCLのプラットフォーム(OpenCL 仕様書より)
ホストPC上には複数のプラットフォーム(AMDのOpenCLランタイム、nVidiaのOpenCLランタイムなど)が同居できます。

OpenCLカーネルとOpenCLプログラム
OpenCLカーネルは、Processing Element上で実行可能なコードを持つオブジェクトです。
OpenCLプログラムは、OpenCLカーネルの集まりです。

ワークグループとワークアイテム
画像データなどを並列処理する場合、計算元のデータはいくつかのグループに分けられます。
一つのワークグループには一つ以上のワークアイテムが所属します。
ワークアイテム=Processing element、ワークグループ=Compute Unitとなります。

メモリの管理
ホスト(デスクトップPC,ノートPC、その他)にメモリが積まれているように、OpenCLデバイスにもメモリが積まれています。OpenCLデバイス上のメモリは、4つの使われ方をします。

  • グローバルメモリ  すべてのワークアイテムから読み書き可能なメモリ領域です。同期コマンドを使用しない限りは、メモリの一貫性は保証されません。
  • コンスタントメモリ グローバルメモリに置かれる読み取り専用の領域です。ここにはカーネルが実行するコードが置かれます。

  • ローカルメモリ 各ワークグループに割り当てられたメモリ領域です。同一ワークグループに所属するワークアイテムからは自由に読み書きできますが、他のワークグループからはアクセスすることができません。
  • プライベートメモリ 各ワークアイテムに割り当てられたメモリです。他のワークアイテムからはアクセスできません。
メモリ(OpenCL 仕様書より)

コマンドキュー
OpenCLはメモリの転送、プログラムの実行などのコマンドをキューに貯めこんで処理していくコマンドキュー方式で動作しています。プログラマが明示的に同期コマンドを発行しない場合は、前のコマンドが完了していなくても次のコマンドの実行が開始されます。


プログラムの実行方法(かなり大雑把)
  1. ホストプログラム上でOpenCLデバイスを検索します。
  2. OpenCLデバイスを選び、コンテキストを作成します。
  3. コンテキストを使ってOpenCL コマンドキュー、OpenCLカーネル、OpenCLプログラム、OpenCLメモリオブジェクトを作成します。
  4. コマンドキューにカーネル、メモリ、プログラムを放り込んでOpenCLデバイスに転送し、処理を実行させます。
  5. 終わったらホストプログラムから結果を読み込みます。

以上、OpenCLの簡単なメモでした。