エントリー

OpenBlocks A6 購入

次期自鯖候補として、ぷらっとホームの OpenBlocks A6 を買ってみました。

お値段のほうが、他のARM搭載のシングルボードコンピュータと比べて割高な感じがしますが、Serial-ATAのSSDが接続できて、Gbit-Etherポートが1つ、おそらく耐久性も高いはず、と考えれば妥当かなと思います。
AX3の方を選ばなかったのは、CPUパワーより省電力を優先したためです。

 

それでは本体を見ていきましょう。

 

20120805_61-1.jpg

到着~ ヾ(*´∀`*)ノ キャッキャッ♪

 

20120805_61-2.jpg

 早速、電源を入れる前に基板を取り出します・・・え?
ま、とにかく、CPU等の発熱量の大きい部品は全て裏面に配置されていて、ケースに熱を逃がす構造となっています。

 

20120805_61-3.jpg

 ARMコア搭載SoC - Marvell ARMADA 310 (88F6283)

 

20120805_61-4.jpg

 DDR2メモリ - Hynix H5PS2G83AFR

 

20120805_61-5.jpg

Ethernetコントローラ - Marvell 88E1310

 

ハードウェアとしてはこんな具合です。
SSD非搭載モデルを購入しましたが、SSDを自力で搭載する話はまた次回に。

 

AMDの罠

  • 2012/07/28
  • カテゴリー:PC

数ヶ月前にメインPCを AMD から Intel へと鞍替えしました。
CPUとマザーを変えただけなので、新旧構成の違いは下記の通り。

 

旧構成
CPU: AMD Phenom II X4 910e
Mother: ASUS M4A88TD-M EVO/USB3

新構成
CPU: Intel Core-i7 3770T
Mother: GIGABYTE GA-B75M-D3H

 

OSはWindows7を使っていましたが、再インストールが面倒臭かったので、AMD系ドライバを全てアンインストール後、CPUとマザーを入れ替え、Intel系ドライバのインストール、という手順で移行作業をしました。

 

Windows7は無事に立ち上がり、ドライバのインストールも難なく終了。ところが、Intel HD Graphics 4000 のドライバだけがうまく動きません。デバイスマネージャで詳細を確認してみると・・・

このデバイスが使用できる空きリソースが不足しています。(コード12)
このデバイスを使用する場合は、このシステムのほかのデバイスの 1 つを無効にする必要があります。

リソースを調べましたが競合はなく、各々きちんと割り当てられています。他のデバイスを無効にしてみても、BIOSで切っても変化はなし。また、ドライバを再インストールしても改善しません・・・

 

Google先生に聞いてレジストリをいじりましたが(HackFlagsの値)、こちらも効果なし。これといった対処方法が見つからなかったので、結局余っていた RADEON HD5450 のカードを増設し、オンボードを切ることにしました。とりあえずデバイスマネージャでは、見た目不具合がないようにしました。

しかし旧構成の時と比べ、明らかに起動後デスクトップが表示されるまで待たされる・・・起動はドライブはSSDなのに・・・

うーんやっぱり気になる! ということで今回再び解決を目指してみました。

 

まず考えられることは、AMD(ATI)のドライバをアンインストールしましたがゴミを残してるんじゃないか、ということです。その昔ATIのドライバはいろいろ言われていた時期もあり、あっても不思議ではありません。

 

ひとまずブートログを取得して見てみることにします。
ブートログは起動時にF8を押すとログを取るオプションを選ぶことができます。またログの場所はSystemRoot(標準では C:\Windows?)にある ntbtlog.txt です。
 
取ったログを 「amd」 や 「ati」 で検索してみると、

Loaded driver \SystemRoot\system32\DRIVERS\AtiPcie.sys

という箇所を発見。やっぱりゴミが残っていたようです。名前からしてPCIe(PCI-Express)関連のドライバみたいですので、ますます怪しい。早速デバイスマネージャでデバイスを一つ一つ確認していくと 「システムデバイス - PCIバス」 のドライバ詳細に AtiPcie.sys がリストアップされていました。

 

思いきってPCIバス自体を削除し再起動すると・・・

なんと HD 4000 のリソース不足が解決しているではありませんか! PCIバスのドライバ詳細をみると AtiPcie.sys が消えて pci.sys になっています。

やったね!! (´∀`)bグッ!

 

