しばっち電機
-

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 に沿って構築してみよう

手順としては
  1. LiberoIDEプロジェクト作成
  2. SmartFusion MSS 構成
  3. LiberoIDEで配置、生成、合成、プログラミングファイル作成
  4. FrashProでSmartFusionの構成を転送
  5. Softconsoleでプロジェクト作成、ARMのCプログラミング
  6. デバッガーで実行確認
といった感じです。

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 構成 と同じですので詳細はそちらを参照してください。以下簡単に説明。
  • ACE, MAC, fabric interface, SPI0, SPI1, I2C0, I2C1, UART1, EMC のチェックボックスのチェックを外します。
  • Clock Management をクリック。PLL出側のセレクタを真ん中(PLL出力)選択、その右横の周波数のテキストボックスに80MHzを入力。OK
  • Firmwareタブで MSS_UART_Driver_0,MSS_Watchdog_Driver_0,SmartFusion_CMSIS_PAL_0 を選択。それ以外のチェックを外す。
  • 歯車とスパナのマークをクリックし、Software Tool chain が SoftConsoleになっているのを確認し、OK。
  • ツールバーから File->Save uart_mss。 かならずセーブすること。これを忘れてGenerateするとハングアップすることがあります。
  • ツールバーから Design -> Generate で生成。しばらく時間がかかります。コーヒーでも飲んでまちます。
  • Error:Unable to create directory とか出ますが気にしないで良いようです。 Info: Design "uart_mss" was successfully generated. となっていればOK
MSSはこれで終了。File->Exitで閉じます。

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. デバッガーで実行確認 とほぼ同じです。そちらを参照してください。
簡単に説明していきます。
  1. Windowsのスタート->すべてのプログラム->Microsemi SoftConsole v3.3->Microsemi SoftConsole IDE v3.3.0.14を選択します。
  2. Wrokspace Launcherが開くので、Workspace:に C:\Actelprj\UART_Libero_SoftConsole\Softconsole_workspace と入力し、OKをクリック。
  3. File->New->C Project を選択すると、C Projectウインドが開きます。Project name:に polled_uart_sc と入力します。
  4. Project type:がExecutable - Empty project、Toolchains:がMicrosemi Coretex-M3 Toolsになっているのを確認してNext>をクリック。
  5. Select Configurations で Debug,Releaseにチェックが付いていることを確認して、Finish。
ここから少しソフトコンソールフローと異なる操作が必要です。
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部分を作成して行う手順はこちらの手順の応用で行うことになります。


そろそろ、英語の資料見たらわかる、デモとチュートリアルばっかりやってないで、なんか作れって声も聞こえてきそうなので、次回はチュートリアルをちょっと離れてオリジナルで何か作ってみます。


1つ上
1つ上へもどる


トップ
トップページへもどる


mark  Copyright(c) shibatchii 2011 All Rights Reserved.

-