4

この LPC1768 ミニ ボードでコードを実行する方法をようやく見つけましたが、今はデバッグを機能させようとしています。

私が使用しているツールチェーンは、Yagarto + Eclipse (Indigo) (GDB ハードウェア デバッガー付き) + OpenOCDです。私の JTAG インターフェイスは、Bus Blaster V2ボードです。

同様のセットアップを説明するガイドを1 つ見つけましたが、それは別の JTAG インターフェイス用であり、あまり役に立ちません。LPC1768 の例に関するこの投稿もありますが、gdb コマンドは OpenOCD 用ではありません。

この時点で、私が確実に知っている唯一のコマンド (init 用) はtarget remote localhost:3333(OpenOCD gdb サーバーへの接続用) です。

このダイアログでは、どの設定と gdb コマンドを使用する必要がありますか?

ここに画像の説明を入力

(「SAM7X256」は無視してください。上記のリンクのいずれかからスクリーンショットを再利用してください。私はARM LPC1768を使用しています)

また、ボードがセカンダリ ブートローダー(ユーザー コードは 0x2000 で始まる) を使用しているという事実は、これらのデバッグ設定に影響しますか?

更新: dwelch のアドバイスを受けて、いくつかの基本的な OpenOCD コマンド ( reset initmdwmwwload_imageなど) を機能させることができました。奇妙な「JTAG-DP STICKY」エラーは、RAM リンカ スクリプトで発生したもので、RAM リンカ スクリプトを使用して LPC1758 のプロジェクト テンプレートを見つけ、LPC1768のメモリ サイズを変更するだけで、load_image がうまく機能しました。

ただし、GDBデバッグ用にEclipseを適切に構成する方法を知りたいです。

4

1 に答える 1

2

たぶん、一度に 1 つずつ試してみてください。

openocd を起動します。おそらく -f interface/jlink.cfg -f target/lpc1768.cfg などのようなもので、動作しているように聞こえます。

2番目のtelnet localhost 4444またはWindowsコマンドラインが何であれ(同様のもの)

TELNET セッション内:

> halt
> mdw 0x0000

あなたがその部分と話していることを確認するためのそのようなもの。

すでにいくつかのプログラムをコンパイルしている場合は、単にそれらをロードして実行できます。たとえば、RAM のみのプログラムを作成する場合 (リンカに .text、.data などはすべて 0x10000000 であることを伝えます)、

> load_image /path/to/myprog.elf
> resume 0x10000001

(はい、奇数にするために 1 を追加します。これはサム プロセッサであり、ARM 命令を実行しません (lsbit = 0 はアーム モードです。lsbit = 1 はサム モードです)。

再コンパイル後に再実行するには:

> halt
> load_image /path/to/myprog.elf
> resume 0x10000001

次に、RAMベースのプログラムが生命の兆候を示した後、点滅などについて心配します。

そのどれもが機能しない場合、gdb はその上にもう 1 つのレベルの複雑さがあるだけであり、把握するのが難しくなります。

ブートローダーに関する限り、答えは、RAM から実行しようとしているか、プログラムから ROM に実行しようとしているかによって異なります。RAM から実行している場合は、システムを引き継いですべての RAM を取得できます。一部のチップ (stm32) には、呼び出すことができるルーチンがいくつかあり、一部の RAM をそのままにしておく必要がありますが、チップを引き継ぐ場合は、すべての RAM を取得できます。 、バイナリからわからない場合は、リンカとおそらくデバッガに伝えることが問題です(ツールがサポートしている場合は、elfファイル、ihex、srec、または.bin以外のほとんどすべてを使用するのが適切です)。

フラッシュに書き込む場合は、フラッシュのどの部分にブートローダーが含まれるか、そのブートローダーがコードに渡すために何をするかなどを正確に把握し、リンカーとデバッガーにこの情報を伝える必要があります。ブートローダーがどこにあり、何をしているかに応じて、ブートローダーを簡単に消去/破棄できます (これらの lpc および st パーツの多くには、シリアルまたは USB のブートローダーがあり、偶発的なミスからある程度保護されていますが、通常はそれらを消去して、気をつけないと交換してください)。

于 2011-10-27T20:20:26.197 に答える