Q. Cコード生成時に main_loop_subsystem() 関数が生成されず、コンパイルエラーが発生してしまいます。
コンパイルを通すためには、どのような対処方法がありますか?
A. この現象は、main_loop_subsystem() に相当するモデルの内容が空である場合などに、コード生成の対象から外れてしまうことが原因です。以下のいずれかの方法で対処できます。
【対処法1】
main_loop_subsystem() に"ExportedGlobal"属性の信号として扱われる信号を通す構成を追加する
Simulinkでは、処理のないサブシステムは最適化により関数が生成されないことがあります。
この対策として、Inportで"ExportedGlobal"属性の信号として指定された信号を受け取り、そのままOutportから出力するだけの構成でも、最適化の対象外となり、関数が生成されるようになります。
この方法はブロックの追加を最小限に抑えつつ、確実にCコードを生成させることができます。
【対処法2】
Cコード側で main_loop_subsystem() の呼び出しを無効化する
Simulinkモデルで main_loop_subsystem() を使用しない場合は、Cコード側での呼び出しをコメントアウトすることで、未定義関数の参照によるエラーを回避できます。
該当箇所は以下の通りです:
platform フォルダ → PE_Expert4_platform.c → MW_main() 関数内
いずれの方法を選ぶかは、開発段階での目的や状況に応じてご判断ください。