8.チュートリアルに沿って試してみよう (UART LiberoIDE フロー)8-1. Libero IDE and SoftConsole Flow Tutorial を見てみよう今回はLibeoIDEとSoftConsoleを使用して、SmartFusionの構成と、ARMのCプログラミングを行ってみます。今回の最も注目すべき点は 「ソフトコンソールフローと同じことがLiberoIDEをスタートポイントとしてもできるよ」 ということです。 結果はソフトコンソールと同じですが、途中にLiberoIDEでUARTを配置する手順が出てきます。つまり・・・この手順をちょこっと応用すれば、自分で設計したFPGA部分を載せることもできます。 ARMに載っているIPだけでなく、FPGA部分も活用したい!って時にはこの手順ですね。 チュートリアルとデータのZIPをダウンロードしておきます。 http://www.actel.com/products/hardware/devkits_boards/smartfusion_eval.aspx にある Using UART with SmartFusion: Libero IDE and SoftConsole Flow TutorialのSmartFusion_UART_HW_flow_LiberoSoftConsole_tutorial_UG.pdf とDesign Files (ZIP, 6.8 MB, 2/11) SmartFusion_UART_HW_flow_LiberoSC_tutorial_DF.zipをダウンロードしてきます。 今回はZIPファイルの中身は全部使わないで必要なところだけ利用します。(ZIPの中には全部入っているので単なるデモになっちゃうので。) ZIPをとりあえず解凍しておきます。 C:\Actelprj\SmartFusion に置いて解凍すると、SmartFusion_UART_HW_flow_LiberoSC_tutorial_DFというフォルダができて、さらにSoftConsoleの下に何個かフォルダができますね。 8-2. Libero IDE and SoftConsole Flow Tutorial に沿って構築してみよう手順としては
7.のソフトコンソールフローと同じところは、あっさりとした説明にするので、詳細は7.のソフトコンソールフローを参照してください。 8-2-1. LiberoIDEでプロジェクト作成スタート->すべてのプログラム->ActelLiberoIDE v9.1->LiberoIDE v9.1を選択します。(2011/07/09現在、バージョンは変わる可能性があるので都度読み替えてください)ProjectManagerが開きましたね。
Project -> New Project を選びます。 Welcome to the New Project Wizardが開きます。プロジエクトの場所とか名前とかを入れます。 Project name: に SmartFusion_UART_HW を入れます。 Project location: に C:\Actelprj\UART_Libero_SoftConsole\SmartFusion_UART_HW を入れます。 Preferred HDL type: は好みですが Verilog にします。 Next> で次にすすみます。
Family,Die and Package。ここではデバイスの種類とか、パッケージとかを選択します。 メガメガボードは以下のとおり Family:SmartFusion Die:A2F200M3F Package:484 FBGA を選び Next>
Select Integraeted Tools。ここは開発にどんなツールを使うか設定しますが、他にツールが無いのであればこのままで良いです。 Next>へ。
Add files to your project。ここはもしすでにRTLやテストベンチがあるならここで追加します。今回は無いのでそのまま Next>。
Completing the New Project Wizard。いま設定した構成一覧が出ています。スルスルとスクロールして確認です。間違いないようならFinish。
8-2-2. SmartFusion MSS 構成Add Microcontroller Subsystem。これはMSSのバージョンを示しているので確認します。 また、Documentationの所はマニュアルへのリンクになっているので、クリックするとPDFドキュメントがWebビューアで開きます。興味があるものに目を通しておきます。 デザイン名を入力する必要があります。 Design Name:uart_mss と入力し、OK。
スマートデザイン今フィギュレータが立ち上がります。 ここの手順は前回の 7-2-2. SnartFusion MSS 構成 と同じですので詳細はそちらを参照してください。以下簡単に説明。
8-2-3. LiberoIDEで配置、生成、合成、プログラミングファイル作成ここから LiberoIDEのSmartDesignを使ってUARTを配置していきます。実際にハードを置いていくイメージですね。前回と異なる所です。Project Flow ペーンのSmartDesignをクリックします。もしくは ツールバーからTools->SmartDesiginでも良いようです。 Name:UART_TOP と入力します。
UART_TOPが開きました。左のペーンのツリーにUART_TOPが追加されているはずです。 左のペーンのuart_mssを右クリックしそのままドラッグしてUART_TOPのペーンまで持ってきてドロップします。 uart_mss_0というモジュールが淡青で表示され自動的に配線(2本)されます。 左のペーンのUART_TOPをクリック、右クリックしてSet as root を選択します。(重要) 文字が太字になります。 Saveのアイコンをクリック、もしくはFile->Save UART_TOP をします。 Generateのアイコンをクリック、もしくはSmartDesign->GenerateDesign を選択し回路生成します。 Design "UART_TOP" was successfully generated となればOKです。 この、"UART_TOP"をGenerateというのが重要です。たとえばuart_mssがTOPのままでGenerateすると後々なんで動かんの?となるので忘れないようにします。(実際忘れてさんざん悩んだのデス(^_^;);)
次は合成をします。合成って何?っていうと、実際の回路をFPGAへのデーター形式に変換する事です。いままでのデータはVerilogとかVHDLとかの人が判りやすい形で書かれていましたが、これをFPGAでわかる形式に書き換えるようなものです。ただし実際のFPGAの物理的位置への割付(配置配線)は行いません。配置配線は次ステップで。 Project Flowにある Synthesis Synplifyをクリックします。
左のペーンにRunとあるはずです。これをクリックするだけです。お手軽ですね。 SmartFusion Mapper Completed with warnings Return Code: 1 Run Time:00:00:03 とか表示されればOKです。ほとんど時間はかかりません。warningsやnotesはいくらかありますがerrorsが0であれば問題ないです。 合成の結果とかは右のペーンのImplementation Directory のNameツリーのSynlogにUART_TOP_SmartFusion_Mapper.srrとかをクリック、右クリックしてopenを選ぶと見ることができます。 今回の場合はほとんどすでにOnchipにあるIPをくっつけるだけなので、あまり合成っぽく無いって気もします。(^^;); File->Exitで閉じます。
次はPlace&Route、配置配線です。ここで先ほど合成したFPGAデータを実際のFPGAデバイスの物理的な位置への配置と配線を行います。 ProjectFlowにあるPlace&Routeをクリックします。
Organize Constrains for Designer。 どのファイルを配置配線するか指定します。すでにUART_TOPとUART_TOP_sdc.sdcがAddされているはずなのでOKをクリックして次にすすみます。 もし違っていたらどこかの手順を間違っているので(Generateする階層まちがえたとか)前にもどって確認します。
Designerが立ち上がり、さらにDevice Selection Wizardが立ち上がります。 Die:A2F200M3F Package:484FBGA Speed:-1 が選択されていることを確認して 次へ
Design Selection Wizard - Variations ここで入出力端子のデフォルトのI/O電圧レベルを決めます。もし各ピンを個別に設定したいときはPinEditerを使います。 Default I/O standard LVTTL になっていることを確認して次へ
Device Selection Wizard - Operating Conditions ここでは動作状態を設定します。Range:のところは COM,IND,Customとありますが、COMはコマーシャル、一般用ということで、INDはインダストリアル、工業用で、Customは個別設定です。INDの方が温度範囲とかが広く、厳しくなっています。 ここはCOMのままで 完了。 Designerに戻りますが、ここで新しいバージョンのパッチを検索するようで、少し時間がかかります。なにも無いときはMessageでNo patchi is required. This software versionn is up to date. とか出ます。
Designer - [UART_TOP.adb*]に戻ります。Design Flowに沿ってまず、コンパイルを行います。 Compileをクリックします。
Compile Options ここでは、コンパイルの設定ができます。Categorisの所を選んでいくといろいろ設定ができるようです。 今回はデフォルトのままOK。
コンパイルが行われ、Cpmpileの所にチェックが付き、緑色にかわりましたね。 The Compile command succeeded ( 00:00:03 ) とか表示されていればOKです。 次に配置、Layoutを行います。 Design Flowの Layoutをクリックします。 Layout Options ここでは配置配線の設定をできます。インクリメンタル配置、配線の設定とか、試行回数とか、実行の程度とかを指定できます。 今回はデフォルトのまま、そのままOKをクリックします。 配置配線が始まります。すこししてLayoutのところにチェックが付き、緑色に変われば完了です。 The Layout command succeeded ( 00:00:13 ) とか下のペーンに表示されていればOKです。
最後に書き込みの為のファイルを生成します。 FlashPro Data File をクリックします。 今回は設定もなく、直ぐに実行され、FlashPro Data File にチェックが付いて緑色に変われば完了です。 The Export command succeeded ( 00:00:11 ) と表示されればOKです。
File->ExitでDesignerを閉じます。 Saveするか聞いてくるので はい を選択します。 Project Managerの Project Flow のPlace&Route が緑色に変わります。
8-2-4. FrashProでSmartFusionの構成を転送次は生成したFPGAデータを実際にメガメガボードに書き込みます。メガメガボードをPCに接続します。 ジャンパー設定はいままでのままでOKです。一応書いておくと JP10:1と2 JP7:1と2 J6:1と2 JP6:2と3 J13:USBケーブルでPCに接続 J14:USBケーブルでPCに接続 です。 ここの手順は 7-2-4. FlashProで構成とプログラムの転送 と似ているところも多いのでそちらも参照してください。 ProjectFlowのProgramming FlashPro を選択します。Verupを確認しているので起動に少し時間がかかります。
Configure Device アイコンクリック。 Programming file の Modify をクリック FlashPoint - UART_TOP.pdb ウィンドが開きます。 FPGA Array のところはデフォルトでパスが入っています。 Embedded Flash MemoryのImportを選択します。 C:\Actelprj\UART_Libero_SoftConsole\SmartFusion_UART_HW\component\work\uart_mss\MSS_ENVM_0 の MSS_ENVM_0.efc が選択されていることを確認します。 Save PDB で完了
ViewProgrammersを行うとProgrammer List window に現れます。なにも現れないときはボードの接続を確認します。 PROGRAM アイコンをクリックすると書き込みが始まります。1分位まちます。 Programmer List window の Programmer Statusに RUN PASSED と表示されれば完了です。 File->Exitで閉じます。Saveするかどうか聞かれるので はい を選んで終了です。 8-2-5. Softconsoleでプロジェクト作成、ARMのCプログラミングここからはARMのCプログラムを作成します。手順は 7-2-5. デバッガーで実行確認 とほぼ同じです。そちらを参照してください。簡単に説明していきます。
MSS Configuratorで生成したドライバーを読み込む必要があります。 まず、左ペーンのProject Explorer の polled_uart_scを左クリック後、右クリックし、Importを選びます。
Import Selectのウィンドが開くので、Generalをクリックし、File Systemを選択してNext
From directory: の Browseを選び C:\Actelprj\UART_Libero_SoftConsole\SmartFusion_UART_HW\firmware を選択します。 左のペーンにfirmwareと現れます。クリックするとCMSISとdriversがあるはずなのでチェックが入っていることを確認します。 Finishで完了です。
File->New->Source File を選択します。New Source File が開くので、Source File:に main.c と入力し、Finish 後は 7-2-3. SnartFusion Cプログラム作成 と同じように行えばOKです。以下、簡単に説明します。 チュートリアルのP34にあるプログラムを打ち込みます。 打ち込み終わったらFile->Saveで保存します。 左のペーン Projcect Explorer の polled_uart_scを左クリック、右クリックし、Propatyを選びます。 Properties for polled_uart_sc が開きます。 左ペーンのC/C++ Build -> Settings を選択します。 Tool Settingsのツリーの GNU C Linker のMiscellaneous を選択します。 Linker flags に -T../CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld を入力し Apply->Finishをクリックします。Applyは必須です。 この手順は忘れやすいのですが、必須の手順なので忘れないようにします。忘れると次の手順でmake: *** [polled_uart_sc] Error 1 とか出ます。 Projcet->Clean で Clean all projects が選択され polled_uart_scにチェックが入っていることを確認しOK。 コンパイルが終わり、エラー等でなければOKです。 8-2-6. デバッガーで実行確認これ以降は 7-2-5. デバッガーで実行確認 と同じです。そちらも参照しながら見てください。 TeraTermを立ち上げ ボーレート 57600、データ8bit、パリティ none、ストップ1bit になっていることを確認します。 SoftConsoleで Run->Debug Configurationsを選択します。左ペーンからMicrosemi Cortex-M3 RAM Targetをダブルクリックし polled_uart_sc Debug を開きます。 Project polled_uart_sc C/C++ Application: Debug\polled_uart_sc になっていることを確認し、Debugをクリック。 Confirm Perspective Swich は Yesをクリック デバッガが開くので、Run->Resume で実行できます。 ソフトコンソールフローの時のようにレジスタ値やブレークなどいろいろ見てみます。 終了するには Debug ペーンで、右クリックして Terminate and Remove を選択します。もしくはTerminate で実行を止めて Debug ペーンで、右クリックして Remove All Terminate を選択します。 ツールバーから File -> Exit を選択し、ソフトコンソールを終了します。 またTeraTermも ファイル -> 終了 で終了します。 8-3. おわりに結構長々となりましたが、LiberoIDEを使用して合成、配置配線を行った後、ARMのプログラムを書いて実際にSmartFusion上で走らせる事ができました。 ソフトコンソールだけの手順に比べてやや複雑になっていますが、FPGA部分を作成して行う手順はこちらの手順の応用で行うことになります。 そろそろ、英語の資料見たらわかる、デモとチュートリアルばっかりやってないで、なんか作れって声も聞こえてきそうなので、次回はチュートリアルをちょっと離れてオリジナルで何か作ってみます。 |
![]() |