1月
19
2009

SUZAKU Hello World

SUZAKUのソフトウェア開発の準備ができたので、SUZAKU上で動くアプリケーション”Hello World”を作成します。
(suzaku_starter_kit_linux参照)

uClinux-distの外でコンパイルをおこなう、”Out of Treeコンパイル”という方法を用いて作成します。

TESTディレクトリにhelloディレクトリを作成し、ここにC言語で作成したhello.cとMakefileを作成します。
Makefileの2行目のROOTDIRには、uClinux-distを展開したディレクトリを指定します。


hello.c


Makefile

作成したらhello.cをコンパイルして、実行ファイルを作成します。

$make

$ls hello*
hello hello.c hello.gdp hello.o

実行ファイルhelloができたら、これをSUZAKUボードにFTP転送して実行します。

SUZAKUのuClinuxを起動し、ifconfigコマンドでSUZAKUのIPアドレスを確認します。
SUZAKUのIPアドレスが192.168.1.100の場合

$ftp 192.168.1.100
Connected to 192.168.1.100.

(SUZAKUのID:rootとPassword:rootの入力)

ftp> cd /var/tmp
ftp> put hello

ftp> bye

これでSUZAKUの/var/tmpディレクトリに実行ファイルhelloが転送されました。
SUZAKUで実行します。

#cd /var/tmp
#ls
hello
#chmod 755 hello
#./hello
Hello World

1月
15
2009

SUZAKU uClinux

SUZAKUではOSにuClinuxが採用されています。
uClinuxは、microblazeのようなMMU(Memory Management Unit)を持たないCPUにも対応しています。

uClinuxをSUZAKU用にコンフィギュレーションします。
uClinux-distは、開発用CDROMを展開してできた、/suzaku/distディレクトリの中にあります。
これをSUZAKUディレクトリに作成したTESTディレクトリに展開します。
TESTディレクトリ内にて、

$tar zxf ~/suzaku/dist/uClinux-dist-20051110-suzaku13.tar.gz

展開してできたディレクトリへ移動して、コンフィグコマンドmeke menuconfigを入力します。

$cd uClinux-dist-20051110-suzaku13
$make menuconfig

コンフィグのメインメニューが開きます。
このメニューのVendor/Product Selectionを選択してエンターキーを押し、ベンダーとプロダクトの設定をおこないます。

ベンダーにはAtmarkTechno、プロダクトにはSUZAKUスターターキットのデフォルトのSUZAKU-S.SZ130-SILを選択します。

ベンダーとプロダクトの設定が終わったらメインメニューに戻って、Kernel/Library/Defaults Selectionを選択します。

Kernelはそのまま、LibraryはuClibc、Dedfaults Selectionは一番上のDefault all settings (lose changes)のみ選択します。

設定が終わったらExitを選択しエンターキーを押しメニューを終了します。
最後に新しい設定を保存するか聞かれるので、Yesを選択してエンターキーを押します。

コンフィギュレーションが終わったらビルドをおこないます。

$make dep all

ビルドが無事終了するとimagesディレクトリが作成され、その中にuClinux distのイメージファイル、image.binが出来上がります。

1月
10
2009

SUZAKU ソフトウェア開発環境

SUZAKUのソフトウェア開発環境の構築をおこないます。
まず必要なソフトウェアをインストールします。
(suzaku_starter_kit_guide_linux参照)

$sudo apt-get install genromfs
$sudo apt-get install libncurses5-dev
$sudo apt-get install zlib1g-dev

(file,perl,sedはすでにインストール済み)

次にSUZAKU-Sのクロス開発パッケージをインストールします。
最新の開発用CDROMを展開してできた、/suzaku/cross-dev/microblazeディレクトリにあるパッケージでは、libc6のバージョンがあわないというエラーがでるので古いバージョンのものをインストールします。
こちらのサイトよりmicroblaze-elf-tools-20060213.tar.gzをダウンロードします。

/usr/local/にmicroblaze-elf-toolsディレクトリを作成し、ここにダウンロードしたクロス開発パッケージを展開します。

