無線電子工学および電気工学の百科事典 ROMエミュレータを使用したマイクロコントローラのデバッグ。 無線エレクトロニクスと電気工学の百科事典 無線電子工学と電気工学の百科事典 / マイクロコントローラー マイクロプロセッサを含む電子デバイスの動作プログラムの開発とデバッグの複雑さによって、その開発全体のコストが決まることがよくあります。メモリと一部の周辺デバイスを統合するマイクロコントローラー (MCU) では、これが特に顕著です。デバッグを大幅に容易にするツールの 1 つは、[XNUMX] で説明されている ROM エミュレータです。この記事では、それを操作するためのテクノロジについて説明します。デバッグ機能は、ここで説明した手法に限定されません。このプロセスは、一般的なデザインと同様、ある程度の芸術です。誰もが同じ楽器で「自分の音楽」を作成します。 MK プログラムをデバッグするための独自のツールと方法を共有してくださった読者に感謝します。 MK ソフトウェアのデバッグ プロセスの複雑さと労力は、次の要因によって決まります [2]。
従来のテスト機器 (オシロスコープなど) は、MCU のデバッグには限られた範囲でしか使用できません。 最も単純な (そして同時に最も非効率的な) デバッグ方法は、「トライアル アンド エラー法」です。つまり、プログラムを再プログラム可能な読み取り専用メモリ デバイス (RPM) にロードし、実行を試み、システム内のエラーを検出して修正します。 d. EEPROM チップへのデータの消去と書き込みのプロセスには時間がかかり、一定回数の再プログラミング サイクルの後、完全に失敗します。マイクロ回路の取り付けと取り外しを繰り返すと、ROM ソケットの電気接点の信頼性が低下します。システムに関するデバッグ情報を取得する可能性は事実上ありません。 現在、マイクロコントローラーはパーソナル コンピューターをベースとしたクロスツールを使用してデバッグされることがほとんどです。これにより、MK リソースへの影響を最小限に抑えることができます。図に示すように、デバッグ対象のデバイスは、ROM エミュレータなどの何らかのツールを介してコンピュータに接続されます。このような複合体を使用すると、プログラムをダウンロードして編集したり、テストモジュールをプログラムに入力したり、システムに関する特定の情報を取得したりすることができます。これについては以下で説明します。 ROM エミュレータは唯一または最も強力なデバッグ ツールではありませんが、依然として人気があります。それらの「長寿命」は、MK のタイプからの独立性 (外部プログラム メモリを操作する機能のみが必要)、リアルタイム動作、低価格、および幅広い機器開発者やアマチュア無線家にとってのアクセスのしやすさによって説明されます。 MCS-51ファミリーマイコン(8031、8051、80C31、80C51、KR1816BE31、KR1816BE51、KR1830BE31、KR1830BE51など)を例に、ROMエミュレータを使用したプログラムデバッグ技術を考えてみましょう。 デバッグを開始するときは、システムのハードウェアと MK 自体の機能を確認する必要があります。これを行うには、「無料アカウント」テストを使用できます [3]。これは、MK ポートの行で考えられるすべてのコードの組み合わせを検索することで構成されます。テスト中はポート線が出力状態に設定されますので、まずデバッグ対象デバイスの回路図から他の素子の出力に負荷がかかっていないか確認してください。そのような負荷が存在する場合は、一時的に切断します。 MK プログラムのアドレス空間全体に「ノーオペレーション」(NOP) コマンド コードを使用して ROM エミュレータをロードします。 MCS-51 の場合、これはコード 00Н です。このような「プログラム」を実行するとき、マイクロコントローラーはすべてのプログラム メモリ アドレスを順番に検索します。オシロスコープでALE、PME、ポートP0、P2の信号を確認します。ポート ライン上のオシログラムは、アドレスの下位バイトと P0 上のデータの多重化を考慮して、バイナリカウンタのタイミング図に対応する必要があります。 次に、表 1 に示すテスト プログラムを ROM エミュレータにロードして、ポート P1 と R00 をチェックします。 0. 指定されたポートのラインに XNUMXH から XNUMXFFH までの一連のコードを出力し、XNUMX ビット バイナリカウンタをシミュレートします。オシログラムが必要なオシログラムに一致する場合は、ポートから切断された負荷を復元し、MK の動作プログラムのデバッグに進みます。システムのソフトウェア部分とハードウェア部分の両方をデバッグしていることを忘れずに、オシロスコープを使用してテスト ポイントの信号を定期的に監視することを忘れないでください。信号の種類とそれに関するあなたの考えとの間に矛盾がある場合、深刻な反省と追加のチェックが必要になります。 開発とデバッグを容易にするために、プログラミングのモジュール原則に従う必要があります。つまり、MK プログラムを機能に応じて複数の部分に分割します。これにより、個々のモジュールを簡単に移動し、必要に応じて他のプロジェクトで使用できるようになります。電源投入または MK リセット後に制御が移るモジュールをメインまたはメインモジュールと呼びます。戻りアドレスでスタックが乱雑にならないように、サブルーチン呼び出しではなくジャンプ コマンドを使用して制御をプログラム エントリ ポイントに転送する必要があります。 予期しないプログラム結果を避けるために、初めて使用する前に、各変数に必ず初期値を割り当ててください。場合によっては、周辺機器の初期化が必要になる場合があります。初期化ブロックはメイン プログラム モジュールの先頭に配置されます。 デバッグ開始時のメイン ソフトウェア モジュールの概略図を表に示します。 2. これには、プログラムへのエントリ ポイントと終了ハンドラーのみが含まれます。このような出力がマイクロコントローラー システムで使用されることはほとんどありませんが、緊急事態を正しく完了するには提供する必要があります。検討中の例では、作業の完了後にプログラムが「ループ」します。この状態から抜け出すには、ハードウェア リセット信号でシステムを再起動する必要があります。 デバッグ中、他のソフトウェア モジュールは準備が整うとメイン モジュールに追加されます。接続してデバッグする順序は重要な役割を果たします。情報出力デバイス (ディスプレイ、デジタル/アナログ コンバーターなど) のドライバーから開始し、その呼び出しをメイン モジュールに配置する必要があります。次に、残りの周辺機器のドライバーとデータ処理ルーチンがデバッグされ、その後ですべてのソフトウェア モジュールの共同動作がチェックされます。英数字ディスプレイがある場合、そのドライバーが最初にデバッグされ、後でデバッグ情報 (MK の内部データ メモリの内容など) を表示するために使用されます。 ROM エミュレータが、それに含まれる情報を制御コンピュータとデバッグ対象デバイスの両方で読み書きできるように使用される場合、MK は ROM エミュレータの空きメモリ領域にデバッグ データを配置し、制御コンピュータコンピュータはそれらを読み取り、ディスプレイに表示します。 例えば、MK の内部データ RAM の内容を出力するには、MK の書き込み信号出力を外部データメモリ (WR) に接続し、ROM エミュレータの書き込み信号入力に接続し、表に示すサブルーチンを使用します。 3. デバッグ対象のデバイスのプログラム メモリ サイズが 32 KB を超えないと想定されているため、エミュレータ メモリに配置されるデバッグ情報はアドレス 8000H から始まります。レジスタ R0 と R1 の内容は、後でループを編成するためにサブルーチンで使用されるため、別々に送信されます。デバッグ情報の出力後、MK プログラムは一時停止され、8000H-807FH ROM エミュレータのメモリセルの内容が制御コンピュータによって読み取られ、表示および解析されます。同様の方法で、プログラムでアクセス可能なすべての MK レジスタの内容を表示できます。 周辺デバイス ドライバーのデバッグを開始するときは、プログラム内のエラーによるデバイスの障害の可能性を回避するために、MK によって生成された制御信号を周辺デバイス ドライバーから一時的に切断します。プロセスが 1 回限りの場合は、プロセスを「ループ」し、必要に応じてオシロスコープの同期信号をプログラムし、MC によって生成された信号をオシロスコープで監視してドライバーをデバッグします。制御信号のタイミング図が必要なタイミング図に対応していることを確認した後、周辺機器を接続し、実際のハードウェアでドライバーのデバッグを続けます。最後に、ソフトウェア モジュールからデバッグ要素を削除し、最終的な形式での動作を確認します。 さまざまなモジュールによる共有 MK リソースの使用により、別のサブルーチンが追加されたときにデバッグされたプログラムが動作しなくなることがよくあります。そのため、次のモジュールをデバッグした後、以前にデバッグされたすべてのドライバとサブルーチンが引き続き正しく動作することを確認してください。プログラムで割り込みを使用する場合は、絶対に必要な場合を除き、割り込みを無効にしないでください。デバッグされたモジュールは、現時点では必要ない場合でも、プログラムから削除しないでください。 MK がフリーズした場合は、次のエラー位置特定方法が役立ちます。プログラムに制御ポイントを入力し、ディスプレイ上に連続して増加する数値を表示します。フリーズ後、最後に正常に通過したチェックポイントに対応する番号が表示されます。これらのポイントのいくつかが無限ループに陥ると、ディスプレイ上の数値が急速に変化します。どのポイントがループに含まれているかを判断するには、たとえばアイドル ループの形式で各ポイントを出力するときにソフトウェア遅延を設定して、数値の変化を人為的に遅くする必要があります。デバッグ対象のシステムにディスプレイが内蔵されていない場合、ROM エミュレータの空きメモリ領域を介して制御コンピュータのディスプレイに情報を表示できます。 すべてのデバイス ドライバーをデバッグしたら、他のルーチンのデバッグを開始します。それらのいずれかがデータの処理または変換のための複雑なアルゴリズムを実装している場合、1 つまたは複数の中間変数値を表示するだけでは、エラー分析に十分な情報が得られないことがよくあります。必要なボリュームのデバッグ情報を ROM の空きメモリ領域に書き込みます。エミュレータは、ここでの困難を克服するのに役立ちます。 すべてのソフトウェア モジュールが正常に動作するようになったら、それらをまとめてデバッグできます。この場合に生じる問題は 2 つのグループに分けられます。 1 つ目には、算術論理演算ユニット、データ メモリ、入出力ポートなど、マイクロコントローラの共通リソースの共有の問題が含まれます。 2 つ目は、リアルタイムでのマイクロコントローラー デバイスの動作に関連します。 リアルタイム システムは通常マルチスレッドです。いくつかのソフトウェア タスク (スレッド) が並行して実行され、相互に対話し、共有リソースを使用します。ただし、MC はその構造上、各瞬間にそのうちの 1 つだけを解決し、優先順位を考慮して他の問題に交互に切り替えます。タスク間の競合は、リソースの不足とデータ処理の時間の不足の両方によって発生します。したがって、ソフトウェア モジュールで使用される MC リソースには特に注意し、デバッグ情報を表示して状態の変化を監視することがよくあります。可能な限りグローバル変数の数を減らし、ローカル変数に置き換えるようにしてください。スタックの状態を監視します。プログラムの重要なセクションの実行時間を見積もり、実際に可能な入力信号のさまざまな値についてシステムをテストします。 ROM エミュレータを使用すると、MK の内部メモリで動作するように設計されたプログラムを外部プログラム メモリに一時的に配置してデバッグすることもできます。この場合、ポート P0 と P2 は外部メモリへのサービスでビジーになるため、MK の残りの空き I/O ラインが十分でない場合、P0 と P2 は外部データ メモリ セルとしてアドレス指定された I/O ポートに置き換えられます。これらは標準回路に従って接続され、トリガー レジスタを使用して出力ラインの数を増やし、XNUMX つの出力状態を持つ要素を使用して入力ラインの数を増やします。 エミュレータを使用してシステムをデバッグした後、システムからデバッグ要素を削除し、プログラムを ROM (または MK の内部プログラム メモリ) に書き込み、デバイスの最終的な形式での動作を確認します。 文学
著者: G.Vydolob、V.Samoylov、モスクワ (ゼレノグラード) 他の記事も見る セクション マイクロコントローラー. 読み書き 有用な この記事へのコメント. 科学技術の最新ニュース、新しい電子機器: 庭の花の間引き機
02.05.2024 最先端の赤外線顕微鏡
02.05.2024 昆虫用エアトラップ
01.05.2024
その他の興味深いニュース: ▪ 冷たい飲み物用のラピッドコールドブリューコーヒーメーカー ▪ ケージが後退する
無料の技術ライブラリの興味深い資料: ▪ 記事 なぜ人間の目のタンパク質の一つがピカチュウにちなんで名付けられているのでしょうか? 詳細な回答 ▪ 記事 労働保護要件を遵守するための従業員の内部動機の管理 ▪ 記事 コンパクトな電気はんだこて。 無線エレクトロニクスと電気工学の百科事典 このページのすべての言語 ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー www.diagram.com.ua |