...

Lattice Mico32 スタートアップマニュアル

by user

on
Category: Documents
422

views

Report

Comments

Transcript

Lattice Mico32 スタートアップマニュアル
Revision
0
ラティス社ソフトコア
Lattice Mico32 スタートアップマニュアル
Lattice Mico32 スタートアップマニュアル
© 株式会社マクニカ
〒 222-8561
横浜市 港北区 新横浜 1-6-3 マクニカ第 1 ビル
電話 045-470-9841 • FAX 045-470-9844
目次
はじめに
本資料の概要及び取り扱いについて ........................................... 1
開発環境の準備 ......................................................................... 1
評価ボードについて .................................................................... 1
LatticeMico32 設計フロー........................................................... 2
Mico32 のドキュメントについて.................................................... 3
本資料で実施する内容 ............................................................... 3
ハードウェアの簡易ブロック図 ..................................................... 4
Microprocessor Platformの構築
ispLEVER Projectの構築........................................................... 5
MSB(MicoSystemBuilder)用管理ファイルの作成と起動.............. 7
LatticeMico32 コアの追加 .......................................................... 9
外部非同期SRAMデバイスの追加............................................ 10
外部パラレルフラッシュメモリの追加 .......................................... 11
GPIOインターフェイスの追加 .................................................... 11
UARTインターフェイスの追加.................................................... 12
コンポーネント間の接続 ............................................................ 13
各コンポーネントへのアドレスの割付 ......................................... 14
コンポーネントの割り込み(IRQ)の設定..................................... 16
デザインルールチェックの実施 .................................................. 16
Microprocessor Platformソースの生成 ..................................... 16
CPUコアのFPGAへの実装
ispLEVER開発ツールへVerilogソースのImport......................... 18
FPGAデバイスのI/Oピンとプラットフォームの接続 ..................... 19
配置配線∼ビットストリームファイルの生成 ................................ 20
CPUコアのFPGAデバイスへの書き込み
CPUコア用ソフトウェアアプリケーションの作成
C/C++SPEツールについて ....................................................... 22
C/C++SPE用プロジェクトの作成 ............................................... 23
C/C++SPEのGUI..................................................................... 24
C/C++SPEでの新規ソースコード作成 ....................................... 24
C/C++SPEにおけるリンカーメモリ設定...................................... 25
C/C++SPEにおけるソースコードのビルド .................................. 26
デバッガによるデバッキング作業
Mico32systemのデバッガ概要 ................................................. 27
プロセッサとの通信の確立 ........................................................ 28
デバッガのGUI ......................................................................... 30
デバックビュー詳細................................................................... 30
変数ビュー詳細 ........................................................................ 32
式ビュー詳細............................................................................ 33
ブレークポイントの設定方法...................................................... 34
プログラムコードの不揮発性ROMへのダウンロード
プログラムコードのダウロードから実行までの流れ ..................... 35
FlashProrammerプログラムの作成........................................... 36
FlashProgrammerの設定及び実行方法 ................................... 37
FPGA用ビットストリームファイルのSPI FlashROMへのインプリメント
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
1
はじめに
本資料の概要及び取り扱いについて
ƒ
本資料は Lattice 社ソフト CPU コア Mico32 をはじめて使う方向けの
マニュアルとなっております。
ƒ
本資料の内容を一通り行うことで CPU コア Mico32 の設計フローを一
通り理解することができます。
ƒ
本資料は株式会社マクニカ・テクスターカンパニーにて独自に作成
した資料となります。故に、本資料の内容と Lattice 社発行ドキュメン
テーションの間に相違があった場合には後者を正として取り扱い下さ
い。
開発環境の準備
本 資 料 の 内 容 を 行 う 場 合 に は Lattice 社 か ら 提 供 さ れ る 開 発 ツ ー ル
ispLEVER 及び LatticeMicoe32system をインストールする必要がございます。
LatticeMico32system に関しては以下の URL にアクセス頂き、ダウンロードし
てお使いください。ispLEVER に関してはご購入頂く必要がございます。その
場合には弊社営業担当までご連絡下さい。
LatticeMico32system URL:
http://www.latticesemi.com/dynamic/index.cfm?fuseaction=view_documents&d
ocument_type=65&sloc=01-01-08-11-48
評価ボードについて
本資料では Mico32 評価ボードを使用し、実際に動かしながら理解していく
内容となってはおりますが、評価ボードがなくとも一通りの設計フローは理解
頂けます。もし、ご購入をご検討の場合には弊社営業担当までご連絡くださ
い。
1
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
LatticeMico32 設計フロー
以下に LatticeMico32 の開発フローを示します。
4.CPU コア用ソフトウェアアプリケーショ
ンの作成
Mico32system に付属の C/C++SPE を使
用し、CPU 用 C コードを作成し、デバック
を行います。
1.MicroProcessor Platform の構築
Mico32system に付属の
MicosystemBuilder を使用して、内部
CPU コアと外部ペリフェラルの設定を行
います。例えば、リセットベクタアドレスの
設定、割り込み処理の設定、使用するペ
リフェラルのパラメータ設定など。
設定後、Mico32 コア+周辺ペリフェラル
の Verilog,VHDL ソースを出力します。
2.CPU コアの FPGA への実装
MicosystemBuilder で作成した CPU コア、
周辺ペリフェラルの VHDL,Verilog ソース
を ispLEVER にインポートしてコンパイル
し、FPGA へ書き込む為のデータ
(Bitstream ファイル)を作成します。
3.FPGA への書き込み
作成した Bitstream ファイルを FPGA へ
書き込みします。ispLEVER に付属の
ispVMsystem を使用します。
5.デバッガーによるデバッギング
Micosystem のデバッガーを使用してデバ
ックを行います。この際、JTAG と PC を繋
いでリアルタイムでデバックを行えます。
6 プログラムコードの.不揮発性 ROM へ
のダウンロード
Micosystem では外部 PROM,Flash への
ダウンローダーもソフトウェアとして用意し
ております。デバック終了後、これを用い
て ROM へダウンロードします。
2
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
Mico32 のドキュメントについて
設計にヘルプとなるドキュメントの情報を記載します
ƒ
LatticeMico32 Processor Reference Manual
http://www.latticesemi.com/dynamic/view_document.cfm?document_id=20890
&jsessionid=ba30f42dd5794$3F$3F$
ƒ
LatticeMico32 Softwear Developer User’s Guide
http://www.latticesemi.com/dynamic/view_document.cfm?document_id=20893
&jsessionid=ba30f42dd5794$3F$3F$
ƒ
Mico32system Help
Mico32system の上部プルダウンメニュー>Help
本資料で実施する内容
ƒ
Mico32system を使用して一通りの開発フローを実施する。
ƒ
UART,GPIO,パラレルフラッシュ等のペリフェラルを実装する。
ƒ
Mico32 評価ボード上に実装されている 8 個の LED を 100ms 間隔で
1つずつ点滅させていくプログラムを作成する。
ƒ
デバック時には外部 SRAM 領域にプログラムコードを実装し、デバッ
クを行う。
ƒ
外付け不揮発性 ROM(パラレルフラッシュ)にプログラムコードを実
装する。
3
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
ハードウェアの簡易ブロック図
LED
8bit
SPI
フラッシュ
Mico32
UART
FPGA コンフィグレー
ションデータ格納用
Flash
Lattice LFECP2-50E-6F672
外部 8bitLED
SRAM
パラレル
フラッシュ
Mico32
Evaluation Board
Program コード格
納用 FLASH
拡張用 SRAM 領域
4
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
2
Microprocessor Platform の
構築
チャプター1で紹介した設計フローに基づき順に紹
介していきます
ispLEVER Project の構築
まずは、FPGA 開発ツール ispLEVER 用の Project フォルダを作成します。
ispLEVER はこの Project フォルダで ispLEVER 用の全てのファイルを管理し
ます。ispLEVER を起動し、以下の手順で Project フォルダを作成してくださ
い。
1.
メイン画面の上部プルダウンメニューから File>NewProject を選択
します。
2.
新しく Project を作成するフォルダの選択します。
ƒ
ƒ
Project フォルダ名
Project (File)Name
:project1
:Platform(.syn)
①Project フォルダ名
を”Project1”とします
②Project Name
を”platform”にします
③Project type
を”Verilog HDL”を選
択します。
5
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
3.
Synthesis ツールの選択。ここでは Synplify を選択します。
4.
デバイスセレクターでのターゲットデバイスの選択。以下のデバイ
スを選択後、OK を押します。
ƒ
ƒ
ƒ
ƒ
ƒ
Family
Device
Speedgrade
PackageType
Operating
:LatticeECP2
:LFE2-50E
:-6
:FPBGA672
:Commercial
Project フォルダ作成時の注意事項
※プロジェクト名には「日本語」を使用しないでください。 図のようにプロジェクト名を“sample.syn”と
して、プロジェクトのタイプは“Schematic/VHDL”を選択してください(プロジェクトタイプはエントリ
ー方法に応じてお選びください)
※プロジェクトフォルダの設定には Schematic がございますが FPGA デバイスはトップモジュール
のみのサポートになります。(トップでも and や or などの回路はつくれません。あくまで下位モジュ
ールを繋げるだけです。)
※プロジェクトフォルダを配置する場所としてマイドキュメントやデスクトップを選択しないで下さい
(プロジェクトが保存されているパスに日本語や空白スペースが入っていると問題になることがあり
ます)。
6
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
MSB(MicoSystemBuilder)用管理ファイルの作成と起動
Microprocessor 用の Platform を構築するツールを MicoSystemBuilder(以後
MSB)といいます。この MSB 用の管理ファイル(.msb)を作成します。ispLEVER
と同じく、このファイルにて MSB を管理しています。
1.
MSB を 起 動 し ま す 。 ispLEVER の 上 部 の ア イ コ ン か ら
LatticeMico32system のアイコンを選択します。
2.
初回起動時はワークスペースの選択画面が開きます。
Mico32system 用のワークスペースがある場合はそちらを選択しま
す。
ワークスペースについて
Mico32system はワークスペースにてユーザーインターフェイスの設定や、
Option 設定を格納します。その為、Mico32system 用のワークスペースを作っ
ておくことをお奨め致します。
7
L A T T I C E
3.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
MSB が起動した後、File>New Platform を選択します。ここでは以
下のように設定、記入します。
ƒ
ƒ
ƒ
ƒ
Platform name
Directory
Device Family
Platform templates
: platform1
: 設定の必要なし
: ECP2
: blank
Platform Templates とは
Platform Templates は Mico32system に元々用意されている各種ペリフェラルと
CPU コアが接続され、Template として用意されています。Platform の種類によ
り CPU に繋がるペリフェラルが違うので設計に合わせて選択することができ
ます。詳細については Mico32system のヘルプを参照ください
4.
終了ボタンを押すと MSB が起動します
8
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
LatticeMico32 コアの追加
次に LatticeMico32 コアの追加を行います。
1.
MSB のメイン画面左側コンポーネンツビューより、LatticeMico32 を
選択し、Add ボタンを押します。
Add ボタンをクリック
2.
LatticeMico32 コアの設定画面が起動します。ここで Mico32 コア
に対して各種設定を行います。以下の表の通り設定して下さい。
■ポイント
CPU コアのインスタンス名を代
入します。
■ポイント
例外処理として、リセットが発生
した際に最初に参照するアドレ
スの番地を記入します。
この番地から 256 バイトは例外
ベクタとして使われます。
■ポイント
Instruction,Data ともにキャッシュ
レジスタを設定可能。最大
32kByte まで設定できます。
9
L A T T I C E
3.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
OK ボタンを押すと MSB メイン画面に CPU コアが追加されます。
外部非同期 SRAM デバイスの追加
Mico32 評価ボードには4つの4MBit 非同期 SRAM が搭載されております。
ここでは CPU コアに 1Mbit 外部非同期 SRAM デバイスを繋げる設定を行い
ます。
1.
MSB の画面左側のコンポーネンツより Async SRAM を選択します。
AsyncSram をクリック。更に Add
ボタンをクリックで追加
2.
AsyncSRAM コントローラの設定を行います。以下の図の通りに設
定を行います。
■ポイント
ここでは BaseAddress の設定は
0x0000000 のままで結構です。
サイズのみ記入します。
接続される SRAM に応じて、
Setting の各種パラメータを変更
してください。
3.
OK ボタンを押すことで MSB に追加されます。
10
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
外部パラレルフラッシュメモリの追加
Mico32 評価ボードには 8Mbyte×32bit の不揮発性メモリが外部に接続され
ております。ここでは、この Flash メモリを4Mbyte の Mico32 コアのプログラム
格納メモリとして使用できるように設定します。
1.
MSB の左側のコンポーネントより Parallel Flash を選択します。
2.
Parallel Flash の設定を行います。以下の図の通りに設定を行いま
す。
■注意
ベースアドレスは Mico32 コア設
定画面で設定した例外処理時
(リセット時)のアドレスと同じアド
レスに設定する必要があります
■ポイント
メモリサイズは
4Mbyte=33554432bit に設定してく
ださい。
Flash に合わせて、このパラメータ
を変更します。
3.
OK ボタンを押すことで MSB に追加されます。
GPIO インターフェイスの追加
Mico32 にユーザーロジックを繋ぐ場合や、Mico32 をインプリメントした FPGA
の I/O pin と外部チップを繋ぐ場合には GPIO インターフェイスを追加する
必要があります。このコンポーネントは Mico32CPU コアが繋がる Wishbone
バスと外部 I/O ポートを繋ぐ役目を行います。ここでは Mico32 評価ボード
実装されている LED に繋ぐための GPIO インターフェイスを作成します。
1.
MSB の左側のコンポーネントより GPIO を選択します。
11
L A T T I C E
2.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
GPIO の設定を行います。
■PortType 設定
Output Port:
出力のみのポート
Input Port:
入力のみのポート
Tristate Ports:
双方向ポート
Both Input and Output:
入力及び出力を同じピンではな
く別々のピンで使用する際に使
用します。ここをチェックすると
InputWidth と OutputWidth を設
定できます。
■注意
後半の C ソース中でインスタン
スを指定する箇所があります。
故に、ここでのインスタンス名は
LED にしてください。
■ポイント
外部 LED を 10 個繋げますの
で、データ幅は 10 に設定してく
ださい。
3.
OK を押すと MSB に追加されます。
UART インターフェイスの追加
PC と Mico32 を JTAG と UART インターフェイスを通じて繋げることができ、こ
れによりデバッガ機能を使用することができます。ここでは UART インターフ
ェイスを追加いたします。
1.
MSB の左側のコンポーネントより UART を選択します。
2.
UART の設定を行います。
■割り込み Interrupt の設定
割り込みモード或いはポーリングモード
の選択はこのチェックボックスで行いま
す。
チェックを入れることで割り込みモードと
なり、バッファを使用して送信受信を行
います。Buffer サイズはともに最低
2Byte から設定を行います。
12
L A T T I C E
3.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
OK を押すと MSB に追加されます。
UART インターフェイスコアについて
MSB で用意している UART コアは NationalSemiconductor の UARTIC16450 を
ベースに作成されたものです。完全互換ではないのでご注意ください。
コンポーネント間の接続
MSB 上に追加した各コンポーネントについてマスター、スレーブコンポーネ
ントの接続を行います。マスターとは、ライト、リードのトランザクションを発行
できるコンポーネントを指します。また、スレーブとは自らトランザクションを発
行できず、トランザクション先として選択されるコンポーネントを指します。縦
のラインのうち、左側はインストラクションポートを指しており、右側がデータポ
ートを指しております。横のラインは各コンポーネントからのインストラクション、
データポートを指しております。縦と横の交差点部分の丸印を青に変化させ
ると接続していることを示します。白のままの場合には接続していないことを
示します。
Mico32 のバスにはマスターデバイスが複数
接続することができ、同時にマスターがバス
にアクセスした場合 Arbiter が調停を行いま
す。その為、Priority をつける必要がありま
す。マスターポートについている数字は、そ
の Priority を指します。
黒線で右向きの矢印は
マスターコンポーネント
であることを示します。
青線で左向きの矢印は
スレーブコンポーネント
であることを示します。
縦のラインとの交差点の
丸印が白の場合には接
続していないことを示
し、青の場合には接続
していることを示しま
す。
1.
ASRAM コンポーネントのスレーブポートに繋がるインストラクショ
ン及びデータポートの丸印を青に変化させ、Mico32 のバスに接
続させます。
2.
GPIO コンポーネントのスレーブポートに繋がるデータポートの丸
印を青に変化させ、Mico32 のバスに接続させます。
3.
Flash コンポーネントのスレーブポートに繋がるインストラクション
及びデータポートの丸印を青に変化させ、Mico32 のバスに接続
させます。
13
L A T T I C E
4.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
UART コンポーネントのスレーブポートに繋がるデータポートの丸
印を青に変化させ、Mico32 のバスに接続させます。
■ポイント
SRAM,FLASH,LED,UART
全てが Mico32 コアに接続
されるように設定を行いま
す。最終的にはこの図のよ
うになります
各コンポーネントへのアドレスの割付
各コンポーネントへアドレスの割付を行います。アドレスの割付には自動で
行う方法、手動で行う方法があります。ここでは、自動でアドレス割付を行う
方法を記載いたします。
1.
Flash メモリコンポーネントの EditView から Lock チェックボックス
にチェックを入れます。
■注意
例外処理発生時(リセットベク
タ)に 0x2000000 にジャンプす
るよう設定した為このアドレス
は固定しておきます。この場
合、Lock チェックボックスにチ
ェックを入れます。
14
L A T T I C E
2.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
自動でアドレスを割り付けるには MSB 画面上部のプルダウンメニ
ュ ー か ら Platform Tools>Generate Address も し く は Generate
Address アイコン
をクリックします。
Generate Address をクリック!
メモリ関係のコンポーネン
トは 0x00000000∼
0x1FFFFFFF に割り付けら
れます。
メモリ以外のコンポーネン
トは 0x800000000∼
0xFFFFFFFF に割り付けら
れます
アドレスの編集について
アドレスの編集はベースアドレスのみ行うことが可能です。エンドアドレスに関
してはコンポーネントのサイズから自動計算されて割り振られます。
15
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
コンポーネントの割り込み(IRQ)の設定
メモリを除くコンポーネントに対して IRQ の設定を行います。
1.
MSB メ イ ン 画 面 上 部 の プ ル ダ ウ ン メ ニ ュ ー か ら Platform
Tools>Generate IRQ もしくは Generate IRQ アイコン
します。
をクリック
手動で設定を行いた
い場合には、IRQ の
項目をダブルクリック
し、Pulldown メニュー
から再選択可能です
デザインルールチェックの実施
最終的に全てのコンポーネントに対して設定を終えた段階で、デザインルー
ルチェックを行って、不整合がないかどうかの確認を行うことができます。
1.
MSB メ イ ン 画 面 上 部 の プ ル ダ ウ ン メ ニ ュ ー か ら Platform
Tools>Run DRC もしくは Run DRC アイコン
をクリックします。
Microprocessor Platform ソースの生成
デザインルールチェック実施後、問題がない場合には、ここまでで構築した
Mico32+周辺ペリフェラルの Microprocessor Platform の Verilog ソース及び
msb ファイルの生成を行います。
1.
MSB メ イ ン 画 面 上 部 の プ ル ダ ウ ン メ ニ ュ ー か ら Platform
Tools>Run Generator もしくは Run Generator アイコン をクリック
します。
2.
正 常 に 生 成 さ れ る と 画 面 左 下 の コ ン ソ ー ル Box に ”Finish
Generator”と表示されます。
16
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
生成ファイルについて
Run Generator を 行 う こ と で platform1.v の Verilog ソ ー ス フ ァ イ ル と
platform1.msb の MSB 管理用ファイルが生成されます。
この platform1.v ファイルは Mico32 コア及び周辺ペリフェラルのコンポーネン
トを含んだハードウェアの Top ソースです。この Top ソースを ispLEVER にイ
ンポートすることで FPGA へインプリメントが可能です。
また、platform1.msb ファイルは現在のプラットフォームの情報が記載されたフ
ァイルとなっており、C/C++ SPE ツールが起動する際にこのファイル参照し、
現在のプラットフォームの情報を入手します。
17
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
3
CPU コアの FPGA への実装
チャプター2で生成した Mico32+周辺ペリフェラルの
ソースをインポートしてコンパイルを行います。コンパ
イル後のビットストリームを使用して FPGA へ書き込
みを行います。
ispLEVER 開発ツールへ Verilog ソースの Import
MSB で生成した Verilog ソースをインポートします。
1.
ispLEVER を 起 動 し 、 先 に 作 成 し た Project を 開 き ま す 。
ispLEVER 上部のプルダウンメニューより File>Open Project
2.
ソースの Import を行います。ispLEVER 上部のプルダウンメニュ
ーより Source>Import をクリックし、MSB で作成した platform1.v フ
ァイルをインポートします。platform1.v ファイルは以下に保存され
ています。
<Mico32Workspace>/platform1/soc/platform1.v
18
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
3.
SourceType を Verilog Module で選択します。
4.
Top Module Dialog Box が起動しますのでプルダウンメニューより
platform1 を選択し、OK を押します。
(注意)ispLEVER の環境の設定
ispLEVER で Verilog ソースを Import する前に環境の設定を行う必要がありま
す。
1.
ispLEVER 上部のプルダウンメニューより Option>Environment を選択し
General タブをクリックします。
2.
Copy source file to project directory for Source-Import Command にチェック
が入っている場合には外して下さい。
FPGA デバイスの I/O ピンとプラットフォームの接続
取り込んだプラットフォームの I/O ポートと FPGA の I/O ピンの接続を行い
ます。ここでは前もって用意されている Mico32 評価ボード用の.lpf ファイル
(制約ファイル)を取り込んで使用します。
1.
ProjectNavigator の上部プルダウンメニューから Source>Import
Constraint/Preference File を選択します。
2.
以下のパスに用意してある.lpf ファイルを Import します。
<ispLEVER install パス>/micosystem/platforms/platforme/ecp2
3.
Do you want to reset the project update status?と聞かれますので
OK ボタンを押します。これで lpf ファイルが Import されてピンの
定義がされます。
19
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
配置配線∼ビットストリームファイルの生成
以後の 作業では配置配線を行いビットストリームファイル(.bit)を生成し 、
FPGA へ書き込みを行います。本マニュアルでは Mico32 及び MSB に関す
るマニュアルとなっておりますので、配置配線∼ビットストリーム生成までのフ
ローは割愛させて頂きます。詳細は弊社マニュアル
ispLEVER スタートアップマニュアル forFPGA
をご覧下さい。
20
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
4
CPU コアの FPGA デバイスへ
の書き込み
*現状では未作成
21
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
5
CPU コア用ソフトウェアアプリ
ケーションの作成
CPU コアを実際動作させるためのソフトウェアアプリ
ケーションは C/C++SPE を使って作成します。以下
より C/C++SPE を使った作成フローについて記載い
たします。
C/C++SPE ツールについて
ソフトウェアアプリケーションを作成する為に C/C++SPE ツールを使用しま
す。このツール は Eclipse 開発環境をベースに作成されており、GNU
C/C++ツールチェイン(Compiler、Assembler,Linker,Debugger その他ユーティ
リティ)が使用されています。C/C++SPE は MSB と同じ LatticeMico32 system
インターフェイスで動作しますが異なる GUI が用意されております。
22
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
C/C++SPE 用プロジェクトの作成
C/C++SPE で開発を行うためにプロジェクトを作成する必要があります。プロ
ジェクトを作成し、プラットフォームの環境情報ファイル(MSB ファイル)を取り
込む必要があります。
1.
C/C++SPE 用 GUI に切り替えます。MSB のメイン画面上部にあ
る C/C++アイコン
をクリックします。
2.
画面上部のプルダウンメニューより File>New>Mico32 Managed
Make C project を選択します。
3.
ProjectWizard が起動します。以下のように記入します。
Project 名は
LEDtest
先程 MSB で作成したプラット
フォームファイル(.msb)を指
定します。
<Mico32systemWorkspace>pl
atform1>soc>platform1.msb
■注意
Project のロケーションは
Mico32 の Workspace と一緒
の場所を指定することができ
ませんので別の場所に作成
してください。
各種 Template が用意されています。
現在のプラットフォームに合わないテ
ンプレートを選択するとエラーになる
ので注意してください。今回は
LEDTest を選択します。
4.
Finish で終了します。
23
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
C/C++SPE の GUI
C/C++SPE でソースコードを作成します。まずは C/C++SPE の GUI から説
明します。
エディタ表示領域
C のソースコードを実
際に記入していく領
域です。
アウトライン
エディタで開いている
ファイルの概要を表示
します。
エクスプローラー
プロジェクトの構
成を操作します。
問題
プロジェクトのコンパイ
ルエラーなどの問題
を一覧します。
コンソール
プログラム実行時の標
準入出力、エラー出
力を表示します。
プロパティ
あらゆる要素に対応し
プロパティを編集しま
す。
C/C++SPE での新規ソースコード作成
新規に C ソースコードを作成する場合には C/C++SPE メイン画面の上部の
プルダウンメニューから File>New Source File を選択します。以下のようなダ
イアログが開いたら SourceFile の項目にファイル名をつけて終了します。
ソースの新規作成
File>
新規>
SourceFile
24
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
C/C++SPE におけるリンカーメモリ設定
今回の場合、プロジェクトを作成した際に Template を選択したのでソースフ
ァイルは出来上がっています。ここでは出来上がったソースファイルをビルド
する際のコンパイラーのリンカー設定を行います。
Linker 設定の起動
Project の選択
→右クリック
→Property
を選択
Linker 設定項目
CPU のプログラミング
データ、初期化デー
タ領域、未初期化デ
ータ領域、スタック等
のメモリ領域の割り当
て行います。
リンカー設定ダイアログは以下の手順で起動します。
Project セレクト>右クリック>Property
LinkerScript 項目から Proram,変数、スタックのメモリ割り当てを行います。今
回の場合、MSB にて外部に SRAM,Flash が設定されているのでプルダウンメ
ニューにはそれぞれのモジュールが表示されています。
25
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
C/C++SPE におけるソースコードのビルド
プロジェクトを作成してソースコードを記述したら、今度はそれを実行できる
状態にしなければなりません。この作業をビルドと呼びます。ここではビルド
の方法について記載します。
②プロジェクトの
ビルドを選択
①Project を選択
し、右クリック
まずは、単純にビルドを行う方法について記載します。
Project を選択>右クリック>BuildProject(プロジェクトのビルド)
でビルドが開始されます。この際、ビルド状況が画面下のコンソールに表示
されます。その他、ビルドの方法としては画面上部のプルダウンメニュの
「Project」から選択してビルドすることも可能です。
各種ビルド方法について
■BuildAll(全てビルド)
C/C++SPE 上に開かれている全てのプロジェクトのビルドを行いたい場合は
こちらを選びます。
■BuildProject(プロジェクトのビルド)
現在実装を進めているプロジェクトのビルドを行いたい場合はこちらを選びま
す。
■BuildWorkingSet(ワーキングセットのビルド)
特定のプロジェクトだけのビルドを行いたい場合はこちらを選びます。
26
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
6
デバッガによるデバッキング作
業
Mico32system には GNU デバッガ(GDB)をベースにし
たデバッガが用意されております。これを用いたデ
バックについて記載します。
Mico32system のデバッガ概要
Mico32system のデバッガを使用して以下のような2通りのデバックを行えます。
■LatticeMico32 ハードウェアデバック
実際のハードウェア(評価ボード、開発中のボード等)に Lattice 社ダウンロードケー
ブル或いは USB ケーブルを JTAG 経由で繋いで、プロセッサを PC からリモートで
制御することができるオンチップエミュレーション機能です
■インストラクション・セット・シミュレーターデバック
Mico32 インストラクション・セット・アーキテクチャのソフトウェアを使って擬似的なプロ
セッサを構築して、ハードウェアが使用可能になる前にシステム開発を行うことがで
きます。
ここでは、LatticeMico32 ハードウェアデバックによるデバックキングについて
記載します。
27
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
プロセッサとの通信の確立
LatticeMico32 ハードウェアデバック(以後ハードウェアデバック)を行う際には
ホストとハードウェアの通信を確立し、作成したプログラミングコードをハード
ウェアに実装する必要があります。この PC とハードウェア間のやり取りは、
Debug モジュール及び JTAGUART モジュールが行います。Debugger を起
動させた際には、これらのモジュールと PC の Debugger ツールが連携し、プ
ログラミングコードが SRAM に展開され、プロセッサと通信が確立されます。
その方法について以下に説明します。
1.
画面左側のエクスプローラからプロジェクトを選択します。
2.
C/C++SPE 上部プルダウンメニューから RUN(実行)>Debug(構
成及びデバック)を選択します。
①Project の選択
②デバックの選択
3.
新しいダイアログが起動します。ここで Configuration の項目から
mico32hardware を選択し、左下の New(新規)をクリックします。
①mico32hardware
を選択。
この Perspective 画面は Debug,Run
を実行した際に、どの Perspective を
表示するかを選択するものです。こ
こでは Debug を選択します。
②New(新規)を
クリック
28
L A T T I C E
4.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
Main タブに Project 名(ここでは LEDtest)を代入し、ハードウェア
に実装したい C/C++Application(ビルド後のソースコード*.elf ファ
イル)を選択します。
その他の TAB
・Debugger
起動時のブレークポイントの設定や、Remote ター
ゲットとの通信設定を行います。
・Source
Debugger が参照するソースファイル、ソースファ
イルのフォルダが表示されます。
Project
LEDtest
C/C++SPE Application
LEDtest.elf
を選択します。
5.
設定終了後、画面下の Debug ボタンを押すことでソースコードが
実装され、プロセッサとの通信が確立し、Perspective がデバック用
に変化します。
注意 1
5の際に以下のような画面が開きます。ここでは Yes を選択してください。
*英語では
This kind of launch is configured to open the debug perspective when it
suspends.Do you want to open this perspective now?
注意2
通信がうまくいかない場合にはエラーが発生します。この際には Chapter3.4
の手順を再度確認し、実行してください。
29
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
デバッガの GUI
デバッガの GUI(デバッグパースペクティブ)について簡単に記載します。
モジュール、
ブレークポイント、
レジスタ、
シグナルビュー
デバックビュー
アウトラインビュー
ソースビュー
コンソール、
タスク、
メモリビュー
デバックビュー詳細
デバックビューではデバックしているソースコードごとに中断しているスレッド
のスタックトレースが表示されます。各スレッドはツリーのノードとして表示さ
れ、実行中の対象ごとのプロセスが表示されます。
デバックビューには、ブレークポイントで停止したプログラムコードの再開、停
止、終了、ステップ実行を行う際のステップイン、ステップオーバー、ステップ
リターンを実行する6つのアイコンが用意されています。
インストラクションモー
ドステップを実行
中断しているスレッド
を再開します。
スレッドを停止しま
す。
スレッドを終了します。
ステップリターンを実
行します。
ステップインを実行し
ます。
ステップオーバーを実
行します。
30
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
ステップ実行とは・・・
ステップ実行はデバッガを起動してブレークポイントにより強制中断された位
置から一段階ずつ動作を確認しながら実行していく作業です。また、ステップ
実行は更に以下のような種類があります。
■ステップオーバー
1 つのソース行を実行します。ソース行に呼び出しが含まれている場合は、
個々の命令をステップ実行しないでそのルーチン全体を実行します。
■ステップイン
1 つのソース行を実行します。ソース行に呼び出しが含まれている場合は、
ルーチンの最初の文を実行する直前で停止します。「ステップイン」コマンド
でデバッグセッションを開始することもできます。プログラムの実行は、プログ
ラムの状態に変化が発生する前の、main ルーチンのあとの最初の行で停
止します。
■ステップリターン
1 つのソース行を実行します。ソース行がルーチンの一部である場合は、ル
ーチンの残りの行を実行して、ルーチンの呼び出し元に制御を返します。
インストラクションモードステップとは・・・・
インストラクションモードステップをクリックすることでビルド時にコンパイルして
出来上がったアセンブラソースコード+C ソースコードを同時に表示しながら
各種ステップ実行を行うことが可能です。
アセンブラソースコード
C ソースコード
31
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
変数ビュー詳細
変数ビューではブレークポイントで処理を中断した際に、変数の情報が表示
されます。この変数ビューを使用して問題の特定や解決を図ります。この変
数ビューについて記載します。
変数タブをクリックして表示させます。
もし、ビューに変数タブがなければ
Window>ShowView>Variables
で表示させます
型名の表示ボタン
型名を左の変数部分に
表示させます。
変数ビューでは、デバックの途中で変数の値の変更も行うことができます。
その場合には変更したい変数を右クリックし、ChangeValue(値の変更)をクリッ
クします。開いた Window に変数値を代入することで値が変更されます。
32
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
式ビュー詳細
変数ビューを利用すればブレークポイント周辺の変数の一覧が表示されま
すが特定の変数の値を確認するときに不便をかんじます。このような時式ビ
ューを使用します。コード中において確認したい式がある場合には、その部
部を選択状態にして、Add Watch Expression で式を式ビューに追加できます。
①式を選択状態
にする
②右クリックで
Add Watch Expression
を選択。
33
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
ブレークポイントの設定方法
デバッガでは、不完全なプログラムを確認するために、プログラムコード中の
適切な場所にブレークポイントを挿入することができます。これによりブレー
クポイント周辺の情報を収集できます。このデバッガの基本的な機能である
ブレークポイントの設定方法を記載します。
ブレークポイント(行ブレークを指す)の設定方法は2通りあります。
1.
ソースビュー上を直接ダブルクリック
2.
プロダウンメニューからのブレークポイントの選択
或いは、ソースビューのブレーク
ポイントを入れたい行を選択しプ
ルダウンメニューから「行ブレーク
ポイントの切り替え」を選択
ブレークポイントを入れたい行の
マーカーバーをダブルクリック
また、ブレークポイントを追加していくとブレークポイントビューには追加した
ブレークポイントが一覧で表示されます。ブレークポイントビュー内のブレー
クポイントを右クリックして Property 設定を行うことができます。
ブレークポイントの使
用可能/不可の設定
を行います
Igonore カウント
行ブレークポイントのプログラムコ
ードが指定した回数分実行された
ときに、プログラムを強制停止させ
るための設定
34
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
7
プログラムコードの不揮発性
ROM へのダウンロード
デバックが終了したら最後にプログラムを外部の不
揮発性 ROM(パラレル Flash)にダウンロードします。
Mico32system に付属の Flash 書き込みプログラムでダウ
ンロードを行います。
プログラムコードのダウロードから実行までの流れ
プログラムコードを書き込んでから、CPU がそのコードを実行するまでの流
れを以下に記載します。
Mico32system に予め用意されている FlashProgrammer プログラム(Flash
書き込みプログラムコード)を SRAM 領域に書き込みします。
Mico32 プロセッサは SRAM から FlashProgrammer プログラムを実行しま
す。この際、FlashProgrammer は用意したプログラムコード(ここでは
LEDTest.elf)を PC 上のデバッガより Read し、それをバイナリに変換します。
この際、リセットベクタ領域(ここでは 0x02000000)には CodeLocator プログ
ラムをプログラムコードに追加してから、外部不揮発性 ROM に書き込みを行
います。
ここでリセットがかかります。これにより Mico32 プロセッサーはリセットベクタ
領域(ここでは 0x02000000)にある CodeLocator プログラムを実行します。こ
の CodeLocator は外部不揮発性 ROM のプログラムコードを SRAM へ一旦
展開します。
CodeLocator プログラムが終了した後、SRAM に展開されたプログラムコー
ドが実行され、Mico32 プロセッサが期待した動作を開始します。
35
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
FlashProrammer プログラムの作成
まずは SRAM 上でプログラムコードを不揮発性 ROM に展開するためのプロ
グラム=FlashProgrammer を作成します。
1.
C/C++ボタンを押して C/C++パースペクティブにします。
C/C++ボタンを押す
ことで C/C++パース
ペクティブに変更でき
る
2.
画面上部プルダウンメニューから File>New>Mico32 Managed
Make C Project を選択します。
3.
起動したダイアログを以下のように設定します。
ProjectName:
FlashProgrammer
TargetHardware:
先に作成したプラットフ
ォームを選択します。
ProjectTemplates:
Mico32system で用意している
Template の中から CFI Flash
Programmer を選択します。
4.
設定を行ったら Finisha(終了)を押します。
5.
画面左側のエクスプローラから FlashProgrammer プロジェクトを選
択して、右クリックし、BuildProject(プロジェクトのビルド)を選択し
ます。
36
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
FlashProgrammer の設定及び実行方法
FlashProgrammer を作成した後、FlashProgrammer にどのプログラムコードを
不揮発性 ROM にダウンロードするのか指定してから、実行させる必要があ
ります。以下に、設定及び実行方法を記載します。
1.
画面左側のエクスプローラから FlashProgrammer を選択します。
2.
画面上部プルダウンメニューから Tools>Software Deployment を
選択します。
3.
下 記 の よ う な ダ イ ア ロ グ が 開 き ま す 。 こ こ で は CFI Flash
Deployment を選択し、下部の New(新規)ボタンを押します。
CFI Flash Deployment を選択し、
New(新規)ボタンを押す。
4.
次のダイアログで FlashProgrammer の設定を行います。
37
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
Name:
FlashProgrammer
に設定します
Project:
先程用意した Project を選択し
ます。Browse ボタンを押すと
ProjectSelection ダイアログが開
きます。ここで LEDTest プロジ
ェクトを選択します。
Flash Programmer Address:
リセットベクターアドレスの指定
を行います。先に設定した値
を記入します。(0x02000000)
Flash Programmer Application:
先程作成した FlashProgrammer のプロ
グラムコードを選択します。ここでは
<C/C++SPE フォルダ
>\FLashProgrammer\debug\FlashProg
rammer.elf
C/C++Application:
ここでは実際に書き込みする
プログラムコードを選択しま
す。SearchProject を開き、
LEDTest.elf を選択します。
Prepend Code Relocation:
チェックを入れることで、Flash からプログラム
コードを SRAM に展開するプログラムを使用
します。必ずチェックを入れてください。
5.
設定が終了したら Apply(適用)を押します。その後、Start ボタン
を押し、FlashProrammer を実行させます。
6.
実行終了するとコンソールに以下のような画面が表示されます。
7.
正常に終了しているかどうかは以下の方法で確認します。デバッ
ク・プロスペクティブに変更します。デバックビュー内のメッセージ
をクリックします。以下のようにコンソールにメッセージが表示して
いれば正常に終了しています。
38
L A T T I C E
8.
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
また、ハードウェアが正常に動作しているかどうかを確認するため
には、再度、チャプター3で作成したビットストリームファイルを
FPGA に書き込みすることで確認可能です。
8 を行うことで LED がデバッガ上で動作していた時と同じ動きで動作
していることが分かります。
39
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
チャプター
8
FPGA 用ビットストリームファイ
ルの SPI FlashROM へのイン
プリメント
デバックが全て終了した際には、FPGA 用データを
不揮発性 ROM に書き込みする必要があります。(不
揮発性 ROM が必要なデバイスの場合)ここでは
SPIFLASH へ書き込みする方法を記載いたします。
*現状では未作成
40
L A T T I C E
M I C O 3 2
ス タ ー ト ア ッ プ マ ニ ュ ア ル
改版履歴
データ
Revision
変更者
備考
2007/10/02
Rev0
Machida
First Revision
41
Fly UP