$sudo mkdir -p /usr/local/microblaze-elf-tools/
$cd /usr/local/microblaze-elf-tools
$sudo tar zxvf ~/microblaze-elf-tools-20060213.tar.gz
$ls
bin include info lib libexec microblaze share

パッケージの実行ファイルが入っているディレクトリを環境変数PATHに追加します。

$export PATH=$PATH:/usr/local/microblaze-elf-tools/bin

このコマンドは.bashrcに追記します。

12月
28
2008

SUZAKU EDK動作確認

SUZAKUを使って、EDK(評価版)の動作確認をします。
SUZAKUのデフォルトにGPIOを追加して、単色LEDを点灯させるアプリケーションを作ります。
GPIOをOPBバスに接続し、GPIOの出力を単色LEDに接続します。
(suzaku_starter_kit_guide_fpga_ja参照)

SUZAKUのデフォルトは、開発用CDROMをSUZAKUディレクトリに展開してできた、/suzaku/fpga_proj/10.1i/sz130ディレクトリの中にあります。
zipファイルなのでこれを展開して、SUZAKUディレクトリの作ったTESTディレクトリにコピーします。
コピーしたSUZAKUのデフォルトのフォルダの名前をsz130-add_uart_gpioに変更します。

端末よりxpsを入力してEDKを起動します。
起動したら、Open recent projectを選択します。

作成したsz130-add_uart_gpioフォルダに移動して、xps_proj.xmpを選択しOpenをクリックします。

SUZAKUのデフォルトのプロジェクトが開きます。

GPIOのIPコアを追加します。
IP Catalogのタブをクリックし、General Purpuse IOの中のopb_gpioをダブルクリックするとIPコアが追加されます。
追加されたGPIOの横の丸をクリックして、OPBバスに接続します。

IPコアの設定をおこないます。
追加したGPIOを右クリックして、Configure IPを選択します。
単色LEDをひとつ光らせるだけなので、バスの幅は1ビットにします。

Channel1を選択し、Bi-directionalをFALSEにします。

SystemタブをクリックしてBase AddressとHigh Addressを入力します。
・Base Address :0xffffa400
・High Address :0xffffa5ff
入力したらOKをクリックします。

GPIOの出力をExternal Portsに登録します。
Portsタブをクリックして、追加したGIPO(opb_gpio_1)を開きます。
GPIO_d_outのNetの部分をクリックしてNet名nLEを入力します。
欄外をクリックして確定させます。
入力したNet名の右にある▼をクリックして、Make Extenalを選択します。

External Portsに、nLE_pinが追加されます。

ピンアサインをおこないます。
Projectタブをクリックし、UCF File:data/xps_proj.ucfをダブルクリックします。
UCFファイルが開いたら、下の一行を追加して保存します。

Net nLE_pin<0>   LOC=E12 | IOSTANDARD = LVCMOS33;

上側メニューよりHardwareをクリックして、Generate Netlistを選択してネットリストを作成します。

上側メニューよりHardwareをクリックして、Genarate Bitstreamをクリックして、ソフトウェアを含まないBitファイルを作成します。

以上でハードウェアの設定は終了です。
次にソフトウェアの設定をおこないます。

ライブラリ、ドライバの設定をおこないます。
上側メニューよりSoftwareをクリックして、Software Platform Settingsを選択します。
追加したGPIOのドライバーをgenericに変更してOKをクリックします。

上側メニューよりSoftwareをクリックして、Generate Libraries and BSPsを選択します。
ヘッダファイルが作成されます。

単色LEDを点灯させるアプリケーションを作成します。
上側メニューよりSoftwareをクリックして、Add Software Application Project…を選択します。
Project Nameにhello-ledを入力してOKをクリックします。

出来上がったプロジェクトhello-ledの中にあるSourceを右クリックして、Add New Fileを選択します。
hello-ledという新しいフォルダを作成し、その中にファイルmain.cを作成します。

Sourceに作成されたmain.cをダブルクリックして開き、単色LEDを点灯させるソースコードを記述します。

