RX63Nマイコン sprintf関数の振る舞いがおかしい

皆様こんにちは。

sprintf関数の振る舞いで、プログラムを動作しているとバグ?が発生し

質問させて頂きました。現在の環境は以下の通りとなります。

開発環境:HEW4

コンパイラ:RXファミリ用C/C++コンパイラ

使用している言語:C/C++

使用しているマイコン:AP-RX63N-0A

 

用途としましては、char型配列に(1024byte)に半角文字列(数値もありますので書式付フォーマット使用)を挿入して

データを送信する仕様であります。

動作していくとある回数(不定)でchar型配列に["ABC:%4d volt"]のように配列が入り、数値が入らず書式付フォーマットの%dが

そのまま配列に入るようになりました。マイコンをリセットしないとバグは解決しませんでした。

バッファは十分余裕があり、オーバーランはしていないようです。

原因が分からなかったため、質問させて頂きました。

以上宜しくお願い致します。

Parents
  • 最近の CC-RX の更新情報を見てみると

    tool-support.renesas.com/.../CC-RX_List.html
    > V2.02.00 → V2.03.00 への変更点 (2015/2/5)

    > 2. 標準ライブラリのリエントラント化対応 [C標準ライブラリ(ライブラリジェネレータ)]
    > ライブラリジェネレータ(lbgrx)に-reentオプションの指定により、リエントラント化されたC標準ライブラリを
    > 作成できるようにしました。生成されたC標準ライブラリに、3つの低水準関数をお客様にて 作成いただくことで、
    > rand/srand関数を除くC言語標準ライブラリ関数をリエントラント化することができます。

    とありますが、HEW で使用しているであろうもっと古い版の CC-RX でのライブラリはリエントラントにはなってないと思われます。割り込み中で sprintf() を使用されるのであればその点注意が必要です。

Reply
  • 最近の CC-RX の更新情報を見てみると

    tool-support.renesas.com/.../CC-RX_List.html
    > V2.02.00 → V2.03.00 への変更点 (2015/2/5)

    > 2. 標準ライブラリのリエントラント化対応 [C標準ライブラリ(ライブラリジェネレータ)]
    > ライブラリジェネレータ(lbgrx)に-reentオプションの指定により、リエントラント化されたC標準ライブラリを
    > 作成できるようにしました。生成されたC標準ライブラリに、3つの低水準関数をお客様にて 作成いただくことで、
    > rand/srand関数を除くC言語標準ライブラリ関数をリエントラント化することができます。

    とありますが、HEW で使用しているであろうもっと古い版の CC-RX でのライブラリはリエントラントにはなってないと思われます。割り込み中で sprintf() を使用されるのであればその点注意が必要です。

Children
No Data