主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

嵌入式编码器によって生成されたコードに対するPolyspace解析の実行

嵌入式编码器®またはTargetLink®を使用して仿万博1manbetx真软件®モデルからコードを生成する場合,生成されたコードのバグやランタイムエラーの解析を,仿万博1manbetx真软件環境からPolyspace®を使用して実行できます。Polyspaceプロジェクトを手動で設定する必要はありません。

このトピックでは,コード生成に嵌入式编码器を使用します。TargetLinkで生成したコードの解析については,TargetLinkによって生成されたコードに対するPolyspace解析の実行を参照してください。

特定のモデルを含むチュートリアルは,万博1manbetx仿真软件モデルから生成されたコードに対するPolyspace解析の実行を参照してください。

前提条件

万博1manbetx仿真软件からPolyspaceを実行する前に,PolyspaceインストールとMATLAB®インストールをリンクしなければなりません。MATLABや仿真万博1manbetx软件とのPolyspaceの統合を参照してください。

コードの生成と解析

コード生成の設定とコードの生成

コード生成を設定してモデルからコードを生成するには,“次のいずれか”を行います。

  • [アプリ]タブで(嵌入式编码)を選択します。次に,[Cコード]タブで[クイックスタート]を選択します。画面の指示に従います。

  • [Cコード]タブで[設定]をクリックし,万博1manbetx仿真软件コンフィギュレーションパラメーターでコード生成を設定します。設定する主なパラメーターは,以下のとおりです。

    • タイプ(万博1manbetx模型)(固定ステップ]を選択します。

    • ソルバー(万博1manbetx模型)(自動(ソルバーの自動選択))または[離散(連続状態なし))を選択します。

    • システムターゲットファイル(万博1manbetx仿真软件编码器)ert.tlcまたはautosar.tlcと入力します。ターゲットファイルをert.tlcから派生させる場合,それを指定することもできます。

    • コードからモデルに(嵌入式编码):コードからモデルへのリンクを有効にするには,このオプションを選択します。

    設定するすべてのパラメーターのリストは,Polyspace解析で推奨されるモデルコンフィギュレーションパラメーターを参照してください。

    あるいは,(Polyspace)オブジェクティブを使用してコード生成アドバイザーを実行し,必要なパラメーターが既に設定されているかどうかを確認します。使用代码生成顾问为代码生成目标配置模型(嵌入式编码)を参照してください。

    モデルからコードを生成するには,[Cコード]タブで[コード生成)を選択します。診断ビューアーでコード生成の進行状況を確認できます。

コード解析の設定

[アプリ]タブで[Polyspaceコード検証]を選択します。(Polyspace)タブで,次を行います。

  1. 実行する製品を次から選択します。错误发现者または代码验证

  2. [設定]を選択します。必要に応じて,これらのオプションの既定値を変更します。

    • 検証設定:プロジェクトコンフィギュレーションで指定されている既定のチェックに加え,MISRA®コーディングルールのチェックを有効にします。既定の错误发现者チェックではバグを調査します。既定の代码验证チェックではランタイムエラーを調査します。

    • 入力調整可能なパラメーター,および出力:代码验证解析の精度を上げるために,入力,調整可能なパラメーター,または出力を制約します。

    • 出力フォルダー:結果用に専用のフォルダーを指定します。既定の解析では,検証結果は現在の作業フォルダー内のresults_modelNameフォルダーに保存されます。

    • 検証後に結果を自動的に開く

    設定するすべてのオプションのリストは,万博1manbetx仿真软件でのPolyspace解析を参照してください。

コードの解析

モデルから生成されたコードを解析するには,キャンバスの任意の場所をクリックします。(次のコードの解析]フィールドにモデル名が表示されます。(解析の実行)を選択します。

嵌入式编码器を使用している場合,Polyspaceは(解析の実行)がクリックされたときに生成コードをチェックします。生成コードが存在しない場合,Polyspaceはコード生成プロセスを起動してから,解析を開始します。

現在のモデルが別のモデル内で参照されており,生成されたコードをモデルが参照されているコンテキストにおいて検証する場合は,(最上位モデルとして生成されたコード]の代わりに[モデル参照として生成されたコード]を使用します。後者の場合,生成コードがなくてもPolyspaceはコード生成を自動的に起動しません。[モデル参照として生成されたコード]を解析する場合,Polyspace解析を実行する前にコードを生成してください。