#include “xparameters.h”

int main(void)
{
*(volatile unsigned long *) XPAR_OPB_GPIO_1_BASEADDR = 0;
return 0;
}

記述が終わったら保存します。

Project:hello-ledを右クリックして、Make to Initiakize BRAMsをクリックします。
hello-ledがBRAMに初期値として書き込まれます。

上側メニューよりSoftwareをクリックして、Bild All User Applicationsを選択します。
コンパイラが起動します。

上側メニューよりDevice Configurationをクリックして、Update Bitstreamを選択します。
アプリケーションが追加されたbitファイルが生成されます。

生成されたbitファイルをJTAGでコンフィギュレーションします。
SUZAKUのCON7にダウンロードケーブルを接続し、JP2をショートさせて電源を入れます。

上側メニューよりDevice Configurationをクリックして、Download Bitstreamを選択します。
FPGAにbitファイルがコンフィギュレーションされ単色LEDが点灯します。

12月
21
2008

SUZAKU ISE動作確認

SUZAKUを使ってISE WebPackの動作確認をします。
作成する回路は単色LEDを点灯させるだけの簡単な回路です。
(suzaku_starter_kit_guide_fpga_ja参照)
ガイドではVHDLを使っているのですが、ここではVerilogで記述します。

まず、ホームディレクトリに作成したSUZAKUディレクトリにTESTディレクトリを作成します。このTESTディレクトリにプロジェクトを作成します。

端末より”ise”を入力してProject Navigatorを起動します。
起動したら上部メニューより”File”をクリックして”New Project…”を選択します。
開いたウィザードのProject locationに先ほど作成したTESTディレクトリを指定し、Project nameにslot_leを入力します。

デバイス情報を入力し、Preferred LanguageにVerilogを指定します。

New Sourceをクリックします。

Verlog Moduleを選択し、File nameをtopにします。

そのままNextをクリックします。

Finishをクリックします。

slot_leのディレクトリを作成するか聞かれるので、Yesをクリックします。

Nextをクリックします。

既存のモジュールを使うときにはここで追加します。
今回は使わないのでそのままNextをクリック。

Finishをクリックしてウィザード終了です。

新規プロジェクトslot_leが出来上がります。

top(top.v)をダブルクリックして開きます。
テンプレートが作成されているので、その中に単色LEDを点灯させるソースコードを作成します。

module top(nLE0);

output nLE0;

assign nLE0=0;

endmodule

作成し終わったら保存し、Synthesize-XSTをダブルクリックして文法チェックをおこないます。

エラーが無くなったら、PACEを立ち上げてピンアサインをおこないます。
User Constrainsを開き、Floorplan IO-Pre-Synthesisをダブルクリックします。
UCFをプロジェクトに加えるか聞かれるのでYesをクリックします。

PACEが開いたら、LocにE12を入力し、I/O StdをLVCMOS33に設定します。

ピンアサインが終わったらインプリメントを開始します。
Implement Designをダブルクリックします。

インプリメントが終わったら、FPGAに書き込むbitファイルを生成します。
Generate Programming Fileをダブルクリックします。
エラーがなければ、top.bitが生成されます。

top.bitができたら、JTAGでコンフィギュレーションをおこないます。
SUZAKUのCON7にダウンロードケーブルを接続し、JP2をショートさせて電源を入れます。

Manage Configuration Project (iMPACT)をダブルクリックします。
Configure devices using Boudary-Scan(JTAG)にチェックが入っているのを確認してFinishをクリック。

top.bitを選択してOpenをクリック。

OKをクリック。

デバイスを選択してProgramをダブルクリックするとダウンロードがはじまります。

単色LEDが点灯しました。

12月
18
2008

SUZAKU フラッシュメモリ書き換え

SUZAKU(SZ130-U00)には、LinuxカーネルイメージやFPGAコンフィグデータなどが格納されている、8GBのフラッシュメモリがあります。

フラッシュメモリ(8GB)
・FPGAリージョン
・ブートローダリージョン
・イメージリージョン
・コンフィグリージョン

