2011年9月28日水曜日

makeを楽しく学ぶある1つの方法「makeで確認。幸せを作る方法。」

makeで確認。幸せを作る方法。

makeについて考えていた時に、ふと閃いたある1つのアイデアを共有したいと思います。

エンジニアの卵達から耳にする事の多い「makeに慣れない。」という言葉。
以前からどうすれば楽しく伝えられるかなぁと考えていました。

先ほど少しだけ面白い方法を考えついたので御紹介します。
名付けて「makeで確認。幸せを作る方法。」です。

用意するもの

  • GNU make
  • テキストエディタ

基本ルール

  1. Makefileという名前のファイルをテキストエディタで作りましょう。
  2. コロンを境に、左側に得たい事、右側に必要な事を書きましょう。
  3. 得たい事と必要な事の組は複数あっても構いません。
  4. 得たい事を実現するための記述は、組み合わせの下に書きます。

やってみよう(実例)

私は、最終的に「幸せ」を手に入れたいと考えました。
基本ルールによると、コロンの左側に得たい事を書きますから以下のようになります。

happy : 

次に「幸せ」のために必要な要素を、コロンの右側に書きます。

happy : time dream family friends

私は、幸せの実現のために、時間、夢、家族、友達を挙げることにしました。

次に、幸せに必要な各要素にも、必要な事があるかもしれません。
それについて書いてみます。

time :
dream :
family :
friends :

本当はこれらの要素にも必要な事があるのですが、無尽蔵に広がってしまうので、ここでは「いずれの要素についても、何も必要無し。」という事にします。

実際にmakeを実行した時に楽しくなるように、上記の結果に加えて実際の動作を行うコードを付け加えます。

実際の動作はコロンで結んだ関係図の一行下に記述するようになっています。
この行だけ特別にTABを頭に入れるルールになっています。

完成したのが以下のリストです。 (コードの中の「>-------」はTABに置き換えて下さい。)

happy : time dream family friends
>-------cat elm_time elm_dream elm_family elm_friends > my_happy
time :
>-------echo "The time." > elm_time
dream :
>-------echo "The dream." > elm_dream
family :
>-------echo "The family." > elm_family
friends :
>-------echo "The friends." > elm_friends

それでは実際に動作させてみましょう。

> make
echo "The time." > elm_time
echo "The dream." > elm_dream
echo "The family." > elm_family
echo "The friends." > elm_friends
cat elm_time elm_dream elm_family elm_friends > my_happy

見事に「私の幸せ(my_happy)」が完成しました。
ちょっと幸せの中身を覗いてみましょう。

> cat my_happy 
The time.
The dream.
The family.
The friends.

こんな感じで幸せが完成しました。

Makefileは基本的に「コロンで結んだ依存関係」を「解決するための実行」を記述するようになっています。上記の例のように最終的に欲しいものが4つから構成されていても、1つずつ丁寧に依存関係とその解決方法を書いてあげれば良いのです。

ここでもう1つ実験してみましょう。

必要な要素が足りないケースを作ってみます。
先ほどの「幸せ」に必要な要素に「お金」を加えてみます。世知辛いですね。

(コードの中の「>-------」はTABに置き換えて下さい。)

happy : time dream family friends money
>-------cat elm_time elm_dream elm_family elm_friends > my_happy
time :
>-------echo "The time." > elm_time
dream :
>-------echo "The dream." > elm_dream
family :
>-------echo "The family." > elm_family
friends :
>-------echo "The friends." > elm_friends

上記にお金の作り方は示されていません。
この状態でmakeを実行してみます。

> make
echo "The time." > elm_time
echo "The dream." > elm_dream
echo "The family." > elm_family
echo "The friends." > elm_friends
make: *** `happy' に必要なターゲット `money' を make するルールがありません. 中止.

あらら。

幸せの生成が中止されてしまいました。
お金の作り方がわからなかったからです。

