Comments
Description
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