3. 6. 1 アプリケーションはどのように変更したらいいのですか
C言語で記述された組込ソフトウェアに関しては バジェット追加プログラムを実行することで自動変換することが できます。 そのため、人手で変更の必要はありません。
バジェット追加プログラムに関してはマニュアルが用意されています。 利用方法の詳細は文献[11]を参照して下さい。
C言語で記述された組込ソフトウェアに関しては バジェット追加プログラムを実行することで自動変換することが できます。 そのため、人手で変更の必要はありません。
バジェット追加プログラムに関してはマニュアルが用意されています。 利用方法の詳細は文献[11]を参照して下さい。
高速協調検証システムで検証する 組込ソフトウェアをC++で記述した場合はどうなるのかという質問を想定します。 残念ながら、 現在のバージョンではC++のクロスコンパイラの準備などが できていないため、C++は使えません。 ただし、 基本的な技術は適用可能です。 そのため、バジェット追加プログラムに追加開発をすれば可能となります。
「バジェット追加ツール for ARM (評価版)使用手引書」の 「付録2 制限事項・変換時変形要素一覧」に 詳しい制約事項が記述されています。
バジェット追加ツールの入力となるCソースコードの制限事項を表1に示します。
表1 Cソースコードの制限事項
| 制限事項 | 説明 |
|---|---|
| Cソースコードの一般的な制限事項 | 「Cソースコードが、ANSI-C準拠であり、かつ、表3に示すクロスコンパイラでコンパイル可能である」という条件が満たされない場合は、エラーになります。 |
| 旧形式の関数宣言・関数定義が含まれているCソースコードは、バジェット追加ツールのサポート対象外であり、エラーになります。 | |
| 旧形式の関数ポインタ型宣言が含まれているCソースコードは、バジェット追加ツールのサポート対象外であり、エラーになります。 | |
| 入力Cソースコード内の初期化されていないグローバル変数で、本ツールが0値初期化コードを追加できないもの(配列変数や構造体変数など)がある場合は、出力結果を保証しません(警告を表示します)。 | |
| struct/ union/ enum/typedefの取扱い | 異なるCソースコード間で、同一名で、異なる定義をしている場合は、出力結果を保証しません。 |
表2 変換時の変形要素
| 文法要素 | 説明 |
|---|---|
| 関数ポインタ変数 | 関数ポインタ変数を用いたコードは、関数ポインタを用いないコードに変形されます。(詳細は、2.10 を参照してください。) |
| static変数・関数の取扱い | Cソースコード内のstatic宣言された変数・関数の識別子は、SystemCソースコードにおいて、元の識別子に次の接頭辞を付加したものになります。接頭辞:”STATIC_FILE_”+ファイル名(ピリオドは_に置換)+”_” |
| 特定の予約語の取扱い | Cソースコード内の識別子が、表5に示す予約語のいずれかである場合は、SystemCソースコードにおいて、元の識別子に次の接尾辞を付加したものになります。接尾辞:”_SC_ID_” |
| main関数 | 入力Cソースコード内のmain関数に引数が指定されている場合、この引数はモジュールのメンバ変数として変換されます。そして、これらのメンバ変数に値を設定するメンバ関数_setArgsが別途定義されます。 |
| また、入力Cソースコード内のmain関数の返り値のデータ型がvoid型以外の場合は、モジュール内に返り値型メンバ変数_retValを生成し、その変数への代入式に変換されます。 | |
| 「return式;」文は「{_retVal=式;return;}」文に変換されます。そして、この返り値を取り出すメンバ関数_getValが別途定義されます。 | |
| 下に挙げた図も参照してください。 |


表3 使用可能なクロスコンパイラ
| クロスコンパイラ | arm-elf-gcc(Cygwin上で動作、gcc version3.3.2 (cygwin special)) |
| コンパイルオプション | -O2 |
表5 識別子置換の対象となる予約語
| alias | and | and_eq | asm | |
| behavior | bit | bitand | bitor | |
| catch | class | compl | const_cast | channel |
| delete | dynamic_cast | |||
| explicit | export | |||
| falling | fsm | fsmd | friend | |
| inline | implements | import | in | inout |
| interface | interrupt | |||
| mutable | ||||
| namespace | not | new | not_eq | notify |
| notifyone | ||||
| out | ||||
| par | pipe | |||
| range | rising | |||
| signal | ||||
| this | ||||
| timing | trap | |||
| wait | waitfor |
高速協調検証システムで、C言語で記述された組込アプリケーション と、RTOS、ハードウェアモデルの検証システムです。 このため、 Java Virtual Machineの実装がC言語で行われ、ソースコードが あれば、組込Javaの開発にも利用できると思われます。 実際に実証実験は行っておりません。
プロセッサの拡張命令セットでJavaのバイトコードを直接 実行している場合には、対応できていません。