と思うと同時に、きちんとアンインストールしてくれないAMDに対してモヤモヤするのでした。

 

DE0-nano + ドットマトリックスLED で遊ぶ その3

さて前回の続きですが、USBホストコントローラ部分の回路については触れていませんでした。ざっくりと言ってしまえば、Sparkfun の USB Host Shield と回路は同じです。

SparkFun Electronics - USB Host Shield
http://www.sparkfun.com/commerce/product_info.php?products_id=9947

 

DE0-nanoとの接続については、前回紹介した microbridge_nios2 の README.md に書かれていますので、そちらをご参考にということで。

DE0-nanoへ繋ぐ端子のうち、唯一オープンになっていないINT端子は MAX3421E 直近から引き出します。抵抗を挟んだ向かい側(電源側)に繋ぐと意味がなくなってしまうので注意です。

 

MAX3421E に供給する12MHzのクロックですが、せっかくFPGAがありますので水晶等は使わずにFPGAのPLLで生成することにしました。

FPGAのクロック50MHzを6逓倍して25分周する設定で12MHzが得られます。これはNiosIIコンポーネントに組み込む必要がないので、MegaWizardを使ってNiosIIの外に置きます。またクロックを出してくる端子は、MAX3421Eになるべく近くなるようにアサインします。

 

20120525_58-1.jpg

 

次に、ドットマトリックスLEDを制御するモジュールを、NiosIIのコンポーネントとして組み込みます。「SOPC Builder」と「Qsys」 というツールがあり、どちらを使ってもできますが、私はQsysを使いました。(QuartusがQsysを使えと言うので)

組み込み方法は・・・長くなるので省略します。スミマセン。

 

Sim さんの blog 「Qsysを使ってみた」という記事で紹介されていますので、そちらをご覧ください。

・Sim's blog
http://blog.goo.ne.jp/sim00

 

とりあえず、試行錯誤でやっていれば、そのうちなんとなく理解できて形になります。組み込んだ後の状態はこのようになります。

 

20120525_58-2.jpg

 

電源を切っても、回路データやNiosIIのプログラムが消えないように、EPCSにこれらを保存します。EPCSからプログラムをロードするには、EPCS Flash Controller のコンポーネントを追加しておく必要があります。

ただしリセットベクタの飛び先をメモリからEPCSに変えることになるので、NiosIIのEclipseからプログラムを直接実行できなくなります。デバッグが終わってから組み込んだほうがいいかもしれません。(まあリセットベクタのアドレスをメモリに設定すればいいだけですが…)

 

NiosIIで走らせるプログラムは、@iseroidさんのサンプルプログラムに若干手を加えた程度です。Android側からは、ドットマトリックスの 32x16 の64バイトデータが直接来ることを期待しています。というわけで実はFPGAはあまり仕事をしていません。

修正したファイルです。
mb_de0nano_demo.c

 

後は回路合成後のsofファイルと、NiosIIプログラムのelfファイルをEPCSに書き込むだけ・・・と、まあこのような感じでDE0-nano側は作っています。途中の工程をかなりブッ飛ばして書いていますが、細かいところはグーグル先生にお任せすることにしましよう。

 

ここからいよいよお待ちかねの、Android側のプログラミングです。

早速ですが、Androidの画面に描いた絵をドットマトリックスLED上に表示させるデモを作ってみました。そんなに難しいことをしているわけではないので、詳細はソースコードをご覧ください。

LEDを点灯させるかどうかは、特定のポイントで判定するよりも領域の平均的な明るさから決めたほうが、輪郭が綺麗になるとは思いますが、今回は時間があまりなかったということを言い訳として簡単な処理にしました。

ソースコードはこちら。
touch2matrix.zip

 

動いているところなど。

 

最後にLED上で動画を表示させてみたかったのですが、

 

20120525_58-3.jpg

 

