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年の限定ライセンスのように見えますね。 このあたりはどうなんでしょうか? 個人的に期間限定ライセンスには何の魅力も感じないので少し気になります。

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