実際にお金の作り方を教えてあげます。
(コードの中の「>-------」はTABに置き換えて下さい。)

happy : time dream family friends money
>-------cat elm_time elm_dream elm_family elm_friends elm_money > my_happy
time :
>-------echo "The time." > elm_time
dream :
>-------echo "The dream." > elm_dream
family :
>-------echo "The family." > elm_family
friends :
>-------echo "The friends." > elm_friends
money :
>-------echo "The money." > elm_money

これで改造版の幸せが生成されるはずです。

> make 
echo "The time." > elm_time
echo "The dream." > elm_dream
echo "The family." > elm_family
echo "The friends." > elm_friends
echo "The money." > elm_money
cat elm_time elm_dream elm_family elm_friends elm_money > my_happy
> cat my_happy 
The time.
The dream.
The family.
The friends.
The money.

幸せの中身に「お金」が追加されていますね。
成功です。

こんな風にmakeはシンプルなルールの組み合わせで多彩な出来事を作り出すことができるようになっています。 プログラムのコンパイルのためだけでなく、様々な事に応用して楽しむことができるのです。

今回の記事では、構造に慣れ親しむ要素に絞って御紹介しました。
上記要素が骨格を成して、様々な便利な機能を実現できるようになっています。
次の機会にそれらについても触れてみたいと思います。

是非みなさんもmakeで遊んでみて下さい。
そして、makeで悩んでいるエンジニアの卵達には、是非楽しい教え方を試してみて下さい。

2011年9月16日金曜日

LX9 MicroBoardでSoCを体験しよう!

米国Avnet社のLX9サポートページには、使い始めるのに必要な資料が殆ど揃っています。
今日はその中から面白そうな物をピックアップして試してみることにしました。

LX9で遊びたい事の一つはやはりSoC(System On Chip)ということになるでしょう。

そこで登場するのが「uC/OS-III Example Application - Software 301 for the Spartan-6 LX9 MicroBoard」というチュートリアルです。


このチュートリアルを辿ればLX9を使ってSoCに関連する一連の作業(の一部)を楽しむことができます。
  • ハードウェア定義ファイル(system.xml)を読み込んでハードウェアプロジェクトを作成する。
  • ハードウェアプロジェクトを指定して新しいボードサポートパッケージプロジェクトを作成する。
  • ソフトウェアプロジェクトを作成する。
と書いてしまえば3段階なのですが、資料なしでこのステップをIDEのインターフェースのみから汲み取ることはできません。そういう意味でこの資料は有用な内容になっています。

この資料では、Xilinx Software Development Kitを使ったRTOS上でのLEDチカチカを行います。


まずはXilinx Software Development Kitを起動します。
資料に従って作業するとワークスペースには形態の異なる3つのプロジェクトが出来上がります。
例えば、以下のケースでは、上からハードウェアプロジェクト、ボードサポートパッケージ、ソフトウェアプロジェクトです。


Xilinx ToolsからProgram FPGAを選択して、予め用意されたビットストリームファイルを使って回路を定義します。


ダイアログにはハードウェアプロジェクトを作成する時に与えたxmlによって必要な値が与えられていますので、特に何も入力する必要はないはずです。


ちなみに、このビットストリームを流し込む事によってボード上のLEDをチカチカさせるための回路やレジスタが定義され、プログラムのブート待ち状態にすることができます。

やってしまいがちな誤りが、このビットストリームを流し込む前にプログラムのデバッグを始めようとしてしまうこと。それは動きませんです。

Doneを確認したらプログラムを動作させてみましょう。


これで仲良く並んだ2つのLEDが適当な間隔で点滅することが確認できるはずです。
ふむふむと動作を楽しんだ後は、コードを見て楽しみましょう。

BSPには主にMicroBlazeのレジスタを操作するインターフェースを定義したヘッダファイルが配置されています。


OS側はプロセッサ周り、ライブラリ、カーネル、アプリケーションと綺麗に階層化されていますね。