これらの各リージョンを、ダウンローダHarmit、モトローラSレコード形式によって書き換えます。
このほかにもnetflashやflashsdによる書き換え方法があります。
詳しくは、suzaku_starter_kit_guide_linux、suzaku_softwea_manualを参照。

ダウンローダHarmit
ダウンローダHarmitでは、FPGAリージョン、ブートローダリージョン及びイメージリージョンを書き換えることができます。

まず、ダウンローダHarmitをインストールします。
最新のバージョン(hermit-at_1.1.18.i386.deb)では、libc6のバージョンがあわないというエラーがでるので、こちらのサイトより古いバージョンのhermit-at_1.1.3_i386.debをダウンロードします。
ダウンロードしたディレクトリに移動して、

$sudo dpkg -i hermit-at_1.1.3_i386.deb

シリアル通信ソフトminicomを開きます。

$minicom -o

SUZAKUをブートローダモード(JP1ショート、JP2オープン)にして電源を入れます。
bbootメニュー画面が表示されたら、aキーまたはEnterキーを押して、ブートローダhermitを起動します。


ブートローダhermit起動

ブートローダhermitの起動が確認できたら、minicomを終了します。

フラッシュメモリに書き込むイメージバイナリファイルが、開発用CDROMを展開してできた、/suzaku/imageディレクトリにあります。
このディレクトリに移動して各イメージファイルを書き込みます。

・FPGAコンフィグデータ
$hermit download -i fpga-sz130-101i-20081010.bin -r fpga –force-locked –port /dev/ttyUSB0

・ブートローダー
$hermit download -i loader-suzaku-microblaze-v1.1.18.bin -r bootloader –force-locked –port /dev/ttyUSB0

・uClinux イメージ
$hermit download -i image-sz130.bin -r image –port /dev/ttyUSB0

–port /dev/ttyUSB0は、通常のシリアルポート/dev/ttyS0に接続している場合は不要です。

モトローラSレコード形式による書き換え
ダウンローダhermitを書き換えます。
モトローラSレコード形式では、hermitやLinuxが起動していなくても使用することができます。
モトローラSレコード形式のhermit(loader-suzaku-microblaze-v1.1.18-8M.srec)は、開発用CDROMを展開してできた、/suzaku/bootloader/s-recordディレクトリにあります。

minicomを起動して、SUZAKUをブートローダモード(JP1ショート、JP2オープン)にして電源を入れます。
bbootメニュー画面が表示されたら、sキーを押します。

Start sending S-Record!

が表示されたら、Ctrl-AのあとにSキーを押します。
“ascii”を選択してエンター。
ディレクトリの移動をします。
移動は、ディレクトリを指定してスペースキーを2度押します。
モトローラSレコード形式のhermitのあるディレクトリへ移動したら、loader-suzaku-microblaze-v1.1.18-8M.srecをスペースキーで選択してエンターを押すとダウンロードが始まります。

終了すると、Original checksumとProgram checksumが表示されSUZAKUが再起動します。

Original checksumとProgram checksumが一致すれば書き換えは成功です。

12月
16
2008

SUZAKU シリアル通信

SUZAKU はシリアルポートをコンソールとして使用します。
SUZAKU のコンソールから出力される情報を読み取ったり、SUZAKU のコンソールに情報を送ったりするためにシリアル通信ソフトウェアを使います。

シリアル通信ソフトminicomをインストールします。

$sudo apt-get install minicom

USB-シリアル変換ケーブル(URS232GF)を開発用PCに挿すと、ドライバpl2303は自動的に読み込まれるようです。
dmesgコマンドで確認すると、

デバイスは、/dev/ttyUSB0となります。

USB-シリアル変換ケーブルをPCに挿したら、minicomを起動して、シリアルポートの通信設定をおこないます。

$sudo minicom -s

設定画面で”シリアルポートを選択し、”シリアルデバイス”、”速度/パリティ/ビット”、”ハードウェア流れ制御”及び”ソフトウェア流れ制御”の設定をおこないます。
シリアルデバイスはシリアルポートのあるPCでは”/dev/ttyS0″ですが、今回は変換ケーブルを使っているので”/dev/ttyUSB0″となります。