MATLABコマンドウィンドウで解析の進行状況を確認できます。

明示的に無効にしない限り,検証結果が自動的に開きます。既定では,検証結果は現在のフォルダー内のresults_ModelNameフォルダーに保存されます。新しく実行するたびに前の検証結果は上書きされます。既定のフォルダーを変更したり,検証結果を仿万博1manbetx真软件プロジェクトに保存したりすることができます。これらの変更を行うには,(Polyspace)タブで[設定]を選択します。

検証結果を閉じていて,後で開く場合は,(Polyspace)タブで[解析結果]を選択します。最後の実行以前の検証結果を開くには,(以前の結果を開く]を選択して,以前の検証結果を含むフォルダーに移動します。

解析結果のレビュー

コードでの検証結果のレビュー

検証結果はPolyspaceユーザーインターフェイスの(検証結果のリスト]ペインに表示されます。各検証結果をクリックすると,[ソース]ペインにソースコードが表示され,(検証結果の詳細]ペインに詳細が表示されます。参考:

コードからモデルへの移動

コードコメントのリンクには,後続のコード行を生成するブロックが表示されます。モデル内のブロックを確認するには,リンクのブロック名をクリックします。問題が発生した場合は,コードからモデルへの移動のトラブルシューティングを参照してください。

あるいは,変数名を右クリックして[モデルに移動]を選択することもできます。このオプションはすべての変数に対して使用できるわけではありません。万博1manbetx仿真软件ブロックに直接トレースできるのはソースコード変数のサブセットのみです。このような変数では[モデルに移動]オプションを使用できます。生成されたコードで直接模万博1manbetx型ブロックにトレースできる変数の詳細については,跟踪生成代码万博1manbetx中的Simulink模型元素(嵌入式编码)を参照してください。

問題の修正

コードの問題がモデルの設計上の欠陥に関連しているかどうかを調べます。

モデルの設計上の欠陥は,生成されたコードで問題を引き起こす可能性があります。次に例を示します。

  • 生成されたコードでは,特定の範囲のブロックパラメーターにのみ特定のランタイムエラーがない場合があります。この問題を修正するには,そのブロックパラメーターのストレージクラスを変更するか,コンフィギュレーションパラメーター調整可能なパラメーターを使用して,解析にキャリブレーションデータを使用します。

  • 生成されたコードでは,特定の範囲の入力にのみ特定のランタイムエラーがない場合があります。このエラーがない範囲を特定するには,尺寸ブロックの信号の最小値と最大値を指定します。Polyspace解析では,この制約範囲を使用します。ブロックの信号範囲の操作(万博1manbetx模型)を参照してください。

  • Stateflow®チャートの特定の遷移が到達不能である場合があります。

s函数ブロックに手書きのC / c++コードを含める場合,Polyspace解析によって,手書きのコードと生成されたコード間の統合の問題を明らかにすることができます。また,手書きのコードを単独で解析することもできます。s函数コードに対するPolyspace解析の実行を参照してください。

ブロックに注釈を付けることによる問題の正当化

Polyspace検証結果に応じてモデルに変更を行わない場合は,関連するブロックに注釈を付けます。ブロックに注釈を付けたら,そのブロックから生成されるコード操作によって,コメントが入力された検証結果が表示されます。サブシステムブロックまたは関数呼び出しを行うブロックに注釈を付ける場合,そのブロックから生成されたコード操作は,解析結果内のコメントを表示しません。そのブロックがルックアップテーブルであれば,注釈を使用する代わりに存根查找表を有効にします。[ルックアップテーブルのスタブ化)を参照してください。

嵌入式编码器を使用して生成されたコードにはMISRA C®: 2012からの既知の逸脱があります。MISRA C:2012合规性的偏差理由(嵌入式编码)を参照してください。このような既知の問題は,ブロックに注釈を付けることにより正当化します。

万博1manbetx仿真软件ブロックの注釈または生成されたコードの注釈は,解析履歴では考慮されません。モデルをアップデートすると,注釈が変化しなくてもPolyspaceの結果は変化する可能性があります。モデルをアップデートすると,既存の注釈は期限切れになります。モデルまたは生成されたコードをアップデートしたら注釈をチェックしてください。

Polyspaceユーザーインターフェイスでのブロックへの注釈付け

