ソフトウェア開発を体験する ―― 『ディジタル・デザイン・テクノロジ』(No.1)に付属の基板をマイコン基板として活用する
tag: 組み込み ディジタル・デザイン
技術解説 2010年1月 8日
2.動作までを体験してみよう
● マイコン基板の準備=FPGAをマイコン化
マイコンはLSI部品であり,単体では使用できません.所望の機能を実現できるように回路を設計し,基板を設計・製造する必要があります.
マイコン基板を設計・製造することは簡単ではありません.そこで今回は,FPGA基板を利用することで,基板の製造の壁をなくしました.つまり,FPGAの中にマイコンに相当する機能を持ったマイコン基板と見なします.ソフトウェアは,命令メモリ(ROMやフラッシュ・メモリ)を内蔵するマイコンと同様に,FPGAの内蔵メモリに実装できます.こうすることで,『ディジタル・デザイン・テクノロジ』誌No.1に付属された基板を使用できる方であれば,製造の壁はなくなります.
製造のみならず,マイコン基板の設計も簡単ではありません.そこで,今回はあらかじめ設計済みのデータを使います.以下に説明する手順で,ispLEVER上にマイコン・システムを準備してください.
- Windowsのスタート・メニューから「すべてのプログラム」→「Lattice Semiconductor 7.2」→「ispLEVER Project Navigator」を選択するか,デスクトップ上のアイコンをダブル・クリックしてispLEVERを起動します.
- ispLEVERのメニューから「File」→「Open Example」を選択します.
- C:\ispTOOLS7_2_STRT\example\CQ_DD3_
Mico32Exampleフォルダ内の「CQ_DD3_Mico32
Example.syn」を選択し,[開く]ボタンをクリックします. - ispLEVERのツール・バーのMSBボタンをクリックしてLatticeMico32 System Builder(MSB)を起動します.
- Workspace Launcherウィンドウが開くので,[OK]ボタンをクリックします.ワーク・スペースはデフォルトのままにしてください.
- モードを「MSB」にします.
- メニューから「File」→「Open Platform...」を選択し,Open Platformウィンドウを開きます.
- C:\ispTOOLS7_2_STRT\example\Processor
Module\socフォルダのProcessorModule.msbを選択し,[開く]ボタンをクリックします. - [Finish]ボタンをクリックします.
以上で,ispLEVERにはマイコン・システムの環境が構成され,MSBには,そのシステム上でソフトウェアを開発する準備が整いました.
● ソフトウェア開発を体験する
今回の開発手順を図3に示します.
図3 ソフトウェア開発の体験手順
今回はFPGA基板をマイコンと見なしているが,開発手順は一般的なマイコンを使う場合と大きく違わない.使用するツールが異なるだけである.
(1) プロジェクトの作成
まず,開発するソフトウェアのプロジェクトを作成します.プロジェクトの作成手順を図4に示します.
図4 プロジェクトの作成
プロジェクトは,コンパイルやリンクといった各種設定,追加されたファイルなどが保存されている単位である.最初に作成する.
MSBのモードを「C/C++」にします.
C/C++ Projectウィンドウの中で,マウスを右クリックして表示されるメニューから「New」→「Mico32 Standard Make C Project」を選択します.
New Projectウィンドウが開いたら,Project name欄にプロジェクト名として「CQ_DD3_Practice_
RAM」と入力します.また,Location欄にプロジェクトのフォルダの場所として「C:\ispTOOLS7_2_
STRT\example\Software\CQ_DD3_Practice_RAM」と入力します.
(2) ソース・ファイルの作成
次に,ソース・ファイルを作成します.今回は「cq_dd3_practice.c」,「startup.s」,「memory.ld」,「Makefile」の四つを用意します.
実際の設計では,ここでソース・ファイルを記述します.今回は,あらかじめ作成済みのコードを使います.
ソース・ファイルの作成手順を図5に示します.C:\ispTOOLS7_2_STRT\example\Software\Src\ CQ_DD3_Practice_RAMフォルダにある各ファイルの内容をコピー&ペーストしてください.
図5 ソース・コードの作成
このとき,Makefileとmemory.ldファイルは,作成直後にソース・ウィンドウが開きません.図6の手順でエディタを選んで開いてください.
図6 Makefileとmemory.Idファイルの作成
直後には,ソース・ウィンドウが開かない.エディタを指定する必要がある.
(3) ビルド(アセンブル,コンパイル,リンク)
ファイルを用意したら,プロジェクトをビルドします.
ビルドは,図7のように,プロジェクト名を右クリックして表示されるメニューから「Build Project」を選択して行います.プロジェクトをクリーンする際には,「Clean Project」をクリックしてください.
図7 ビルドの実行
プロジェクト名を右クリックして表示されるメニューから「Build Project」を選択して行う.拡張子がelfのファイルが生成される.
ビルドが成功すると,拡張子がelfのファイル「cq_dd3_practice.elf」が出来上がっているはずです.これが実行形式ファイルです.この内容をマイコンに書き込むことでソフトウェアが動作します.
(4) 実行形式ファイルの変換
この実行形式ファイルの内容をマイコンに書き込みます.今回は,FPGAを使用しているので,FPGAの内蔵メモリに対して初期値を設定する作業になります.一般的なマイコンでは,ROMライタやデバッガを用いてメモリに書き込む作業に相当します.
ビルドによって生成されたファイルから,初期値用のファイルを作成します.手順を図8に示します.MSBのメニューから「Tools」→「Software Development」を選択します.
図8 実行形式のファイルの変換
ビルドによって生成されたファイルから,初期値用のファイルを作成する.ispLEVERのメニューから「Tools」→「Software Development」を選択して行う.
Software Development Toolsウィンドウが開いたら,左側に表示されたメニューの中から「On Chip Memory Deployment」をダブル・クリックします.Project欄では,[Browse...]ボタンを使って「CQ_DD3_
Practice_RAM」を選択します.C/C++ Application欄は,[Search Project...]ボタンを使って「cq_dd3_
practice.elf」を選択します.[Apply]ボタンで保存した後,[Start]ボタンをクリックすると,CQ_
DD3_Practice_RAM.memが生成されます.
(5) メモリに書き込む
MSBモードにします.「OnChipMemory」をダブル・クリックすることで開く図9のダイアログで,memファイルを指定します.このとき,フォーマットはhexを指定します.
図9 メモリに書き込む
ダイアログでmemファイルを指定する.
これで,実行形式ファイルの中身がオンチップ・メモリに組み込まれました.MSBのメニューから「Platform Tools」→「Run Generator」を選択します.次にispLEVERで開いているプロジェクトで「Generate Data File」をダブル・クリックし,FPGAのコンフィグレーション・データを作成します.これをFPGAに書き込むことで,マイコンが動作を始めます.
一連のデータはCQ_DD3_Practice_RAM.zipにありますので,動作しない場合などは確認してみてください.