このように、従来では色々な環境整備に時間がかかりがちだったSoC体験を、いとも簡単に実現してしまうのがLX9 MicroBoardなのです。

2011年9月14日水曜日

LX9のXilinx SDKからの書き込み

LX9にビットファイルを流し込む方法

LX9は何と言ってもお手軽にSoCを試す事が出来るのが魅力の1つです。

Xilinx SDKから書き込む場合には予め設定が必要なのですが、どっからどうすんだ?となった方のために整理してみましょう。

まずはhttp://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,768&Prod=DIGILENT-PLUGINからプラグインをダウンロードします。
今日現在ではISE 11, ISE 12, ISE 13に対するプラグインが完備されていました。


後は付属のPDFに従ってインストールすれば完了!です。(え?)
プラグインをISEのプラグインディレクトリにコピーする作業の実行です。


後は各種ツールでの設定を残すのみです。
(このページの設定において、シリアルナンバー指定は割愛しています。詳しくは付属のPDFをご覧ください。)

例えば、Xilinx SDKの場合。


iMPACTの場合。


こんな感じで設定することでJTAG接続ができるようになります。


2011年9月3日土曜日

AVNET Spartan-6 FPGA LX9 MicroBoardの電源を入れてみる

付属する2つのUSBケーブル

LX9 MicroBoardには2つのUSBケーブルが付属しています。

1つは延長ケーブルになっていて、「Direct USB Programming」用のUSBコネクタに接続します。
このコネクタは主にFPGAをプログラムするときに使用し、ボード上のAtmel AT90USB162に接続されています。

もう1つのUSBケーブルは小さい方のUSBコネクタに接続して使用します。
こちらはボード上のSilicon Laboratories CP2102に接続されています。

LX9 MicroBoardに予め書き込まれたデザインはMicroBlazeを使ったものになっていて、CP2102経由でブートの様子を見ることができるようです。
今回はこれを試してみましょう。


使っているOSによって、CP2102に対するデバイスドライバが必要になることがあります。
ちなみにWindows7の場合には特別なインストールなしで使用することができます。


ブートさせる

シリアルポート(115200/8/n/1)を開いてSW4を押すとリセットがかかるようになっています。
ブートした時の様子は以下のようになります。


私は他人の作ったコマンドを見るのが大好きです。
見てみましょう。


と、こんな感じのコマンドが並んでいます。

まぁ、だから何だという話ですが、組み込み装置として見た場合、この手のコマンドが整備されているかいないかで、メインテナンスやデバッグなどの効率を左右します。
ここまでのサンプルを用意することで、敷居を下げようとしている感じが見てとれます。 回路図やUCFなどは米国AVNETのサイトへログインすることでダウンロードできます。

2011年9月2日金曜日

AVNET Spartan-6 FPGA LX9 MicroBoardの開発環境をセットアップする

安価なFPGA開発プラットフォーム

FPGA評価ボードと言えば一万円前後の物が簡単に入手できるような贅沢な時代です。
Spartan-6 FPGA LX9 MicroBoardはソフトコアマイクロプロセッサ開発環境を付属して一万円を切る値段です。
実はこの評価ボードとEDKの特別パッケージなんて噂もあったので購入を控えていましたが、限定的なSDKでも良いかということで購入に踏み切ることにしました。


市場に出回るFPGA評価ボードの中ではかなり小さい部類に入ります。

従来の評価ボードにあるような機能がかなり盛り込まれています。
ソフトコアマイクロプロセッサを動作させる事を念頭に置いたDDR SDRAMもあります。

開発環境のセットアップ

開発環境のセットアップはXilinx社のツールに慣れている人であれば戸惑うことはありません。

が、このボードが初めてのXilinxという方は少し戸惑うかもしれません。
何せセットアップのドキュメントが・・・どこにあるの?という感じです。


参考までに幾つかのシーンをピックアップしてポイントを示しておきます。

