2016-08-05 24 views
2

Qt Creatorを使用して、STM32のベアメタル構成を使用する組み込みアプリケーションを開発しています。 KIEL uVision、IAR System Workbench、Eclipse IDEなど、さまざまなIDEの下でこのアプリケーションをデバッグすると、ツリーリストにプロセッサ固有のレジスタが見える特別なビューがあります。 Qt Creatorに類似したものはありますか?デバッグ中のQt Creatorのペリフェラルレジスタ

私はデバッグビューでレジスタビューを見ました。表示するメモリアドレスを教えてくれるのでしょうか?

EDIT:私が書いているアプリケーションはCとC++です。ターゲットは、ARMアーキテクチャ(この場合はSTM32)に基づいたマイクロコントローラです。 QtコードやQMLコードはありません。

私の目標は、このアプリケーションを開発するためのIDEとしてQtCreatorを使用することです。これは、キット構成でコンパイラ(arm-none-eabi-gcc)、デバッガ(arm-none-eabi-gdb)およびgdb-server(openocd)を設定するだけで簡単です。これにより、ベアメタルターゲット用の実行可能なelfファイルを作成し、それをマイクロコントローラ内のフラッシュメモリにフラッシュすることができます。

これらすべての手順は既に完了しています。

しかし、メモリスペースの一部としてデバッグパートが複雑になるのは、直接ハードウェア構成であり、純粋なメモリではありません。このメモリ空間には周辺機器の設定が含まれています。 UART、I2C、ETHERNET、USBを介して話すか、ピンやクロック速度を設定するだけです。

これらの値を参照マニュアルと比較し、各ビットが何をしているかを確認する必要があります。現在Keil uVision、IAR System Workbench、EcplipseベースのIDEにはリファレンスマップのような値が正確に表示されていますが、メモリマップを見てそこで読むことは可能です。

私はこのプラグインを自分で作成しなければならない場合や、プラグインをいくつか見て編集する方法があるのですか?

後者の場合、デバッガのインスタンスに接続し、コマンドを書き込んで出力を読み取る方法を知る必要があります。主にdata @addressを読み込み、data @ addressを書き込みます。私はgdbがMIモードを使用していることを理解しています。私は別のプロセスからgdbに接続しようとしましたが、それは可能ではありませんので、Qt Creator用のプラグインを作成する必要があります。レジスタ記述は、定義された構造を有するXMLであるファイル形式SVDである。

最後の部分を要約すると、実行中のgdbに接続し、ブレークポイントに達するとデータを送受信できるプラグインで実装する必要があるコードが検索されます。

STM32 Memory map Keil registers Eclipse registers

+0

これは、ジョブに間違ったツールを使用しているようです。 QtやQMLを使用していない場合は、なぜQtCreatorを使用するのですか?あなたは、あなたが望む機能を持っているいくつかの環境をリストアップしています。なぜそれらを使用しないのですか? – rjp

+0

私はWin、Mac、LinuxのプログラムやAndroidのためにQtとQMLを使用しています。それには能力があると私には思われます。行方不明の唯一のものはこの特別なビューです。他の環境にはこの機能がありますが、IDEとしてはひどいです。 IARとKeilは独自のビルドシステムとコンパイラを使用しています。これはビルド中にカスタムのものを追加する必要があるため、私には適していません。したがって、私はCMakeを使用します。ポータブルではありません。ダウトワインが助けになるでしょう。 – phodina

+0

EclipseとGNU ARMツールはどうですか?それはあなたが四角いペグを丸いペグよりもよくするので、丸い穴に四角いペグを叩くのを試みているようです。強引な力で動作させることができるかもしれませんが、もっと良い解決策があります。 – rjp

答えて

1

あなたがC++コードやQMLのコードをデバッグしているかどうかを言うことはありませんので、私はyesまたはnoで答えることができません。これらのレジスタ値は、アセンブリ言語レベルでデバッグする場合に便利です(それ自体が有用かもしれません)。

C++コードをデバッグしている場合は、そのコードのアセンブリリストを生成するようにコンパイラを設定できますが、かなり低いレベルでデバッグします。

QMLコードをデバッグしている場合は、QMLエンジンのアセンブリリストが必要になります。さらに重要なのは、低レベルの手続き型デバッガでQMLのような宣言型言語をデバッグしようとするのは時間の無駄だろうと思う。 QMLのような言語のポイントは、あなたをすべてのものよりも上手くいくことです。

+0

組み込みシステムでCコードをデバッグするときは、定期的にレジスタ値を調べなければなりません。これは、特に周辺コンフィギュレーションレジスタの場合、関連するアセンブリだけではありません。私はあなたがQMLをデバッグしているならば、あなたはその点をかなり過ぎていると思います。 – rjp

+1

あなたは正しいです。特に、ペリフェラルレジスタの値は、あなたが使用している言語に関係なく、QMLでも(あなたのQMLコードがペリフェラルレジスタを変更することは疑いがありますが)関連しています。私はCPUのレジスタを考えていましたが、基本的なアセンブリコードを見ずに解釈するのは難しいでしょう。 – Mark

関連する問題