QEMU に昔のソースを
QEMU versatilepb でむかしの ARM-7 のソースを載せてみる。意外と簡単に動いちゃった。まずは qemu の起動。gdb サーバの指定をしておく。
qemu-system-arm -S -gdb tcp::1234 -M versatilepb -m 256 -kernel sdramTest_32bit.elf
で、gdb を起動し接続。
> arm-none-linux-gnueabi-gdb sdramTest_32bit.elf GNU gdb (Sourcery G++ Lite 2010q1-202) 7.0.50.20100218-cvs Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi". For bug reporting instructions, please see: <https://support.codesourcery.com/GNUToolchain/>... Reading symbols from /home/ryos/QEMU-SystemC/os-less/sdramCheckTest/sdramTest_32bit.elf...(no debugging symbols found)...done. (gdb) target remote localhost:1234 Remote debugging using localhost:1234 (gdb) disassemble 0x60 Dump of assembler code for function main: 0x0000005c <+0>: mov r0, #268435456 ; 0x10000000 0x00000060 <+4>: mov r1, #335544320 ; 0x14000000 0x00000064 <+8>: ldr r2, [pc, #68] ; 0xb0 <error+4> 0x00000068 <+12>: mov r4, r0 0x0000006c <+16>: str r2, [r4], #4 => 0x00000070 <+20>: cmp r1, r4 0x00000074 <+24>: bne 0x6c <main+16> 0x00000078 <+28>: mov r4, r0 0x0000007c <+32>: ldr r5, [r4] 0x00000080 <+36>: cmp r5, r2 0x00000084 <+40>: bne 0x98 <main+60> 0x00000088 <+44>: add r4, r4, #4 0x0000008c <+48>: cmp r4, r1 0x00000090 <+52>: bne 0x7c <main+32> 0x00000094 <+56>: mov r0, #0 0x00000098 <+60>: cmp r4, r1 0x0000009c <+64>: movne r0, #1 0x000000a0 <+68>: cmp r0, #0 0x000000a4 <+72>: bne 0xac <error>
なんとなく動いている。vector とか同じなのか?