まず、LX9 MicroBoardには開発ツールのライセンスが付いてきます。
これは「Spartan-6 LX9 MicroBoard Kit - ISE Design Suite: WebPack and SDK Device Locked, Node-Locked License」という名称が付けられています。

パッケージを開けると付いてくる「重要!(IMPORTANT!)」と書かれた養子に書いてあるコードがユーザ固有のライセンスコードです。これは間違っても捨てないように。


付属していたISEのバージョンは12.4でした。


インストールするエディションを選択する画面が出ます。
これは「ISE Design Suite : System Edition」が正解です。


インストールするオプションの選択が促されると思います。
私はとりあえず全部入れておきました。


LX9 MicroBoardにはRJ-45が付いています。
ネットワークを絡めた何かができるはずです。
インストーラもネットワークのあれこれに備えてネットワークパケットキャプチャツールのインストールを促してきます。


この後ライセンスを登録して完了です。
まず、Xilinx社のサイトで自分用のアカウントを取得しておいてください。
これは無償でできます。

ツールのインストールが完了するとライセンスマネージャが起動します。
ライセンスを登録する場合、以下のようにライセンスマネージャ経由でウェブサイトにアクセスすることで簡単に行なえます。


ログインしていない場合、ログイン画面が表示されます。
ログインするとライセンスを入れる画面がブラウザに表示されるはずです。
ここに箱に同梱されていたライセンス番号を入力し、「Redeem Now」を押します。


ノードライセンスの生成画面が表示されます。
ノードロックのハードウェア固有情報は「ディスク」と「ネットワーク」から選択できます。

過去にライセンスを取得した事がある場合、複数のノードが表示されますので、今回のライセンスを使って開発するマシンを選んで下さい。


生成が終わるとライセンスファイルがメールで送られてきます。


これを先ほどのライセンスマネージャで読み込んで完了です。


ライセンスの状態が気になればライセンスマネージャでいつでも確認することができます。

今回のライセンスには「Xilinx Software Development Kit」のライセンスも含まれるようです。
気になる人はこちらも起動して問題ないことを確認しましょう。

まとめ

今回は勢いで購入したLX9 MicroBoardの開発環境セットアップについて触れました。 EDKのシュリンク版っぽいものは、デバイスロックだけが制限かと思っていました。 ですが、実際にインストールしてみると1年の限定ライセンスのように見えますね。 このあたりはどうなんでしょうか? 個人的に期間限定ライセンスには何の魅力も感じないので少し気になります。

ライセンス周りは意外に面倒ですね。
このあたり、私は考えすぎるとやらなくなるので、細かいことを気にせずにザクザクやるようにしています。
今回の記事もかなり適当ですので、参考にする場合にはくれぐれも自己責任でお願いします。
何があっても責任は取れません。

2011年8月21日日曜日

Proteus 7のデモバージョンを試す(EAGLEの上にも10年)

EAGLEの上にも10年

まだ日本国内でEALGEの知名度がそんなに高くなかった頃からのノン・プロフィット・ライセンス・ユーザなのですが、最近は色んな事を考えて他のCADかあるいはライセンス形態を変更しようと検討を進めています。

具体的には
  • 作った基板を販売できるようにしたい。
  • 階層化設計に対応したCADを使いたい。
  • もうちょっと楽に配線できたらなぁ。
  • ネットリストでPCB CADにデザインを渡したい!(どんな欲求だ!)
  • 実はEAGLE・・・ちょっと設計が大きくなると重い。
  • その他。
など、どれも切実とは言えませんが、少し前に設計したARM Cortex-M3基板設計時に「もうちょっと楽したいなぁ。」というのが発端になっています。

EAGLEの気になるところ

どんな事がネックになったのかをちょっと整理してみましょう。
回路図はA3のシートにゆったり書いて8ページのデザインです。


気になる事の1点目はクロスリファレンスです。

