プロセッサの温度を読み取るi2c温度モジュールを持つデバイスがあります。 i2cから温度値を読み取り、それをユーザーに提示します。このprintf
は、i2cプロセスとまったく関係のない機能の中にあります。私たちは、I2Cから読み取るこのprintf
値の終わりから1感嘆符を削除すると、今I2Cモジュールの値の読み取りと干渉するPrintf
endProcessFunction(int dummy){
printf("App_host: Error Handler Started!!");
App_sendEvent(APP_CMD_ERROR_COND);
sleep(1);
sendIpcMsg(some_signal,2,some_thread);
appEndState = 1;
syncRunning = 0;
distRecRunning = 0;
sem_post(&distRecSem);
App_sendEvent(APP_CMD_APPHOST_FAIL);
}
正常です(摂氏35度前後)が、我々はコンパイルした場合に2感嘆符で実行します。これは、関数であります、i2cは常にFFFF(16ビット整数の最大値)を読み込みます。私は何が起こっているのかわからないが、我々が試した
、
- は
string
の終わりまでに"\n"
を置く他の機能(疑いのヒープサイズの問題) - からいくつかの
printf
の呼び出しを無効にしますそれは我々が機能しないだろうと思ったと
printf
コールを動かすように)なかった
この関数は、他のスレッドが入っている無限ループを停止し、その後にメインスレッドを終了させます。それで、プログラムが回復できない問題に遭遇したときだけ、これが呼び出されます。この関数が呼び出された場合は、とにかくi2cからの値の読み取りを見ることができません。
また、私たちは技術的にこの問題に遭遇することはありませんが、これは修正ではありません。ハックジョブです。だから私は実際の解決策を探しています。
これはまだヒープサイズの問題(プログラム内で他のprintf呼び出しを削除したとしても)ですか?もっと長い文字列サイズでこの作業をしようとする可能性のあるものは何ですか?
これは意味がありますが、決して(プログラムがシャットダウンしているときを除いて) 'printf()'関数は使用されません。したがって、実際にプログラムに遅延が導入されるべきではありません。 –