問題タブ [openocd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gdb - HawkboardおよびOpenOCDで使用するJTAGエミュレーター?
Hawkboardを使用してベアメタルARMプログラミングを試してみたいのですが、展開プロセスがひどいようです。私はこれにまったく慣れていないので、手順を誤解している可能性がありますが、バイナリファイルを変換するためにAISgenというプログラムを使用してから、UARTを介してu-Bootで起動し、AISバイナリをメモリにコピーする必要があるようです。変更を加えるたびにやるべきことがたくさんあるだけでなく、GDBでデバッグすることもできません。
私が見つけることができるこれに対する最良の解決策はJTAGです。しかし、これらのJTAGエミュレーターの価格はばかげているように見えます。どれがホークボードで動作し、どれが動作しないのかさえわかりません。これまでのところ、私の最善の策はFlyswatterのようですが、ピンのレイアウトは異なります。
基本的に、比較的安価で、HawkboardとOpenOCDで動作するものが必要です。
助言がありますか?それとも、私がこれを行うことができる別の方法はありますか?
arm - どういうわけかこのXDS100v2JTAGエミュレーターを使用できますか?
Hawkboardを購入し、デバッグに使用するJTAGエミュレーターを探しに行きました。私が確信していると思われたのはSpectrumDigitalXDS100v2だけでした。ピンが一致し、Hawkboardでそれを使用している他の人について読んだことがあるからです。GCC ARMツールチェーンとOpenOCDを使用したいと思っていましたが、XDS100v2は明らかにTI CodeComposerStudioでのみ動作します。HawkboardはとにかくTIプロセッサを使用しており、TIコンパイラがそれに対して非常にうまく最適化できると考えたので、私はそれで問題ありませんでした。JTAGエミュレータを受け取った後、TICCSv4をインストールしました...
私は絶対にそれを嫌います。
それは私のハードドライブ全体にファイルを分散させ、私のユーザーディレクトリを乱雑にし、設定するのに大変な苦痛を与え、今では正しくアンインストールすることさえできません。デバッグのためにGCCツールチェーンとOpenOCD/GDBに切り替えたいのですが、XDS100v2でそれを行う方法が見つかりません。
OpenOCDメーリングリストでこれについて最近いくつかの議論がありましたが、ライセンスの問題により、チームがXDS100v2の直接サポートを含めることができないようです。また、XDS100v2をサポートするためのコードが含まれているように見えるディスカッションとほぼ同時期に行われたGitコミットを見つけましたが、これが公式かどうかはわかりません。XDS100v2が実際に正しくインストールされていないため、実際にテストすることもできません。ドライバーを入手するにはCCSv4をインストールする必要がありますが、最初のマシンのように乱雑にしたくないので、他のマシンでこれを行うことを拒否します。ディスカッションでは、XDS100v2は実際には単なるFTDIデバイスであると述べているため、汎用のFTDIドライバーを使用してみましたが、Windowsはそれを認識しませんでした。
私が求めているのはこれだと思います。一般的なFTDIドライバーまたは別の方法を使用して、OpenOCDにXDS100v2をサポートさせる方法はありますか?私はこのJTAGエミュレーターに80ドルを費やしましたが、無駄にするのは本当に嫌です。
gcc - FreeRTOS と OpenOCD を使用した GCC の構成
これが可能であると確信していますが、どうすればよいかわかりません。私は一般的に GCC を使用して構築するのは非常に初めてで、FreeRTOS を使用したことはありませんが、OS を起動して TI ARM Cortex MCU で実行してみたいと思っていますが、少しひねりがあります。 Pascal で起動して実行します。私は興味がある:
- これでも就職できるのでしょうか?そうでない場合、次の問題は一種の論点です。
- Delphi 時代から、C ライブラリの関数にアクセスする機能を漠然と思い出しました。FreeRTOS で C ルーチンにアクセスできるかどうか疑問に思っています。
- GCC バージョン (推奨) を使用すると、ターゲットで OpenOCD を使用してデバッグできますか? デバッグ シンボルがどのように機能するのか、多かれ少なかれ言語に依存しないのかどうかはよくわかりません (この場合はうまくいけば)。
- 元のクエリの範囲外のボーナス質問として、x86 プロセッサ (開発用 PC など) で FreeRTOS をシミュレートして、開発中のデバッグを容易にすることはできますか? (もちろん、Pascal プログラムで..)
これを達成するためのドキュメントが見つからないので、ここの誰かが光を当てることができることを願っています! どのリソースも最も役に立ちます。私が言ったように、私はこの種の開発に非常に慣れていません。より良い代替案があると思われる場合は、提案も受け付けています。
参考までに、私の好みのホスト構成は次のようなものです。
- Linux (Ubuntu/Debian)
- 開発、単体テスト、できればシミュレーション / デバッグ用の Eclipse IDE
- ターゲットデバッグ用の OpenOCD
- ターゲット上の GNU Pascal + FreeRTOS
unit-testing - gdbを(Pythonで)スクリプト化する方法は?例:ブレークポイントを追加して実行し、どのブレークポイントに到達しましたか?
OpenOCDによって制御される組み込みmcu用にgdbを使用して小さな単体テストを作成しようとしています(これにより、gdbサーバーを介してターゲットを制御できます)。
そこで、gdbのスクリプトを使用してこれを自動化したいと思います。
多かれ少なかれこれを行うgdb用のある種のスクリプトを書きたいと思います。
- ブレークポイントをいくつか追加します
- プログラムを開始します
- 停止したとき、どこで停止しましたか(フレーム情報を取得)
- 終了する。
何か案は?
Pythonのgdbスクリプトでこれを行う方法の例がいいでしょう。
ありがとうヨハン
注:
この基本構造があり、関数start_test()が返すものに応じて、多かれ少なかれtest_failed()またはtest_success()に入るとしましょう。
gdbでこれを手動で行うことは、非常に簡単です。
したがって、私が試した次のステップは、これらのgdbコマンドをgdb起動スクリプトに追加することでした。これは多かれ少なかれこのように見えます。
で始めます
そして、この種の作品ですが、それはあまり良くありません。gdbがサポートしているように見える「新しくてかっこいい」Pythonスクリプトでこれを行うにはどうすればよいですか。
gdb - openOCDとgdbを使用してSTM32フラッシュをプログラムする方法
私はOlimexARM-USB-OCDドングルとopenOCDおよびGDBを使用して、stm32f103マイクロをプログラムおよびデバッグしています。私が使用しているIDEは、Olimex dev-kit CDからのものであり、Eclipseganymedeを使用しています。
小さなプログラムをRAMにロードして、問題なくコードをステップ実行できます。
私は今、RAMに収まらないはるかに大きなプログラム(わずか20K)を持っているので、フラッシュ(128K)から実行したいと思います。
プログラムコードをフラッシュセクション(アドレス0x8000000)に配置する必要があることを示すリンカースクリプトを変更しましたが、gdbはプログラムのロードに失敗します。
gdbにプログラムをフラッシュにロードさせるにはどうすればよいですか?
gdb - cortex-m3 が gdb でアドレス 0 にリセットされるのはなぜですか?
Stellaris LM3S8962 cortex-m3 チップ用のクロスコンパイル ツールチェーンを構築しています。私が作成したテスト用の C++ アプリケーションは、しばらく実行されてから失敗します。メモリ マップされたハードウェア デバイスにアクセスしようとすると、障害が発生します。現時点での私の作業仮説は、起動シーケンスで重要なチップの初期化が欠落しているというものです。
私が理解したいのは、gdb での実行が停止し、プログラム カウンターが 0 に設定されるのはなぜですか? 0x0 にベクター テーブルがありますが、最初の値はスタック ポインターです。ベクター テーブルで指定したフォールト ハンドラーのいずれかになるべきではありませんか?
ツールチェーンは、gcc、gdb、openocd に基づいています。
eclipse - STM32 GDB/OpenOCD コマンドとフラッシュおよび RAM デバッグ用の初期化
適切な GDB / OpenOCD の初期化とフラッシュおよび RAM のデバッグのために Eclipse 内で使用するコマンド (外部ツール) の実行、およびフラッシュと RAM のビルド用にメイクファイルに組み込む必要がある適切な変更または追加について支援を求めています。もちろん、これが重要な場合は、このMCUの場合。
MCU: STM32F103VET6
Zylin Embedded CDT、Yagarto Tools and Bins、OpenOCD 0.4 で Eclipse Helios を使用しており、Olimex ARM-USB-OCD JTAG アダプターを持っています。
すでに ARM-USB-OCD を構成し、Eclipse の外部ツールとして追加しました。OpenOCD を初期化するために、Eclipse で次のコマンドを使用しました。ボード構成ファイルは stm32 MCU を参照します。
これを Eclipse 内で実行すると、すべてが機能しているように見えます (GDB インターフェイス、OpenOCD が MCU を検出するなど)。OpenOCD に telnet で接続してコマンドを実行することもできます。だから、私は次の部分で立ち往生しています。フラッシュと RAM のデバッグ用の初期化とコマンド、およびフラッシュの消去。
いくつかのチュートリアルを読み、ネットを精査しましたが、このプロセッサに固有のものを見つけることができませんでした. 私はこれに慣れていないので、例として同等の製品を認識していない可能性があります.
eclipse - Eclipse/OCD での LPC17xx デバッグの問題
私は完全かつ具体的にしようとします:
NXP LPC1756 Cortex-M3。Codesourcery ARM ツールチェーンとデバッグ用の OpenOCD を使用する Eclipse Helios。JTAG は Olimex ARM-USB-OCD です。OSはWindows7 64ビットです。
私は、物事のフラッシュアップロード側が解決したと信じています. プログラミング後、スクリプトで dump_image を実行すると、ダンプされたイメージはほぼ正しいように見えます。現時点では検証の問題があり、それを整理する必要がありますが、この段階では JTAG セットアップが機能しているようで、'1756 と正常に通信しています。
ただし、デバッグしようとすると問題が発生します。まず、ターゲット デバイスの cfg ファイルから始まる cfg ファイル:
さて、私のデバッグ cfg ファイル:
Eclipse では、次のフラグを指定してこのツールを呼び出します。
これは問題なく動作しているようです (少なくとも、コンソールにエラーは表示されないようです)。今、私が問題を抱えている部分があります:
GDB Hardware Debugging の下にある Eclipse (Run > Debug Configurations...) でデバッグ構成を作成しました。関連するパラメータは次のとおりです。
(注: PC を 0x00001278 に設定しました。これが私の Reset_Handler のアドレスだったからです。0x00000004 にする必要があることはわかっていますが、実験していました。0x00000004 のときに同じ問題が発生しました...)
このセットアップを使用してデバッグしようとすると、「GDB Hardware Debugging Suspended」というメッセージが表示され、PC がブートローダー 0x1FFF0080 にあるように見え、デバッガーが接続されていないように見えます。コンソールには、次のようなものが表示されます。
たとえば、逆アセンブリ ウィンドウでは、「main」や「Reset_Handler」などを検索して見つけることができますが、逆アセンブリはすべて「movs r0, r0」であり、基本的にすべてゼロです。私は単一のステップを実行できません (明らかに、一時停止されています...)おそらくJTAGインターフェースは死んでいない...)
フラッシュされた画像は 0x00000000 (つまり、そこにあるベクター テーブル) にあるはずです。dump_image を実行すると、デバイスがプログラムされているように見え、ベクター テーブル エントリが正しく表示されます。コード保護?もしそうなら、明らかに成功した「ダンプ+イメージ」を行うにはどうすればよいですか?
ただし、JTAG を接続せずにデバイスを接続しても、動作しません。LPC1768 についてこれに似た投稿を見たことがありますが、自分に合うものは見つかりませんでした。アドバイスや提案は大歓迎です。
gcc - arm-none-eabi-gdb と openocd: オフセット クエリ、qOffsets に対する不正な応答?
GDB を使用して、OpenOCD と GNU ARM ツールチェーン (MacPorts と共にインストール) を使用して Stellaris LM3S8962 評価ボードをデバッグしようとしています。何がうまくいかないのかについてのアイデアはありますか? 不足しているものはありますか?
これがopenocdの出力です...不正な形式の応答が見つかるとすぐに、openocdはtelnet接続をドロップします...
私の arm-none-eabi-* ツールチェーンのバージョン出力は次のとおりです...
ツールチェーンを使用してコンパイルし、OpenOCD を使用して結果の .bin ファイルをフラッシュできます。Web を検索しただけでは、「不正な応答」の問題に対する解決策を見つけることができませんでした。
アドバイスや支援をよろしくお願いします!
アップデート
@turbo-j と @guy-sirton からの回答のおかげで、もう少し先に進むことができました...これまでで最も役に立ったのは、実際に間違ったポート (3333 ではなく 4444) を使用していたことですが、今では取得しています-c "init" -c "halt" -c "reset halt"
openocd コマンド文字列に追加するかどうかに関係なく、次のようになります。
(これは、現在渡されている qOffsets req/resp の直後です)
OpenOCD 側:
時々undefined debug reason 6 - target needs reset
OpenOCDコンソールで...何が起こっているのかわかりませんが、機能に近づいているようです
アップデート 2
ファイル 'main.axf' または 'main.o' をロードしないと、実行されませんがRemote 'g' packet reply is too long
、シンボルが表示されません... 他の Web サイトが主に .elf 拡張子を扱っていることに気付きました。違いはなんですか?コマンドから main.axf、main.bin (フラッシュ書き込みおよび正常に実行)、main.d、main.o を生成する StellarisWare の「Hello World」の例を使用していmake
ます。Makefile に何か変なところがありますか?
arm - OPENOCD、ARM Cortex M0 (JTAG) へのフラッシュ プログラム
私は OpenOCD の初心者です。Olimex OpenOCD を使用して、実際にプログラム hex ファイル (Kiel から) を ARM CORTEX M0 (ジェネリック) にフラッシュしようとした人はいますか?
MCUフラッシュ内でmww(メモリ書き込みワード)を実行するためにhexファイルの各ワードを取得するためにスクリプトファイルをセットアップするには何が必要ですか?私はパイソンを使用しています。
私は提案を開きます。
ウィンドウパソコンを使用しています。