1

Simulink (Embedded Coder) ターゲットと、そのターゲット用のいくつかの関数ドライバーを作成しています。メイン テンプレート ファイル (TLC) にヘッダー ファイルをインクルードし、モデルに少なくとも 1 つのドライバー ブロックが存在する場合は初期化関数を呼び出す必要があります。

たとえば、モデルで IO sfunction ドライバー ブロックを使用する場合、rpp_srmain.tlc(テンプレート ファイルの名前) に次のようなものが必要です。

%<LibSetSourceFileSection(cFile, "Includes", tmpBuf)>
%openfile tmpBuf
%<IfBlockPresentInModel("gio")>
#include "gio.h"
%<EndIf>
%closefile tmpBuf
(...)
%<LibSetSourceFileSection(cFile, "Declarations", tmpBuf)>
%openfile tmpBuf
void main(void)
{
    %<IfBlockPresentInModel("gio")>
    gioInit();
    %<EndIf>
    (...)
}

これを達成する方法についてのヘルプは大歓迎です。

4

1 に答える 1

0

"gio" IO ドライバー ブロックがインライン S-Functionであると仮定すると(これは通常、Simulink/Embedded Coder を使用している場合に当てはまります)、メイン TLC の代わりにブロックの TLC にブロック固有のコードを含めることができます。

たとえば、次のようになります。

%implements "gio" "C"

%function BlockTypeSetup(block, system) Output

  %% include header files
  %openfile buffer
  #include "gio.h"
  %closefile buffer
  %<LibCacheIncludes(buffer)>

%endfunction


%function Start(block,system) Output
{
    gioInit();
}
%endfunction
于 2013-06-21T07:07:18.433 に答える