FM3 ファミリ 32 ビット・マイクロコントローラ FM3 マイコンシミュレータ 外部デバイスモデル開発手引書 (Switch & LED デバイスモデル) USER MANUAL Cypress (サイプレス)のマイコンを効率的に開発するための情報を下記 URL にてご紹介いたします。 ご採用を検討中、またはご採用いただいたお客様に有益な情報を公開しています。 http://www.spansion.com/jp/support/microcontrollers/ Publication Number FM3_MN706-00051 CONFIDENTIAL Revision 1.0 Issue Date September 15, 2015 U S E R M A N U A L はじめに Cypress (サイプレス)製品につきまして、平素より格別のご愛顧を賜り厚くお礼申し上げます。 シミュレータ向け外部デバイスを開発する前に、本書および後述の関連マニュアルをご一読ください。 本書の目的と対象読者 本書には、FM3 シミュレータの XSI ブリッジに接続するための外部デバイスを開発する手順が記載されて います。本書では、外部デバイスを外部デバイスモデルとも記載しています。 スイッチ入力機能と LED 出力機能を持った外部デバイス(Switch&LED デバイス)をマイコンから制御するシ ステムを例とし、外部デバイスのモデル化と、仮想環境システムの構築手順を説明します。 デバイス仕様の詳細については、それぞれのデータシートを参照してください。 収録ファイル 本書で扱っている Switch&LED デバイスモデルのファイルが以下に収録されています。 XSI_switch_led_shm/ xsi_switch_led_shm.sln: Visual Studio ソリューションファイル xsi_switch_led_shm.vcproj: VC++プロジェクトファイル xsi_switch_led_shm.cpp: Switch&LED デバイスモデル CPP ファイル xsi_switch_led_shm.h: Switch&LED デバイスモデル ヘッダファイル xsi.xml: XSI 接続定義ファイル xsi_switch_led_shm.xml: 外部デバイス定義ファイル Release/xsi_switch_led_shm.dll: Switch&LED デバイスモデル DLL ファイル 開発に必要な開発環境 − Windows 7 SP1 以降 − Microsoft Visual C++ 2010 SP1 2 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 関連マニュアル 本書に関連するマニュアルを示します。状況に応じて必要なマニュアルを参照してください。 本書に記載したマニュアルの内容は予告なく変更することがあります。最新版をお問い合わせください。 Virtual Starter Kit 製品版ユーザマニュアル Virtual Starter Kit の搭載機能や仕様詳細については、以下を参照してください。 FM3 ファミリ 32 ビット・マイクロコントローラ Virtual Starter Kit 製品版ユーザマニュアル XSI(Crossing Simulator Interface)ユーザマニュアル XSI のインタフェース仕様については、以下を参照してください。 XSI(Crossing Simulator Interface)ユーザマニュアル FM3 マイコンシミュレータインタフェースユーザマニュアル FM3 マイコンシミュレータで実装されているインタフェースの仕様については、 以下を参照してください。 FM3 マイコンシミュレータインタフェースユーザマニュアル September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 3 U S E R M A N U A L Table of Contents 1. 2. 3. 4. 5. 6. 7. 8. 9. 4 CONFIDENTIAL 外部デバイスモデルの開発 ............................................................................................................ 7 開発フロー ..................................................................................................................................... 8 システム構成の決定 ....................................................................................................................... 9 3.1 開発対象となるシステム ..................................................................................................... 9 3.2 仮想環境のシステム構成 ................................................................................................... 10 外部デバイスモデル仕様の決定 ................................................................................................... 11 4.1 機能の決定 ........................................................................................................................ 11 4.2 ポートインタフェースの決定 ............................................................................................ 12 外部デバイスモデルの実装 .......................................................................................................... 13 5.1 機能の実装 ........................................................................................................................ 13 5.1 外部デバイスモデル(DLL)の生成.................................................................................. 20 FM3 マイコンシミュレータとの接続 ........................................................................................... 21 6.1 外部デバイス定義ファイルの作成..................................................................................... 21 6.2 XSI 接続定義ファイルの作成 ............................................................................................ 22 シミュレーションの実行 .............................................................................................................. 23 Appendix ...................................................................................................................................... 24 8.1 Switch&LED GUI について ................................................................................................ 24 主な変更内容 ................................................................................................................................ 25 FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L Figures Figure 2-1 開発フロー ............................................................................................................................... 8 Figure 3-1 ターゲットシステム ................................................................................................................. 9 Figure 3-2 FM3 シミュレータと Switch&LED デバイスモデルの接続環境 .............................................. 10 Figure 5-1 LED 出力シーケンス ............................................................................................................... 14 Figure 5-2 Switch&LED デバイスモデルにおける LED 出力機能の XSICreateDevice の実装例 .............. 15 Figure 5-3 Switch&LED デバイスモデルにおける LED 出力機能のコールバック関数の実装例 .............. 15 Figure 5-4 SWITCH 入力シーケンス ........................................................................................................ 17 Figure 5-5 Switch&LED デバイスモデルにおける SWITCH 入力機能の XSICreateDevice の実装例 ....... 18 Figure 5-6 Switch&LED デバイスモデルにおける SWITCH 入力機能の callback 関数の実装例 .............. 19 Figure 6-1 Switch&LED デバイスモデル用外部デバイス定義ファイル(xsi_switch_led_shm.xml)の記述例 .......................................................................................................................................................... 21 Figure 6-2 XSI 接続定義ファイル(xsi.xml)の記述例 ............................................................................ 22 Figure 8-1 Switch&LED デバイスモデルの GUI ....................................................................................... 24 Figure 8-2 右 Switch 押下により LED 出力が ON となった場合の表示.................................................... 24 September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 5 U S E R M A N U A L Tables Table 1-1 外部インタフェースおよび XSI に関するドキュメント............................................................. 7 Table 4-1 Switch&LED デバイスモデル ポート一覧 ................................................................................ 12 6 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 1. 外部デバイスモデルの開発 本書は、FM3 マイコンシミュレータの外部インタフェースに接続可能な外部デバイスモデルを開発するた めの手引書としてご利用ください。 本書の解説対象としてサンプルの外部デバイスモデル一式をサンプルデバイスパッケージとして提供して います。本書と合わせてご利用ください。 サンプルパッケージ(switch_led_shm.zip) 外部デバイスモデルを開発するためのサンプルプロジェクト(VC2010)およびソースコード一式、シミュ レーションの実行に必要な各種設定ファイル、サンプルプログラム(バイナリ)を収録したサンプルパッ ケージです。 サンプルパッケージの内容については、パッケージ内の README を参照ください。 関連ドキュメント 外部インタフェースおよび XSI に関する仕様や利用方法が収録されたドキュメントを Table 1-1 に記します。 本書と合わせて、目的に応じてご利用ください。 Table 1-1 外部インタフェースおよび XSI に関するドキュメント ドキュメント名 説明 XSI(Crossing Simulator Interface) XSI の基本仕様や API、各種定義ファイルの仕様 ユーザマニュアル について説明しています。 FM3 マイコンシミュレータ 外部デバイスモデル開発手引書 (本書) XSI を利用した外部デバイスモデルの開発方法 や実装例を、サンプルを用いて説明しています。 関連する構成要素 XSI API(仕様) 接続定義ファイル(仕様) 外部デバイス定義ファイル(仕様) 外部デバイスモデル(実装例) 接続定義ファイル(実装例) 外部デバイス定義ファイル(実装例) FM3 マイコンシミュレータの外部インタフェー ス、外部デバイスモデルの接続設定について説明 Virtual Starter Kit 製品版ユーザ しています。 マニュアル ご利用の Virtual Starter Kit パッケージがサポート している外部インタフェースの情報については、 外部インタフェース(種類)*1 MCU 定義ファイル(設定例) 接続定義ファイル(設定例) 本ドキュメントをご参照ください。 FM3 マイコンシミュレータ インタフェースユーザマニュアル FM3 マイコンシミュレータの外部インタフェー スと外部デバイスモデルを通信させるための実 装方法について説明しています。 XSI API(概要) 外部インタフェース(実装方法)*1 *1: ご利用の FM3 マイコンシミュレータがサポートする外部インタフェースの種類については、Virtual Starter Kit 製品版ユーザマニュアルに収録されています。各インタフェースの制御や通信の実装方法については、FM3 マイ コンシミュレータインタフェースユーザマニュアルに収録されています。 September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 7 U S E R M A N U A L 2. 開発フロー 開発の基本的な流れを以下に示します。 Figure 2-1 開発フロー システム構成の決定 外部デバイスモデル仕様の決定 外部デバイスモデルの実装 FM3 マイコンシミュレータとの接続 シミュレーションの実行 次章から、各工程について説明します。 8 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 3. システム構成の決定 まず、仮想化のターゲットとなるシステム構成を決定します。 3.1 開発対象となるシステム 本書で扱う開発対象例として、スイッチ入力機能と LED 出力機能を備えた外部デバイス(Switch&LED デバ イス)をマイコンから制御するシステムのターゲットとします。Figure 3-1 に示します。 Switch&LED デバイスのスイッチ入力機能は、ユーザのスイッチ操作(ON/OFF)を検出し、スイッチの状 態を FM3 マイコンに出力します。3 系統のスイッチ入力を持ちます。 Switch&LED デバイスの LED 出力機能は、デバイスに入力された信号の状態を LED に出力します。3 系統 の LED 出力を持ちます。 Figure 3-1 ターゲットシステム FM3 マイコン 汎用出力 (GPIO) 外部割込 September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL Switch&LED デバイス P0_out led0 P1_out led1 P2_out led2 INT0 switch0 INT1 switch1 INT2 switch2 LED スイッチ 9 U S E R 3.2 M A N U A L 仮想環境のシステム構成 Switch&LED デバイスを外部デバイスモデルとして開発し、FM3 マイコンシミュレータの外部インタフェー スに接続します。 システム構成を Figure 3-2 に示します。 Switch&LED デバイスモデルのスイッチ入力機能および LED 出力機能には、GUI プログラムを利用し、シ ミュレーション中にユーザが任意に操作できるようにします。 スイッチ入力機能として、GUI のマウス操作によるスイッチ押下状態の変化を取り込み、FM3 マイコンシ ミュレータに通知する機能を搭載します。 また、FM3 マイコンシミュレータからの出力信号を利用して GUI の LED の表示状態を切り替える機能を搭 載します。 なお、GUI プログラムおよび GUI プログラムとデバイスモデルの通信の実装については、本書では解説し ません。 Figure 3-2 FM3 シミュレータと Switch&LED デバイスモデルの接続環境 FM3 シミュレータ 汎用出力 (GPIO) 外部割込 10 CONFIDENTIAL ブリッジモジュール P0_out0 led0 P0_out1 led1 P0_out2 led2 INT00 switch0 INT01 switch1 INT02 switch2 Switch&LED デバイスモデル XSI IF GUI FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 4. 外部デバイスモデル仕様の決定 4.1 機能の決定 外部デバイスモデルに搭載する機能を決定します。 Switch&LED デバイスモデルは、下記 2 つの機能を搭載します。 − スイッチ入力機能 − LED 出力機能 スイッチ入力機能 GUI からのスイッチ入力を検出し、スイッチの押下状態を信号値としてポートから出力します。 スイッチ入力が Low の場合は、出力ポートに Low を、スイッチ入力が High の場合は、出力ポートに High を出力します。 スイッチ操作によるチャタリングの発生等、実機で発生しうる入力信号のノイズについては考慮(モデリン グ)しないことにします。 LED 出力機能 FM3 マイコンシミュレータからの信号出力を検出し、LED の制御信号として GUI に出力します。 FM3 マイコンシミュレータからの信号出力が Low の場合は LED を消灯し、信号出力が High の場合は LED を点灯します。 機能抽出のポイント シミュレーションの目的にそぐわない機能については、基本的にはモデルに搭載しないことをお勧めし ます。 モデルでの必要以上の機能の再現は、仮想環境の開発コストの増加や、シミュレーション実行速度の低 下を引き起こす要因となります。 シミュレーションの目的に応じて必要最低限の機能を抽出し、モデル化します。 September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 11 U S E R 4.2 M A N U A L ポートインタフェースの決定 外部デバイスモデルに搭載させるポートを決定します。 外部デバイスモデルに搭載するポートは、FM3 マイコンシミュレータの外部インタフェースとの接続に利 用します。FM3 マイコンシミュレータのポートと同様、外部デバイスモデルのポートにも名前を定義する 必要があります。 ここで定義した名前は、外部デバイスモデルの実装(ポートの登録処理) 、外部デバイス定義ファイルの作 成(ポートの定義) 、接続定義ファイルの作成(接続先/接続元となるポートの定義)の中で共通して利用 します。 Table 4-1 に Switch&LED デバイスモデルのポートの一覧を示します。 Switch&LED デバイスモデルには、スイッチ入力機能用の出力ポート 3 本と、LED 出力機能用の入力ポート 3 本をそれぞれ搭載します。 スイッチ入力機能用の出力ポート(switchx) 1bit のデジタル信号を扱う出力ポートを 3 本実装します。 それぞれ、FM3 マイコンシミュレータの外部割込み機能のポート(INTx)に接続して利用することを想定 しています。 LED 出力機能用の入力ポート(ledx) 1bit のデジタル信号を扱う入力ポートを 3 本実装します。 それぞれ、FM3 マイコンシミュレータの汎用出力機能のポート(Px_out)に接続して利用することを想定し ています。 Table 4-1 Switch&LED デバイスモデル ポート一覧 ポート名 12 CONFIDENTIAL 方向 信号型 接続先 備考 switch0 出力 1bit のデジタル信号 外部割込(INTx) GUI の左スイッチに対応 switch1 出力 1bit のデジタル信号 外部割込(INTx) GUI の中スイッチに対応 switch2 出力 1bit のデジタル信号 外部割込(INTx) GUI の右スイッチ led0 入力 1bit のデジタル信号 汎用出力(Px_out) GUI の左 LED に対応 led1 入力 1bit のデジタル信号 汎用出力(Px_out) GUI の中 LED に対応 led2 入力 1bit のデジタル信号 汎用出力(Px_out) GUI の右 LED に対応 FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 5. 外部デバイスモデルの実装 外部デバイスモデルの実装には、XSI(Crossing Simulation Interface)を利用します。 XSI で定義されている API や Struct を利用するために、XSI のヘッダファイル(XSI.h)をご利用ください。 外部デバイスモデルは、DLL としてビルドしてし利用します。DLL の生成には、Visual C++を利用します。 実装例として掲載しているコードは、サンプルデバイスパッケージに含まれる 含まれています。 5.1 xsi_switch_led_shm.cpp に 機能の実装 XSI の API を利用して、 XSI で定義された初期化処理と、 ポートを利用した外部との通信機能を実装します。 <注意事項> − XSI 仕様詳細については、XSI(Crossing Simulator Interface)ユーザマニュアルを参照ください。 初期化処理の実装 すべての外部デバイスモデルは、XSICreateDevice 関数を実装する必要があります。 XSICreateDevice 関数は、シミュレーションの開始時に一度だけコールされます。外部デバイスモデルは、 XSICreateDevice 関数コールの中で XSICreatePort 関数を利用して FM3 マイコンシミュレータとの通信に必 要なポートの生成および登録を行います。 ここでは、スイッチ入力機能用のポート(ledx)と、LED 出力機能用のポート(switchx)を登録します。 実装のポイント 外部デバイスモデルは、使用の有無にかかわらず、以下の XSI API を実装する必要があります。 - XSICreateDevice - XSIDisposeDevice September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 13 U S E R M A N U A L LED 出力機能の実装 FM3 マイコンシミュレータからの信号出力を受け、LED に ON/OFF を通知する機能を実装します。 本機能の実装には、初期化処理で登録した LED 出力機能用のポート(ledx)を利用します。 入力ポートを実装する場合は、XSICreatePort 関数を利用したポート登録の際に、信号入力通知を受けるた めのコールバック関数を登録します。 Figure 5-1 に、LED の出力シーケンスを示します。 Figure 5-2 に、Switch&LED デバイスモデルの XSICreateDevice 関数実装例、Figure 5-3 に XSICreatePort を利 用したコールバック関数(recv_led)の登録例を示します。 実装のポイント 入力ポートを実装する場合は、XSICreatePort 時に入力信号変化の通知を受けるためのコールバック関数 を登録する必要があります。 Figure 5-1 LED 出力シーケンス FM3 マイコンシミュレータ (ブリッジモジュール) GUI (LED 描画機能) Switch&LED デバイスモデル XSICreateDevice 汎用出力へ出力 XSICreatePor t 初期化処理 recv_led (callback) LED への出力処理 14 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L Figure 5-2 Switch&LED デバイスモデルにおける LED 出力機能の XSICreateDevice の実装例 int __stdcall XSICreateDevice(const char *name, XSI::IXSI *bridge, const char *args[][2], int size) { m_bridge = static_cast<XSI::IXSI *>(bridge); /* led0-2 ポートの生成(入力ポート) */ { /* コールバックパラメータの生成 */ for (unsigned int i = 0; i < NUM_LED_CH; i++) { m_led_param[i] = i; } /* ポートの生成 */ /* HRESULT __stdcall CreatePort( [in] const char *device, デバイスモデル名 [in] const char *port, ポート名 [in, opt] bool (*callback)( 受信時の動作を指定するコールバック [in] int id, [in, opt] void *value, [in] void *data, [in] std::size_t size), [in, opt] void *value, コールバックパラメータ [out] int *id ポート ID ); */ m_bridge->CreatePort(name, "led0", &recv_led, &m_led_param[0], &m_led_id[0]); m_bridge->CreatePort(name, "led1", &recv_led, &m_led_param[1], &m_led_id[1]); m_bridge->CreatePort(name, "led2", &recv_led, &m_led_param[2], &m_led_id[2]); } Figure 5-3 Switch&LED デバイスモデルにおける LED 出力機能のコールバック関数の実装例 bool recv_led(int id, void *value, void *data, size_t size) { unsigned int index = *(static_cast<unsigned int *>(value)); XSI::Protocol::TLM::Packet XSIRecvPacket = *(static_cast<XSI::Protocol::TLM::Packet *>(data)); vsk::ST_GENERIC_PACKET genericRecvPacket; bool b_data; memcpy(&genericRecvPacket, XSIRecvPacket.data, XSIRecvPacket.length); b_data = *(reinterpret_cast<bool *>(genericRecvPacket.data)); /* led0-2 ポートからの入力データを GUI 用共有メモリへ書き込み */ f_led[index] = b_data; WriteLedShm(index); return true; } September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 15 U S E R M A N U A L SWITCH 入力機能の実装 LED 出力機能と同様に、CreatePort を利用して FM3 外部割込み入力と通信するためのポートを登録します。 出力ポートを登録する場合は、コールバック関数の登録は行いません。 Switch&LED デバイスモデルは、周期ポーリング処理で GUI からのスイッチ入力を待ち、スイッチ入力の更 新があった場合に、FM3 マイコンシミュレータの外部割込み入力に更新を通知します。 ポーリング処理を実装するためには、XSI API の XSISetAlarm を利用します。XSISetAlarm 関数は、ポー リング処理の周期(シミュレーション時間)と、周期経過時にコールされるコールバック関数の登録うため の関数です。 Switch&LED デバイスモデルの XSISetAlearm コールバック関数の中では、スイッチ入力の更新検知、更新 があった場合の FM3 マイコンシミュレータへの通知、XSISetAlearm 関数の再登録(再起処理)を行います。 XSICreateDevice 関数の中で初回の XSISetAlearm 登録を行い、それ以降はコールバック関数の中で XSISetAlearm 関数を利用して自身(コールバック関数)を再登録することにより、再帰的なコールバック によるサンプリング処理を実現しています。 コールバック関数の中でスイッチ入力の変化を検出すると、XSIAccessPort を使用して FM3 マイコンシミュ レータに通知します。 Figure 5-4 に、SWITCH 入力のシーケンスを示します。 Figure 5-5 と Figure 5-6 に Switch&LED デバイスモデルにおける SWITCH 入力機能の実装例を示します。 実装のポイント 周期ポーリングを実装するために、XSISetAlarm を利用できます。 XSISetAlarm 関数は、指定した時間の経過後に登録したコールバック関数をコールさせるための関数です。 本機能を利用して、コールバック関数の中で XSISetAlarm を再度登録することにより、再帰的かつ周期 的なコールバック処理を実行させることができます。 16 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L Figure 5-4 SWITCH 入力シーケンス FM3 マイコンシミュレータ (ブリッジモジュール) GUI (スイッチ入力機能) Switch&LED デバイスモデル XSICreateDevice XSICreatePort XSISetAlarm 初期化処理 drive_switch (callback) スイッチ入力のサンプリング XSIAccessPort 外部割込へ入力 スイッチ 入力 XSISetAlarm drive_switch (callback) スイッチ入力のサンプリング XSIAccessPort 外部割込へ入力 XSISetAlarm drive_switch(callback) September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 17 U S E R M A N U A L Figure 5-5 Switch&LED デバイスモデルにおける SWITCH 入力機能の XSICreateDevice の実装例 int __stdcall XSICreateDevice(const char *name, XSI::IXSI *bridge, const char *args[][2], int size) { m_bridge = static_cast<XSI::IXSI *>(bridge); /* switch0-2 ポートの生成(出力ポート) */ { /* コールバックパラメータの生成 */ for (unsigned int i = 0; i < NUM_SWITCH_CH; i++) { m_switch_param[i] = i; } /* ポートの生成 */ m_bridge->CreatePort(name, "switch0", NULL, &m_switch_param[0], &m_switch_id[0]); m_bridge->CreatePort(name, "switch1", NULL, &m_switch_param[1], &m_switch_id[1]); m_bridge->CreatePort(name, "switch2", NULL, &m_switch_param[2], &m_switch_id[2]); /* コールバック関数の登録(初期登録) */ /* SetAlarm 関数を利用して GUI 対する周期ポーリング処理を登録 */ /* HRESULT __stdcall SetAlarm( [in] uint64_t relTime, アラーム通知時刻 [in] bool (*callback)( アラーム通知時の動作を指定するコールバック [in] int id, [in, opt] void *value), [in, opt] void *value, コールバックパラメータ [out] int *id アラーム ID ); */ for (unsigned int i = 0; i < NUM_SWITCH_CH; i++) { m_bridge->SetAlarm(DEF_OFFSET_TIME * 1000 * 1000 * 1000ULL, drive_switch, &m_switch_param[i], &m_alarm_id); } } 18 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L Figure 5-6 Switch&LED デバイスモデルにおける SWITCH 入力機能の callback 関数の実装例 bool drive_switch(int id, void *value) { unsigned int ch = *(static_cast<unsigned int *>(value)); static unsigned char m_data; vsk::ST_GENERIC_PACKET genericSendPacket; XSI::Protocol::TLM::Packet XSISendPacket; /* GUI からの Switch 入力取得 */ ReadSwitchShm(); if(ch<NUM_SWITCH_CH) m_data = f_switch[ch]; /* パケットに Switch 入力値詰め込み */ genericSendPacket.valid = true; genericSendPacket.content_id = vsk::EN_CONTENTID_DIGITAL; genericSendPacket.length = sizeof(m_data); genericSendPacket.data = reinterpret_cast<unsigned char*>(&m_data); XSISendPacket.type = XSI::Protocol::TLM::blocking; XSISendPacket.phase = XSI::Protocol::TLM::uninitialized; XSISendPacket.command = XSI::Protocol::TLM::write; XSISendPacket.address = 0; XSISendPacket.length = sizeof(vsk::ST_GENERIC_PACKET); XSISendPacket.data = &genericSendPacket; XSISendPacket.resp = XSI::Protocol::TLM::incomplete; /* switch0-2 ポートに出力 */ //m_bridge->AccessPort(m_switch_id[ch], &m_data, sizeof(m_data)); m_bridge->AccessPort(m_switch_id[ch], &XSISendPacket, sizeof(XSISendPacket)); /* コールバック関数の再登録 */ /*(GUI からの Switch 入力をポーリングで読み込む)*/ m_bridge->SetAlarm(DEF_SAMPLING_TIME * 1000 * 1000 * 1000ULL, drive_switch, &m_switch_param[ch], &id); return true; } September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 19 U S E R 5.1 M A N U A L 外部デバイスモデル(DLL)の生成 VisualStudio の DLL 作成プロジェクトを使用します。 作成したファイルをコンパイルし、DLL を作成してください。 20 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 6. FM3 マイコンシミュレータとの接続 FM3 マイコンシミュレータとの接続を定義するために 2 種類の XML ファイルを準備する必要があります。 − 外部デバイス定義ファイル − XSI 接続定義ファイル 6.1 外部デバイス定義ファイルの作成 外部デバイス定義ファイル( xsi_switch_led_shm.xml ) すべての外部デバイスモデルは、対となる外部デバイス定義ファイルを持ちます。 外部デバイス定義ファイルの中では、デバイスが持つ入出力ポートの定義や、デバイスの DLL ファイル情 報を記述します。 記述仕様詳細については、XSI(Crossing Simulator Interface)ユーザマニュアル を参照してください。 Figure 6-1 Switch&LED デバイスモデル用外部デバイス定義ファイル(xsi_switch_led_shm.xml)の記述例 <?xml version="1.0" encoding="utf-8"?> <spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <spirit:vendor>Cypress</spirit:vendor> <spirit:library>XSIDevice</spirit:library> <spirit:name>xsi_switch_led_shm</spirit:name> ベンダ名 <spirit:version>1.0</spirit:version> Library 名 <spirit:model> <spirit:views> モジュール名 <spirit:view> バージョン <spirit:name>module</spirit:name> <spirit:envIdentifier>::slave</spirit:envIdentifier> <spirit:fileSetRef> <spirit:localName>fs-module</spirit:localName> </spirit:fileSetRef> </spirit:view> </spirit:views> <spirit:ports> ポート名および initiative <spirit:port> マイコンへ出力するポートは <spirit:name>switch0</spirit:name> requires 属性を持つ <spirit:transactional> <spirit:service> <spirit:initiative>requires</spirit:initiative> </spirit:service> </spirit:transactional> </spirit:port> 中略 ポート名および initiative <spirit:port> <spirit:name>led0</spirit:name> マイコンからの出力を受ける <spirit:transactional> ポートは provides 属性を持つ <spirit:service> <spirit:initiative>provides</spirit:initiative> </spirit:service> </spirit:transactional> </spirit:port> デバイスモデルの DLL ファイル名 中略 <spirit:fileSets> <spirit:fileSet> <spirit:name>fs-module</spirit:name> <spirit:file> <spirit:name>xsi_switch_led_shm.dll</spirit:name> <spirit:fileType>unknown</spirit:fileType> </spirit:file> </spirit:fileSet> </spirit:fileSets> </spirit:component> September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 21 U S E R 6.2 M A N U A L XSI 接続定義ファイルの作成 XSI 接続定義ファイル(xsi.xml) XSI 接続定義ファイルを利用して、FM3 マイコンシミュレータと外部デバイスモデルの接続設定を行います。 接続を指定するために、接続先(接続元)の FM3 マイコンシミュレータのポート名、接続元(接続先)の 外部デバイスモデルのポート名を記述する必要があります。 接続可能な FM3 マイコンシミュレータのポート名については、FM3 ファミリ 32 ビット・マイクロコント ローラ Virtual Starter Kit 製品版ユーザマニュアル、FM3 マイコンシミュレータインタフェースユーザマ ニュアルを参照してください。 詳細記述方法については、XSI(Crossing Simulator Interface)ユーザマニュアルを参照してください。 Figure 6-2 XSI 接続定義ファイル(xsi.xml)の記述例 <?xml version="1.0" encoding="utf-8"?> <spirit:design xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <spirit:vendor>Cypress</spirit:vendor> <spirit:library>XSI</spirit:library> FM3 マイコンのインスタンスおよび参照 <spirit:name>XSI</spirit:name> <spirit:version>1.0</spirit:version> <spirit:componentInstances> <spirit:componentInstance> <spirit:instanceName>mcu</spirit:instanceName> <spirit:componentRef spirit:vendor="Cypress" spirit:library="XSI" spirit:name="mcu" spirit:version="1.0"/> </spirit:componentInstance> <spirit:componentInstance> <spirit:instanceName>xsi_switch_led_shm</spirit:instanceName> <spirit:componentRef spirit:vendor="Cypress" spirit:library="XSIDevice" spirit:name="xsi_switch_led_shm" spirit:version="1.0"/> </spirit:componentInstance> </spirit:componentInstances> 外部デバイスのインスタンスおよび参照(vendor/library/name/version) <spirit:adHocConnection> <spirit:name>INT0</spirit:name> <spirit:internalPortReference spirit:componentRef="mcu" spirit:portRef="INT0"/> <spirit:internalPortReference spirit:componentRef="xsi_switch_led_shm" spirit:portRef="switch0"/> </spirit:adHocConnection> 中略 接続定義: <spirit:adHocConnection> name 接続名(任意) <spirit:name>P00_out</spirit:name> internalPortReference 接続元ポートの参照(インスタンス名、ポート名) <spirit:internalPortReference spirit:componentRef="mcu" spirit:portRef="P00_out"/> <spirit:internalPortReference spirit:componentRef="xsi_switch_led_shm" spirit:portRef="led0"/> internalPortReference 接続先ポートの参照(インスタンス名、ポート名) </spirit:adHocConnection> 中略 <spirit:vendorExtensions> <componentFile spirit:vendor="Cypress" spirit:library="XSI" spirit:name="mcu" spirit:version="1.0">mcu.xml</componentFile> <componentFile spirit:vendor="Cypress" spirit:library="XSIDevice" spirit:name="xsi_switch_led_shm" spirit:version="1.0">xsi_switch_led_shm.xml</componentFile> </spirit:vendorExtensions> デバイス定義ファイルへの参照: </spirit:design> 対象デバイスの vendor/library/name/version 対象デバイスのデバイス定義ファイル名 22 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 7. シミュレーションの実行 必要なファイルが準備出来たら、シミュレーションを実行できます。 シミュレーションの実行前に、以下のファイルが準備できていることをご確認ください。 − XSI 接続定義ファイル(xsi.xml) − 外部デバイス定義ファイル( xsi_switch_led_shm.xml ) − 外部デバイスモデル DLL(xsi_switch_led_shm.dll) 本書に記載している、FM3 マイコンシミュレータと Switch&LED デバイスモデルの接続環境の場合は、シ ミュレーション実行前に、Switch&LED GUI(ext_swtich_shm.exe)を起動する必要があります。GUI を起動 後、シミュレーションを開始してください。 September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 23 U S E R M A N U A L 8. Appendix 8.1 Switch&LED GUI について 本書で開発対象として説明している Switch&LED デバイスモデルは、操作用の GUI 機能を持ちます。GUI 機能は、GUI プログラム(ext_swtich_shm.exe)として提供されます。 GUI 機能は、GUI の上段に LED 3ch、下段に Switch 3ch を搭載しています。 (Figure 8-1 Switch&LED デバイ スモデルの GUI) 下段の Swtich はマウスによる操作が可能となっており、各 Switch の押下状態が常に Swtich&LED デバイス モデルに通知される仕組みとなっています。 Switch&LED デバイス用のプログラムを実行した場合、Switch からの入力が外部割込みとして FM3 マイ コンシミュレータに通知され、プログラムが Switch に対応する LED を点灯させるために汎用ポート出力に 値を出力します。 汎用ポートからの出力値は、それぞれ対応する LED の ON/OFF として GUI 表示に反映されます。 (Figure 8-2 右 Switch 押下により LED 出力が ON となった場合の表示) Figure 8-1 Switch&LED デバイスモデルの GUI LED 部 スイッチ部 Figure 8-2 右 Switch 押下により LED 出力が ON となった場合の表示 24 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L 9. 主な変更内容 ページ 場所 変更内容 Revision 1.0 - - September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL Initial release 25 U S E R 26 CONFIDENTIAL M A N U A L FM3_MN706-00051-1v0-J, September 15, 2015 U S E R M A N U A L MN706-00051-1v0-J Cypress・Controller Manual FM3 ファミリ 外部デバイスモデル開発手引書 (Switch&LED デバイスモデル) 2015 年 9 月 第 1 版発行 発行:Cypress Semiconductor Corp. 編集:コーポレートコミュニケーション部 September 15, 2015, FM3_MN706-00051-1v0-J CONFIDENTIAL 27 U S E R M A N U A L 免責事項 本資料に記載された製品は、通常の産業用, 一般事務用, パーソナル用, 家庭用などの一般的用途 (ただし、用途の限定はあ りません) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が 確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 (原子力施設における 核反応制御, 航空機自動飛行制御, 航空交通管制, 大量輸送システムにおける運行制御, 生命維持のための医療機器, 兵器シ ステムにおけるミサイル発射制御等をいう) 、ならびに(2) 極めて高い信頼性が要求される用途 (海底中継器, 宇宙衛星等を いう) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また は損害についても、Cypress は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故, 火災事故, 社会的な損害を生じさ せないよう、お客様において、装置の冗長設計, 延焼対策設計, 過電流防止対策設計, 誤動作防止設計などの安全設計をお願 いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制されてい る製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。 商標および注記 このドキュメントは、断りなく変更される場合があります。本資料には Cypress が開発中の Cypress 製品に関する情報が記 載されている場合があります。Cypress は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする権 利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性, 完全性, 実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、また、 明示, 黙示または法定されているあらゆる保証をするものでもありません。Cypress は、このドキュメントに含まれる情報を 使用することにより発生したいかなる損害に対しても責任を一切負いません。 Copyright © 2015 Cypress Semiconductor Corp. All rights reserved. 商標:Cypress, Cypress ロゴ, Spansion®, Spansion ロゴ (図形マーク), MirrorBit®, MirrorBit® Eclipse™, ORNAND™, Easy DesignSim™, Traveo™ 及びこれらの組合せは、米国・日本ほか諸外国における Cypress Semiconductor Corp.の商標です。第三 者の社名・製品名等の記載はここでは情報提供を目的として表記したものであり、各権利者の商標もしくは登録商標となっ ている場合があります。 28 CONFIDENTIAL FM3_MN706-00051-1v0-J, September 15, 2015