複数ページに渡る図面で「いつも何か気になる事。」の1つはクロスリファレンスの扱いです。
現行のバージョン(バージョン5系)までのEAGLEにおいて、クロスリファレンスは「ULPでなんとかがんばりましょう。」というものです。ULPを使って最終的に仕上がる図面としては「それっぽく」なるのですが、所詮ULPで付けたクロスリファレンス、後からネット名を変えた日には即座に破たんです。本来であれば変更に追従して欲しいところです。

最近のバージョンでは、ネットにラベル名を付ける機能に「クロスリファレンスっぽいタグ」が選択できるようになりました。が、これは現状のバージョンでバスには使えませんでした。


次に気になるのはデザインの再利用性です。

一度設計してデバッグが完了した回路ブロックは、より大きなデザインに対しての単一モジュールとして再利用したいものです。しかし、EAGLEにそんな機能はありません。

例えば、「このオーディオ回路ブロックを再利用したいなぁ。」なんていう時、まぁなんというかコピーするしかないのです。で、よくある間違いが電源系だけ間違えたとか、そんな話です。そもそもコピーなんていうのは対処法としてお世辞にも良いと言える理由が見つかりません。


基板側は4層基板でデザインは小さい部類に入ります。


例えば、EAGLEで基板配線している時に気になるのは、DRCを通すまで重なりに気付かない事があるという点。CADにもよりますが自動的にピンなりビアなりを避けてルーティングして欲しいものです。最近はEAGLEにもFollow-me配線があるのですが、なんというかちょっと違うような気がしています。(適当な書き方ですいません。)

DRCを通さない事ありませんので良いと言えば良いのですが、本当は既存の配線に沿ってルーティングしてくれれば4層の基板を趣味とはいえ引くのに1週間もかかったりしないのでは?と考えたりしています。

Proteus 7

Proteus 7はhttp://www.labcenter.com/index.cfmが製造販売しているCADです。
スターターキットは150ユーロからと導入の敷居はかなり低そうです。

一部の機能に制限があるというデモ版をダウンロードできるようなので試してみる事にしました。
電気設計はISISという名称のツールを使います。


基板設計はARESというツールです。


基板設計側を見る

この手のツールは個人的に、電気設計側が良いと基板設計側がダメだったりとバランスが悪い印象があります。まずは基板設計側で思った通りに操作できるかどうかを確かめます。

黄色の矢印は「主にこっち側に配線が伸びているよ。」というものを示すもののようです。
ルーティングはルーティング用アイコンを選択してピンをクリックすれば始まります。
「おっと。意外にも良い感じだ。」なんてこの時点で感じました。


で、情けない話ですが・・・


引いたところでネット名が即座に確認できる!なんて感動してしまうわけです。
まぁ、EAGLEの常識がCADの常識なんてこれっぽっちも思っていないわけですが、それでも「なんだかなぁ、自分。」という感じです。

当然のようにデザインルールで定めた範囲で的確にルーティングさせるようになっています。
配線できない所には行かせません。


当然のように予めネットにつけておいたアトリビュートに従って配線幅も適切なものになるようになっています。EAGLEだと後から自分で修正したり、引く前に選択したりしていました。で、最後にDRCの結果を見て修正するなど・・・。これが時間がかかるのと神経質な操作になったりして意外にストレスになったりします。

電気設計側を見る

基板設計側が「パッ見て」良さそうなので電気設計側も見てみる事にしました。

既存の電気図面にシートを1枚追加して、コンポーネントを適当に配置し、配線してみます。
配線したネットにネット名を付けて「デザインエクスプローラ」なるものでネットの配線状況を確認してみました。


どこのCADとは言いませんがネットに名前を付ける程度で戸惑うようなユーザインターフェースになっているCADも少なくありません。まともに機能しないというのもその一つです。

ですが、少なくともISISにはそういった点は見つかりませんでした。
事前調査に進む為の第1関門突破といったところでしょうか。