残念、静止画で~す。
動画表示は無理っぽいですね。というのも・・・

 

  • 画面を取り込む手段が無い
    一番やりたかったことは、Android側で画面データを逐次取り込み、 LEDに送るデータに加工して転送するということでした。

    しかし、通常のJava(というかAndroid-API)を使っての開発では無理ということが徐々に判明してきました。フレームバッファ等に直接もしくは間接的にアクセスする手段がないので、例えば、動画を再生しつつその映像に対して独自の効果をかける、ということもできません。(カメラの映像ならできるんですよね。ファイルからの映像でできないのは著作権がらみ?)

    NDKならできるかもしれませんが、詳しくないのでわかりません。

    機種によっては、ADB経由でフレームバッファのデータを取得できます。日曜エレクトロニクスの @yishii さんが試されています。Garaxy-SでもできたのでSamsungの他の端末でもおそらくできます。IS01では無理でしたのでSHARPの端末は不可能かと。
     
  • 転送速度が遅い
    フレームバッファがADB経由で読めたとしても、800x480の画面サイズのデータがRGB888で送られてくるので、Hi-Speedでないと間に合いません。

    USBの転送速度、MAX3421EとFPGA間(SPI)の速度が遅いので、頑張っても1fpsいければいいところだと思います。

 

=====

 

