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)