2

一般的に質問があります。マイクロコントローラーでエラーをログに記録しています。しかし、マイクロコントローラーのリソースは、たとえばWindowsコンピューターよりも限られています。私の場合、FreeRTOSによって管理されている64個のエラーコードをキューに保存します。リソースが限られているため、64を選択しました。

私の質問は、このキューがいっぱいになったときにどうすればよいですか?

USB経由でmirocontrollerに接続されたクライアントは、これらのエラーコードを読み取る責任があり、キューからそれらを削除します。ただし、クライアントがこれに失敗すると、64個のエラーコードの後でキューがいっぱいになります。

キューから最も古いエラーを削除して、最新のエラーに置き換える必要がありますか?または、キューがいっぱいである限り、未読のエラーコードを保存して、新しいエラーコードを破棄する必要がありますか?

あなたの意見とその理由を教えてください。

事前のアドバイスありがとうございます。

4

3 に答える 3

3

他のサイズに対して64について心配する必要はありません。サイズに関係なく、ホストがキューを読み取らないことを決定する可能性があるため、この決定を行う必要があります。

正しい方法は、システムの動作とログに記録しているエラーの種類によって異なります。

最初にログに記録しておくことの利点: 1つの問題が発生すると、他の多くの障害につながるシステムがある場合、最初のエラーがあると、エラーチェーンが発生した原因を特定するのに役立ちます。

最初にログに記録することの弱点:ホストがエラーを読み取ることを決定した時期に応じて、コードは1分前または1週間前になる可能性があり、誰も知りません。イアンの回答が指摘しているように、ホストがエラーを失ったことを知っている場合は、エラーの数をホストに提供することができます。

最後にログに記録しておくことの利点: エラー間に多くの独立性がある場合、最も古いものはおそらくそれほど重要ではなく、最新のものだけを持っていると、デバイスの現在の状態の良い画像が得られます。

最後にログに記録することの弱点: 最初に記録することの利点の逆。すべてのエラーの根本原因を失う可能性があります。

そのため、デバイスで発生する可能性のあるエラーの種類を調べて、ユーザーにとって最も役立つと思われる手法を決定する必要があります。

于 2012-10-12T13:54:00.950 に答える
2

キュー内の最も古いエラーを破棄します。さらに、追加のエラーコードをキューに入れて、クライアントが最初に読み取ったエラーコードが、1つ以上のエラーが破棄されたことを示すようにします。エラーを報告する方法によっては、システムがドロップされたエラーレポートの数を報告することができます。

于 2012-10-12T13:07:12.350 に答える
2

私も最も古いものを破棄しますが、有用な診断を保存する他の方法を検討します。私たちのシステムでは、16個のタイムスタンプ付きエラーコードを保存します。これらのエラーコードは、新しいエラーコードが表示されると上書きされます。

ただし、いくつかのイベントカウンター(「合計エラー」または「破棄されたエラー」など)も保存します。これらは、多くのスペースを占有することなく有用な情報を提供できるためです。1バイトはオーバーフローする前に255エラー/イベントをカウントできます。

ログに記録する方がよいもの(EG特定の障害タイプ)とカウントする方がよいもの(EGの再起動、ログインの失敗、パケットのドロップ)があります。

于 2012-10-12T15:12:53.837 に答える