先日5/19に、ECCコンピュータ専門学校を会場とした「関西FPGA・DE0勉強会」がありました。拙作のボードを持って行ってデモをしたところ、キャンパスニュースに(かなり大きく)載ることになりました。ありがとうございます! (テヘ

・ECCコンピュータ専門学校
http://comp.ecc.ac.jp/

・ECCコンピュータ専門学校 キャンパスニュース (5/22)
http://comp.ecc.ac.jp/news/campus/detail.php?id=2592

 

九州4日間の旅

  • 2012/05/02
  • カテゴリー:

先月中旬のことになりますが九州へ旅行に行ってきました。
目的地は長崎の五島、それと熊本です。熊本は生まれ故郷なので、旅行というより帰省に近い感覚ですね。

 

五島へ渡るときの船を除き、全行程を車で移動しました。もちろん五島内も車移動です。さすがに1500km以上運転したので帰宅したときはヘトヘトでしたが・・・

今回の旅行は五島がメインですが、時間的な都合により福江島のみの観光となりました。五島うどんを食べるなら中通島(上五島)に行くべきですが、それはまた次回ゆっくり余裕をもって来たときにしましょう。

 

さて写真はすべて Xperia-ray SO-03C で撮影しています。

画像自体は未加工で掲載していますので、今の携帯カメラがどれだけの性能を持っているかの参考にして頂ければと思います。カメラ専用機と比較すれば画質的に劣る部分が多いですが、後でL判でプリントして見るならこれで十分です。コンデジいらねーと改めて思いました。

 

初日は長崎までひたすら高速を走りました。長崎港の近くのビジネスホテルで一泊。

途中、昨年あたりに橋が開通して車で渡れるようになった伊王島(こちらも『いおうじま』と呼ぶらしい)にも寄りましたが、すでに日が落ちて真っ暗で何も見えませんでした。

 

2日目は高速船(ジェットフォイル)で長崎港を7:40に出発して、9:00頃五島に到着。

 

20120502_57-1.jpg

 

本来はフェリーに乗る予定でしたが、前日になってフェリーがドックダイヤになっていることがわかり、急遽変更。高速船に空席があったのでなんとか乗船できました。

これから五島に行く人は注意して頂きたいのですが、五島観光協会のページからたどれる九州商船のダイヤは、リンク先が間違っていて古いダイヤが表示されます。必ず九州商船の公式HPトップからたどるようにしましょう。(2012/4 時点)

危うく1日しかない五島観光が何も出来ずに終了するところでした。
前日にネットの使えるビジネスホテルに泊まって正解・・・

 

五島上陸後、レンタカーを借りて時計回りに海沿いを進みました。

 

鬼岳

 

20120502_57-2.jpg

 

鬼岳を下ったところ。前に見えるのは火ノ岳かな。

 

20120502_57-3.jpg

 

大浜郵便局付近の海岸。海の水が透き通っていました。

 

20120502_57-4.jpg

 

大瀬崎断崖

 

20120502_57-5.jpg

 

お昼ごはんの時間を超過していたので灯台までは行きませんでした。慣れていない車かつ予想以上のぐねぐね道で運転手(私)が酔い気味・・・

 

引き続き時計回りに走り、道の駅到着。

 

20120502_57-6.jpg

 

バイキングタイムの時間が残り15分しかありませんでしたが、ぎりぎりセーフ。事前に電話で問い合わせましたが、バイキングは14:00までなので、遅くても13:00くらいには到着しておいたほうが良いでしょう。

 

魚津ヶ崎公園付近へ。ちょうど一面の菜の花でした。

 

20120502_57-7.jpg

 

さらに走って、堂崎天主堂に到着。

 

20120502_57-9.jpg

 

多分ここの方が飼われている犬。(*´Д`)モフモフ

 

20120502_57-8.jpg

 

そういえばレンタカーの方から「魚津ヶ崎と堂崎との間の162号は道幅が狭いのでオススメしません」と言われていたことをすっかり忘れて通っていました。確かに離合が厳しい箇所もありましたので注意が必要です。

その後、福江港に戻った頃にはもう日が翳るところでした。
この日は港から近い「カンパーナホテル」に宿をとり、五島牛ステーキをいただきました。とってもおいしかったです。

3日目は、7:30発の便に乗るためホテルを朝早くに出ました。もう少しゆっくりしたかったのですが、この便を逃すと次は11時頃までないので仕方ありません。

希望を言うなら、9時台の便があればなぁ・・・と。

 

午前7時頃の福江港。船以外はまだ目覚めていない感じ。

 

20120502_57-10.jpg

 

てなわけで、五島を後にし熊本へ向かいました。
熊本の実家で一泊し4日目に自宅へ戻ってきましたが、この日も高速をひたすら走るだけの移動日になりました。新幹線で行きたいな~とは思いますが、1人ならともかく複数人だと運賃がとんでもないお値段になりますね。

車で九州へ行くなら1週間くらいは時間が欲しいところです。

 

DE0-nano + ドットマトリックスLED で遊ぶ その2

2月初めには完成していましたが、とりあえず完成ー!ということで。

 

20120226_54-1.jpg

 

ボード右上に何やら怪しげなQFPのICが載っていますが、USBホストコントローラーのMAX3421Eです。実は最終的にAndroidと接続することを企んでいたりします。「なんだ結局Androidなのか」と思っちゃうかもしれませんが、まあそう言わずに。 ^^

急いで作ったので、若干雑な仕事になってしまいました。

 

ちなみに写真のQFP変換基板ですが、Aitem-Labにて購入しました。変換基板って無駄なスペースをとってしまうものばかりで、省スペースのものって電気街のパーツ屋を探し回っても見つかりませんでした。ネットで見つけて購入しましたが、狭いスペースでも使えて良い感じです。

 

ボード上の回路についてですが、ソース側は74ACTのシフトレジスタを、シンク側はトランジスタアレイを使用し、FPGAからそれらをコントロールしているというものになっています。 ボードの回路図

シフトレジスタは、以前の記事にも書いていますが、東芝の TC74ACT164 を使う予定でした。ただ、どの部品屋にも在庫がない状態だったため、TI の CD74ACT164 で代用しています。仕様的にも問題はありません。

 

LEDの電流制限抵抗は120Ω。決め方は下記の通りです。とりあえず 74ACT164のPch側のON抵抗は無視しています。流す電流も高々16mAですし、トランジスタアレイの Vce(sat) の特性ばらつきや温度による変動の方が大きいので、そこまで細かい値は気にする意味も無いと思います。

R = ( Vcc - Vf[LED] - Vce(sat)[TrArray] ) / 16mA

5V電源については今のところDE0-nano経由で、PCのUSBポートから供給しています。Androidを接続する場合は確実に供給能力不足になるので、外部電源が必要になります。

 

さて、FPGAの方に話を移しましょう。
ドットマトリックスLED制御部分のVerilogHDLはこちら。例によって無保証です。

matrix_led_ctrl.zip

 

構成としては、32bitx16のメモリを内部に持っていて、これにデータを書き込むことでその内容を表示します。またNiosIIのコンポーネントとして組み込むことで、ソフトウェア上で表示パターンを変更することができるようになります。

ゆくゆくはAndroidで制御しますので、ベースとしては@iseroidさんが公開されているNiosII用のMicrobrigeを使います。githubから取ってこれます。

https://github.com/iseroid/microbridge_nios2
 
今回はここまで~。(次回は未定)

 

ユーティリティ

Author


oaks (twitter: @oks486)

記事の内容に関しては無保証です。何事も At your own risk ってことでよろしく。
リンクはご自由にどうぞ。

SPAM対策が面倒なため現在コメント投稿機能を停止しています。あしからず...

検索

エントリー検索フォーム
キーワード

Feed

リンク