そして、嬉しいのが階層化設計が表現できる機能。
回路ブロックを定義し、「Goto Child Sheet」でそのブロックに飛べるようになっています。


子シートに飛ぶと内部設計が表示されますね。


これが実現できているのですから、きっとクロスリファレンスもうまくやってくるでしょうと期待してしまいます。

いずれにせよ

そうは言ってもEAGLEは私にとって身分相応のCADで、費用対効果はこれまでの実績から十分なものと言えるでしょう。本当に小規模な設計であれば、道具として使えない事は全くありません。道具は使う人によって生きたり死んだりしますから、CADの選択が全てを決めるわけではないというのは言うまでもありません。

今回のProteus 7の評価は最初の一歩ですが、時間を見てもう少し触ってみたいものです。


番外編

このCADにはシミュレーション機能もあるのですが、これが気持ち悪い。
どうやって実現しているのかまだよくわかっていませんが、例えばuClinuxが走ります。


私個人的には「自分で作ったライブラリ類」でできない限り、この手の機能は「ふーん。」程度にしか見ないのですが、それにしても気になります。

3D表示はなかなか使えそうです。


2011年8月10日水曜日

設計基板にアクリルを付けてお洒落度アップ!「アクリ屋ドットコム」さんにアクリルを発注してみる。

外装にも少しは気を配りたい


おもてなしの心は日本人の得意分野かと思っていましたが、コスト削減要求の嵐の中そんなことは忘れ去られてしまったかのように見える今日。
ちょっとした評価基板の天面にアクリル板なんかが載っていると思わず「おぉー。」なんて思ってしまうのも情けない話です。

例えば、Terasic Technologiesのボードなんかの仕上がりは、かなり私好みです。


それはともかく、今回設計したLPCXpresso Clockでは、予め簡単な外装を付ける事を前提に設計を進めていました。

アクリルなどで簡単な養生があるだけでも何かのメリットがあるわけです。
  • 基板の隅々に埃が被るような事がない。
  • 埃が被りにくいので「何か古臭くなったなぁ」なんて感じる事がない。
  • 水滴が飛んでもある程度大丈夫。
  • 少しおしゃれ。
  • その他。
少し無理矢理ですが色々なメリットが考えられますね。

アクリ屋ドットコムさん


基板製造が海外で数十ドルから出来るようになった今、相対的に外装にかかる費用は大きくなっていると言わざるを得ないのが現状です。

そんな中、国内で面白いサービスを展開されている企業があります。
私は今回「アクリ屋ドットコム」さんにアクリルの加工依頼をしてみました。

アクリル板加工でセミオーダー形式でウェブから注文ができるサービスを展開しています。
ちょっとした加工までをウェブから行う事ができ、その場で値段がわかるのが特徴です。

LPCXpresso Clockの場合


「アクリ屋ドットコム」さんのセミオーダーの場合、穴位置などの指定単位が0.5mm単位です。
また、アクリル端からの穴位置に若干の制約があります。

LPCXpresso Clockの場合、以下のようにして対応しました。
  • 穴位置はアクリル板の端面からの距離で指定することになっている。
  • 0.5mm単位のグリッドに載せると若干ずれる。
  • 穴位置が許容される誤差に収まるようにアクリル板のサイズを調整する。
要するに穴位置がアクリル板の端からの位置で決まるので、アクリル板のサイズを調整して許容される範囲に穴位置を調整しようという対応です。(こんなのは機械屋さんから見ると最低だろうと思うのですが、私は機械に関して詳しいとは言えないのでよくわかりません。)

出来上がってきたアクリルを付けると以下のようになります。


基板だけの時と比べると、与える印象がまるで違いますね。


今回のアクリルパネルは一枚で約700円程度です。
基板の原価と同じくらいの費用が外装にかかるわけですが、実際に完成してみると良い効果を生み出していると言えるのではないでしょうか。

AltStyle によって変換されたページ (->オリジナル) /