嵌入式编码器を使用してコードを生成すると,仿真软件ブロックに万博1manbetxPolyspaceユーザーインターフェイスで直接注釈を付けることができます。注釈を付ける問題を見つけて,(検証結果の詳細]ペインで[重大度][ステータス],およびオプションのメモを追加することにより,レビュー情報を入力します。たとえば,Polyspaceユーザーインターフェイスで以下を行います。

  • 問題の[ステータス]调查に設定する

  • 問題の[コメント]可能会影响“模块”に設定する

ソースコードで問題を表示している変数を右クリックして,コンテキストメニューから[ブロックへの注釈]を選択します。

レビュー情報は仿万博1manbetx真软件エディターにブロック注釈として引き継がれ,そこでは注釈が付けられたブロックが強調表示されます。

万博1manbetx仿真软件ブロックに複数回注釈を付けることができます。ブロックに後で付けられる注釈は,以前の注釈に付加されます。これらの注釈を仿万博1manbetx真软件エディターで表示することはできません。Polyspaceを使用して生成コードを解析する場合、これらの注釈は Polyspace ユーザー インターフェイスの(検証結果の詳細]ペインでレビュー情報として表示されます。

Polyspaceではユーザー指定の情報を使用して仿真万博1manbetx软件に注釈を事前入力します。Polyspaceユーザーインターフェイスに設定されたコメントは,仿真万博1manbetx软件の[コメント]フィールドに二重引用符で囲んで表示されます。Polyspaceユーザー インターフェイスのコメント内で二重引用符を使用すると、Simulink では単一引用符に置き換えられます。

万博1manbetx仿真软件ブロックにトレースできるコード要素にはオプション[ブロックへの注釈]を使用できます。詳細は,跟踪生成代码万博1manbetx中的Simulink模型元素(嵌入式编码)を参照してください。

万博1manbetxエディターでのブロックへの注釈付け

万博1manbetx仿真软件エディターでブロックに注釈を付けるには,そのブロックを選択して,(Polyspace)タブで[注釈の追加)を選択します。[Polyspaceの注釈]ウィンドウで以下を行います。

  • ドロップダウンメニュー[注釈タイプ]から,注釈を付けるPolyspace検証結果のタイプを選択します。

  • 同じタイプの複数の検証結果に注釈を付ける場合,テキストボックスに検証結果の頭字語のコンマ区切りリストを入力します。詳細は,以下を参照してください。

  • 1つの検証結果のみに注釈を付ける場合,[1つのチェックのみ]を選択します。テキストボックスがドロップダウンメニューに変換されます。ドロップダウンメニューから、注釈を付ける検証結果を選択します。

  • 対応するテキストボックスで,検証結果に割り当てるステータス,重大度,およびコメントを入力します。

[Polyspaceの注釈]ウィンドウでは,一度に1つのタイプのPolyspace検証結果に注釈を付けることができます。複数のタイプの検証結果に注釈を付けるには,[Polyspaceの注釈]ウィンドウを複数回開きます。そのたびに1つのタイプのPolyspace検証結果に対応する注釈を追加します。それぞれの検証結果に,異なる注釈が付けられます。これらの注釈を仿万博1manbetx真软件エディターで表示することはできません。Polyspaceを使用して生成コードを解析する場合、これらの注釈は Polyspace ユーザー インターフェイスの(検証結果の詳細]ペインでレビュー情報として表示されます。

生成されたコードでの操作が,代码验证のオレンジチェックの原因となる場合があります。ある操作がオーバーフローする可能性があるとします。生成されたコードでは,操作の後に飽和させることでオーバーフローを防止します。Polyspaceでは、依然として潜在的なオーバーフローにオレンジ チェックのフラグが付けられます。このようなチェックをコード コメントによって正当化するには、コンフィギュレーション パラメーター操作员注释(嵌入式编码)を指定します。

注釈付きブロックをコピーして別のモデルや同じモデルの別の位置で使用すると,コンテキストが変わるため,誤った注釈が表示される可能性があります。

  • ライブラリや非アトミックサブシステムの内部にあるブロックは多くの異なるコンテキストで再利用されるため,Polyspaceではこれらのブロックに注釈を付けることはできません。たとえば,ライブラリブロック内部のブロックに注釈を付けて,そのライブラリブロックのすべてのインスタンスに対する検証結果を正当化することはできません。

  • 万博1manbetx仿真软件では,別のモデルや同じモデルの別の位置にコピーされたブロックに含まれているPolyspaceの注釈は保持されません。

関連するトピック