5

ビデオやシリアル ポートのない小さな組み込みシステムがあります (つまり、printf 経由でテキストを出力することはできません)。
初期化シーケンスを通じてコードの進行状況を追跡したいと思います。
これを支援するために私たちができる簡単なことはありますか?
OS は実行されておらず、ハードウェア プラットフォームはある程度カスタマイズ可能です。

4

8 に答える 8

10

最も単純でスケーラブルなソリューションは、状態 LED です。アクションに基づいて LED を切り替えます。バイナリ形式で、または焦点を絞ることができる場合は特定のアクションが発生したときに行います。

最も強力なのは、ハードウェア JTAG デバイスです。ブレークポイントを設定する必要さえありません。単にアプリケーションを停止して、メモリの状態を調べるだけで十分です。一部のハードウェア プラットフォームは、メモリ ウォッチやハードウェア ブレークポイントなどの「高度な」オプションをサポートしていないことに注意してください。前者は通常、プロセッサを常に停止してメモリを読み取る (10MHz システムを 1kHz システムに変える) ことで回避されますが、後者はコード置換 (ターゲット命令を別のジャンプで置き換える) を使用して実行されることがあり、他の問題が隠されることがあります。 . これらの問題と、それらが適用される組み込みプロセッサに注意してください。

于 2008-09-16T04:59:27.850 に答える
5

デバッグを支援するために採用できる戦略がいくつかあります。

出力ピンを使用できる場合は、それらを LED (またはオシロスコープ) に接続し、出力ピンをハイ/ローに切り替えて、コード内の特定のポイントに到達したことを示すことができます。
たとえば、1 回の点滅はプログラムのロード、2 回の点滅は foozbar の初期化、3 回の点滅は入力の受け入れなどです。

複数の出力ラインを利用できる場合は、7 セグメント LED を使用して、より多くの情報 (点滅の代わりに数字/文字) を伝えることができます。

メモリを読み取る機能があり、利用可能な RAM がある場合は、sprint 関数を使用して printf のようなデバッグを行うことができますが、画面/シリアル ポートに移動する代わりに、メモリに書き込まれます。

于 2008-09-16T04:55:39.263 に答える
2

システムのIOピンからのビットバンギングを使用して、シリアル通信(UART)を簡単にエミュレートできます。カードのピンの1つに接続し、そこでRS232コンバーターに接続します(TTLからRS232コンバーターは、購入または構築が簡単です)。これは、PCのシリアルポートに接続されます。

于 2008-09-17T16:14:07.020 に答える
2

これは、実行しようとしているデバッグの種類によって異なります。特に、一時的なトレース方法を使用している場合や、アプリケーションの存続期間中のステータスの表示として使用できるツールを提供しようとしている場合は特にそうです。プロジェクト (または製品)。

1 回限り、詳細なソース トレースとインサーキット デバッガー (jtag など) のデバッグが非常に役立ちます。ただし、デバッグでブレークポイントを設定し、メモリとレジスタを調査する必要がある場合に最も役立ちます。これは、時間が重要な問題を処理する場合にはほとんど役に立ちません。

システムの実行に大きな影響を与えずにプログラムの状態を判断する必要がある場合は、予備の I/O ピンに接続された LED を使用すると便利です。これらは、デジタル ストレージ オシロスコープ (DSO) またはロジック アナライザへの入力としても使用できます。この手法は、DSO で識別可能な固有のパルス パターンを選択することで、より強力にすることができます。

ただし、より用途の広いデバッグ ツールを使用するには、シリアル ポートが適しています。コストと PCB スペースを節約するには、RS232 コンバータを含むプラグイン モジュールを使用すると便利です。

If you are trying to provide a longer term indication of status as part of the normal operation of your product, LEDs are again a cheap an simple method. However in this situation it is best to choose patterns of pulses that are slow enough to be easily identified by visual inspection. This will all you over time you will learn a particular pattern that represents "normal" behavior.

于 2008-09-16T10:56:05.607 に答える
0

他の人は出力ピンを使用してかなり良いアイデアを提案しているので、それは非常に良い解決策であり、非常に費用対効果が高いですが、私はそれを提案しません。予算とターゲットプロセッサがそれをサポートしている場合、ハードウェアトレースシステム(昔ながらのエミュレーター、またはバススヌーピングトレースをサポートする豪華なBDM)は、このタイプのものに最適です。しかし、それは非常に高価です。

于 2008-09-16T18:58:29.113 に答える
0

JTAG デバッガーもオプションですが、セットアップは面倒です。

于 2008-09-16T04:58:28.650 に答える
0

JTAG を持っていない場合、他の人が提案した LED は素晴らしいアイデアですが、問題を追跡するためにテスト/再構築サイクルに陥る傾向があります。

もっと時間があり、ハードウェア ピンに余裕があり、メモリに余裕がある場合は、低速シリアル インターフェイスをいつでもビットバッシングできます。私は過去にそれがかなり便利であることを発見しました。

于 2008-09-16T09:20:13.200 に答える