シリアル通信設定

設定が完了したら、”dfl”に設定を保存を選択してエンターキーをおします。
保存がすんだら”終了”を選択します。

“dfl”に設定を保存した場合次回以降のminicomの起動の際には、

$minicom -o

で設定内容が自動的に読み込まれます。

SUZAKUを起動してみます。
起動モードジャンパ(JP1)とFPGAプログラム用ジャンパ(JP2)をオープンにしてSUZAKUの電源を入れます。
uClinuxの起動が始まります。

起動が終わったら、ユーザ名”root”、パスワード”root”でログインできます。


uClinux ログイン

ログアウトは、

#exit

minicomの終了は、Ctrl-Aの後にXキーを押します。

12月
15
2008

SUZAKU-S スターターキット

ISE,EDKをインストールしたエルナックス(VersysEDA USB32GB)の評価も兼て、SZAKUを動かしてみたいと思います。
SUZAKUは、アットマークテクノ社の製品で、FPGAとLinuxを組合わせた組み込み機器プラットフォームです。
今回使うのは、2年ほど前に購入した、SUZAKU-S スターターキット(SZ130-SIL)です。

SUZAKU-S
・FPGA→Spartan-3E
・CPU→Microblaze
・OS→uClinux

SUZAKUを使うには、XilinxのISE,EDKがインストールされたWindowsマシンと、ソフト開発用のLinuxマシンが必要ですが、今回はISE WebPackとEDKをインストールしたエルナックスを使うので、適当な開発用マシン(OS問わず)を用意します。

使用した開発用マシンは、DellのInspiron6000(CPU:PentiumM1.7Ghz,Mem:1GB)です。


Inspiron 6000

このPCはパラレルポートがないので、プログラミングにはプラットフォームUSBを使います。
また、シリアルのクロスケーブルをつなぐシリアルポートがないので、USBコネクタをシリアルコネクタに変換するRS232GFを使います。

まず、ホームディレクトリにSUZAKUフォルダを作成します。
ドキュメントやFPGAのプロジェクトファイル類が更新されているので、開発CDROMのisoイメージファイル(ss_20081017.iso)をダウンロードサイトよりダウンロードします。

ダウンロードしたisoイメージファイルをSUZAKUフォルダに展開します。
展開は、isoイメージファイルを右クリックして”書庫マネージャで開く”を選択し、開いた書庫ブラウザの”展開”をクリックして、展開先フォルダにSUZAKUフォルダを指定します。
SUZAKUフォルダには、展開されたsuzaku/,suzaku-io-boards/,suzaku-starter-kit/があります。

SUZAKUの動作確認は、次の順序でおこないます。

・シリアル通信
・フラッシュ書き換え
・ISE 動作確認
・EDK 動作確認
・ソフトウェア開発環境

12月
12
2008

商標登録証

L-nux(エルナックス)とVersys(ベルシス)の商標登録証が届きました。
去年の暮れに出願したので、約1年かかりました。


商標登録証 Versys


商標登録証 L-nux

12月
11
2008

EDK(評価版)インストール

60日ライセンスのEDK評価版をインストールします。
エルナックスの16GBデバイスでは、容量が足りなくなる可能性があるので、32GBデバイス(VersysEDA USB32GB)にISE WebPackとあわせてインストールします。

前準備として、以下を実行します。

$sudo ln -s /usr/lib/libdb-4.3.so /usr/lib/libdb-4.1.so
$sudo ln -s /usr/bin/make /usr/bin/gmake

インストーラはISEと共通です。

インストールとアップデートが終わったら、ホームディレクトリの.bashrcに次の行を追記します。

source /home/ubuntu/Xilinx/10.1/EDK/Settings32.sh

(64bitの場合は、settings64.sh)
追記したら有効にします。

$. .bashrc

$xps

でEDKが開きます。

古い記事へ «

» 新しい記事へ