gdbからQEMUに接続する

Ubuntu 20.04上で、quemへの接続を実験しました。qemuがシミュレートするのはcortex-m3コアのLM3S6965です。

まず、ソフトウェアのインストールです。Arm用のgdbはgcc-arm-none-eabiパッケージに入っていませんので、gdb-mutiarchをインストールします。

sudo apt-get install qemu-system-arm gdb-multiarch

QEMUのバージョンは4.2.1でした。次にこれを実行します。

qemu-system-arm -S \
                -cpu cortex-m3 \
                -machine lm3s6965evb \
                -nographic \
                -semihosting-config enable=on,target=native \
                -gdb tcp::12345

ここで各引数の意味は以下のとおりです。

  • -S : プログラムを実行せずデバッガからの接続を待つことを指定します。大文字です。
  • -cpu : CPUアーキテクチャを指定します。
  • -machine : シミュレートする機械の名前です。チップ名ではなくボード名であることに注意。
  • -nographic : ウインドウを表示させません。
  • -semihosting : stdioをgdb経由にします。
  • -gdb : GDBとの接続方法を指定します。tcp::12345は、TCPポート12345で接続することを意味します。

以上のパラメタを与えて起動するとQEMUは待ち状態になります。ここで別のshellを開き、gdb-multiarchを起動してシミュレータに接続します。

takemasa@takemasa-vm:~$ gdb-multiarch -q
(gdb) target remote :12345
Remote debugging using :12345
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
0x00000000 in ?? ()
(gdb) info registers 
r0             0x0                 0
r1             0x0                 0
r2             0x0                 0
r3             0x0                 0
r4             0x0                 0
r5             0x0                 0
r6             0x0                 0
r7             0x0                 0
r8             0x0                 0
r9             0x0                 0
r10            0x0                 0
r11            0x0                 0
r12            0x0                 0
sp             0x0                 0x0
lr             0xffffffff          -1
pc             0x0                 0x0
cpsr           0x400001d3          1073742291
(gdb)

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください