FreeMasterドライバには、TSA(Target Side Addressing)と呼ばれる 機能があり、組み込みアプリケーションのソースコードでデータ型と変数を直接記述し、この情報をFreeMASTERツールで使用して、FreeMaster で表示したい変数を記述し、ボードからFreeMasterソフトウェアに情報を自動的に利用できるようにするメカニズムがあります。
TSAを使用すると、 FreeMasterアプリケーションがアプリケーションの変数を見るために通常必要とするシンボルファイル(組み込みアプリケーションのすべての変数の説明を含むファイル(変数の名前、アドレス、およびサイズ) を必要とせずに 、変数のアドレスを利用可能にします 。TSA メカニズムのおかげで、組み込みアプリケーションでファイルを記述したり、ファイルを 16 進数の値にマッピングしたり、それらの値を含む変数を作成したりすることもできます。これとシンボルファイルの必要性の排除を組み合わせることで、組み込みアプリケーションにFreeMasterプロジェクトを挿入し、ボードにプラグアンドプレイ機能を与えることができます。
TSAなし
TSAと
メモリマップドファイルのようなユーザーリソースには特別なタイプがあり、これにより、組み込みアプリケーションからFreeMasterソフトウェアでFreeMasterプロジェクトファイルを利用できるようにし、プロジェクトにFreeMasterとのプラグアンドプレイ機能を提供できます。
この例では、FreeMasterプロジェクトファイル(.pmpまたは.pmpx)を変換しますメモリマップドファイルに、そのファイルを組み込みアプリケーションに追加し、新しいメモリマップドファイルを記述するファイルやその他のタイプのアクティブコンテンツ用の新しいTSAテーブルを作成し、最後にFreeMasterに接続して、ボードからプロジェクトを自動的に実行します。
この例に従うには、FreeMaster プロジェクト (.pmp または .pmpx) が必要であることに注意してくださいまた、プロジェクトに接続するための FreeMaster ドライバーが既にある組み込みアプリケーションの場合は、FreeMaster プロジェクトの作成とそれを実行するためのボードの構成の詳細については、「 FreeMaster を使用してインターフェイスを実装する方法」を参照してください。このドキュメントでは、 FreeMasterを使用してインターフェイスを実装する方法の例を拡張し、FreeMasterプロジェクトも使用したり、FreeMasterプロジェクトを使用したりすることもできます(このドキュメントのサンプルコードは、他の例の投稿に基づいていることに注意してください)。
ハードウェアのセットアップ:
使用ボード:FRDM-K64F
SDK: SDK_2.x_FRDM-K64F Version 2.8.2 (最新バージョン)
ソフトウェアのセットアップ:
メインアプリケーション(組み込みアプリケーションとFreeMaster構成)開発:MCUXpresso IDE v11.2.0
FreeMasterデスクトップアプリケーションバージョン:FreeMaster 3.0.2.6
まず、プロジェクトファイル(.pmpx)をCヘッダーファイルのデータブロックに変換する必要がありますが、必要なのはプロジェクトファイルを16進数で表現し、それを変数として保存して、FreeMasterが後でTSAメカニズムを使用してメモリマップファイルとしてアクセスできるようにすることです。
これを行うには、bin2hアプリケーションを使用することができます、我々はbin2hでそれを行う方法を説明するつもりですが、あなたはあなたの処分で他の方法を自由に使用することができます。bin2hをダウンロードするには、 次の http://www.deadnode.org/sw/bin2h/ にアクセスしてください。
bin2hプログラムはコマンドラインユーティリティであるため、使用するには任意のコマンドラインインタープリターを開く必要があります(この例では、Windowsコマンドプロンプトを使用します)。コマンドラインインタプリタを開き、bin2hプログラムをダウンロードした方向に移動します(Path環境変数に追加して、どこからでもbin2hにアクセスできるようにすることもできます。https://www.java.com/en/download/help/path.xml)からそれがどのように行われるかを確認できます)。
ここで、bin2h を使用する構文は次のとおりです。
bin2h -flags variable_name< input file > 出力ファイル
入力ファイルはFreeMasterプロジェクトファイルであり、出力ファイルは生成されるCヘッダーファイルの名前であり、変数名はプロジェクトファイルを表す16進数の配列の名前になります(任意の名前にすることができます)。-c フラグを追加して、配列のサイズを持つ変数をアプリケーションに含めるように指示します。
したがって、コマンドラインでは次のように記述します。
これにより、data_example.h が生成されます。example という名前の文字配列を含むファイル:
data_example.h含む:
ファイルの最後に、配列のサイズ (バイト単位) を持つ別の変数:
data_example.h を作成した後ファイルの場合、組み込みアプリケーションのMCUXpressoプロジェクトのソースフォルダに渡す必要があります(このドキュメントでは、https://community.nxp.com/docs/DOC-347236 のプロジェクト例を使用していることを忘れないでください)。
それをコードに実装する
TSAは、FreeMasterと共有したい情報とデータを説明するためにテーブルを使用します。FreeMaster プロジェクトのメモリ マップ ファイル (data_example.h ) の説明を含む新しいテーブルを作成する必要がありますファイル)。
アプリケーションのcファイルに、以下を追加します。
/* We include data_example.h in our code */
#include "data_example.h"
FMSTR_TSA_TABLE_BEGIN(files_and_links)
FMSTR_TSA_MEMFILE("/example.pmpx", example, example_size)
/* projects to be made available in FreeMASTER */
FMSTR_TSA_PROJECT("FreeMASTER Project (embedded in device)", "/example.pmpx")
FMSTR_TSA_TABLE_END();
この例では、テーブルの内容を説明するためにテーブルに files_links という名前を付けましたが、任意の名前にすることができます。FMSTR_TSA_MEMFILEを使用して、ファイルがメモリマップされている変数を示し、引数として、FreeMasterアプリケーションを実行しているときにプロジェクトファイルを参照する名前を取ります(FreeMasterがプロジェクトファイルであることを確認するためにpmpまたはpmpxで終わる必要があります)、メモリマップされたファイルを含む変数、およびその変数のサイズ。
FreeMasterアプリケーションからFreeMasterプロジェクトへのアクセスを容易にするFMSTR_TSA_PROJECT、FreeMasterのウェルカムページからプロジェクトへのハイパーリンクを作成し、ハイパーリンクのテキストとプロジェクトファイルの名前(FMSTR_TSA_MEMFILEで設定したもの)を示す必要があります。ウェルカムページでは次のようになります。
テーブルを作成したら、テーブルリストにテーブルを追加する必要があります(この例では、変数用の別のテーブルがすでにあります)。
FMSTR_TSA_TABLE_LIST_BEGIN()
FMSTR_TSA_TABLE(first_table)
FMSTR_TSA_TABLE(files_and_links)
FMSTR_TSA_TABLE_LIST_END();
メモリマップドファイルに対する TSA の使用を示すために、投稿の例を拡張しています FreeMasterを使用してインターフェースを実装する方法FreeMasterを使用してインターフェースを実装する方法 この例では、変数を共有するための TSA テーブルがすでに存在しています。
コードは次のようになります。
float sin_value = 0;
float angle_step = 0.0001;
FMSTR_TSA_TABLE_BEGIN(first_table)
FMSTR_TSA_RW_VAR(sin_value, FMSTR_TSA_FLOAT)
FMSTR_TSA_RW_VAR(angle_step, FMSTR_TSA_FLOAT)
FMSTR_TSA_TABLE_END();
FMSTR_TSA_TABLE_BEGIN(files_and_links)
FMSTR_TSA_MEMFILE("/example.pmpx", example, sizeof(example))
/* projects to be made available in FreeMASTER */
FMSTR_TSA_PROJECT("FreeMASTER Compare Project (embedded in device)", "/example.pmpx")
FMSTR_TSA_TABLE_END();
FMSTR_TSA_TABLE_LIST_BEGIN()
FMSTR_TSA_TABLE(first_table)
FMSTR_TSA_TABLE(files_and_links)
FMSTR_TSA_TABLE_LIST_END();
//The rest of our application
int main(void) {
これが完了すると、コードをコンパイルし、ボードのフラッシュをプログラムして、最終的にボードからFreeMasterプロジェクトを実行できます。
プロジェクトの実行
次に、組み込みアプリケーションからプロジェクトを実行し、最初にFreeMasterソフトウェアを開き、接続ウィザードを使用してボードに接続しましょう。
「オンボードUSBポートへの直接接続を使用する」オプションを使用して、以下を選択します。
その後、ウェルカムページでは、ウェルカムページの「ボードを探索する」セクションの下に新しいボックスボタンが表示されます。
ボタンをクリックするとプロジェクトが開き、オシロスコープや変数グリッドの構成などのFreeMasterツールがFreeMasterメモリマップファイルからインポートされたことがわかります。FreeMaster プロジェクトは、作成時と同じように見えるはずです。
TSA機能を使用して、FreeMasterにプラグアンドプレイ機能を提供し、プロジェクトファイルをそのコンピューターに渡すことなく、FreeMasterを使用して任意のコンピューターでプロジェクトを実行できるようになりました。また、TSAテーブルでは、仮想ディレクトリ、Web URLハイパーリンク、EEPROMファイル、SDカードファイルなどの組み込みアプリケーションユーザーリソースを共有することもでき、アプリケーションで共有およびデモンストレーションできる内容の可能性が広がります。