diff options
Diffstat (limited to 'src/st-util/gdb-server.c')
-rw-r--r-- | src/st-util/gdb-server.c | 214 |
1 files changed, 1 insertions, 213 deletions
diff --git a/src/st-util/gdb-server.c b/src/st-util/gdb-server.c index 71f24fb..28e0623 100644 --- a/src/st-util/gdb-server.c +++ b/src/st-util/gdb-server.c @@ -29,6 +29,7 @@ #include <stlink.h> #include "gdb-server.h" #include "gdb-remote.h" +#include "memory-map.h" #include "semihosting.h" #include <chipid.h> @@ -344,219 +345,6 @@ static const char* const target_description = " </feature>" "</target>"; -static const char* const memory_map_template_F4 = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x100000\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x10000000\" length=\"0x10000\"/>" // ccm ram - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x20000\"/>" // sram - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x10000\">" // Sectors 0..3 - " <property name=\"blocksize\">0x4000</property>" // 16kB - " </memory>" - " <memory type=\"flash\" start=\"0x08010000\" length=\"0x10000\">" // Sector 4 - " <property name=\"blocksize\">0x10000</property>" // 64kB - " </memory>" - " <memory type=\"flash\" start=\"0x08020000\" length=\"0xE0000\">" // Sectors 5..11 - " <property name=\"blocksize\">0x20000</property>" // 128kB - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0x60000000\" length=\"0x7fffffff\"/>" // AHB3 Peripherals - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1fff0000\" length=\"0x7800\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fffc000\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template_F4_HD = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x100000\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x10000000\" length=\"0x10000\"/>" // ccm ram - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x40000\"/>" // sram - " <memory type=\"ram\" start=\"0x60000000\" length=\"0x10000000\"/>" // fmc bank 1 (nor/psram/sram) - " <memory type=\"ram\" start=\"0x70000000\" length=\"0x20000000\"/>" // fmc bank 2 & 3 (nand flash) - " <memory type=\"ram\" start=\"0x90000000\" length=\"0x10000000\"/>" // fmc bank 4 (pc card) - " <memory type=\"ram\" start=\"0xC0000000\" length=\"0x20000000\"/>" // fmc sdram bank 1 & 2 - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x10000\">" // Sectors 0..3 - " <property name=\"blocksize\">0x4000</property>" // 16kB - " </memory>" - " <memory type=\"flash\" start=\"0x08010000\" length=\"0x10000\">" // Sector 4 - " <property name=\"blocksize\">0x10000</property>" // 64kB - " </memory>" - " <memory type=\"flash\" start=\"0x08020000\" length=\"0xE0000\">" // Sectors 5..11 - " <property name=\"blocksize\">0x20000</property>" // 128kB - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1fff0000\" length=\"0x7800\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fffc000\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template_F2 = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x%x\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x%x\"/>" // sram - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x10000\">" // Sectors 0..3 - " <property name=\"blocksize\">0x4000</property>" // 16kB - " </memory>" - " <memory type=\"flash\" start=\"0x08010000\" length=\"0x10000\">" // Sector 4 - " <property name=\"blocksize\">0x10000</property>" // 64kB - " </memory>" - " <memory type=\"flash\" start=\"0x08020000\" length=\"0x%x\">" // Sectors 5.. - " <property name=\"blocksize\">0x20000</property>" // 128kB - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x%08x\" length=\"0x%x\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fffc000\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template_L4 = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x%x\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x10000000\" length=\"0x8000\"/>" // SRAM2 (32kB) - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x18000\"/>" // SRAM1 (96kB) - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x%x\">" - " <property name=\"blocksize\">0x800</property>" - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0x60000000\" length=\"0x7fffffff\"/>" // AHB3 Peripherals - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1fff0000\" length=\"0x7000\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fff7800\" length=\"0x10\"/>" // option byte area - " <memory type=\"rom\" start=\"0x1ffff800\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template_L496 = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x%x\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x10000000\" length=\"0x10000\"/>" // SRAM2 (64kB) - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x50000\"/>" // SRAM1 + aliased SRAM2 (256 + 64 = 320kB) - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x%x\">" - " <property name=\"blocksize\">0x800</property>" - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0x60000000\" length=\"0x7fffffff\"/>" // AHB3 Peripherals - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1fff0000\" length=\"0x7000\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fff7800\" length=\"0x10\"/>" // option byte area - " <memory type=\"rom\" start=\"0x1ffff800\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x%x\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x%x\"/>" // sram 8kB - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x%x\">" - " <property name=\"blocksize\">0x%x</property>" - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x%08x\" length=\"0x%x\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1ffff800\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template_F7 = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"ram\" start=\"0x00000000\" length=\"0x4000\"/>" // ITCM ram 16kB - " <memory type=\"rom\" start=\"0x00200000\" length=\"0x100000\"/>" // ITCM flash - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x%x\"/>" // sram - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x20000\">" // Sectors 0..3 - " <property name=\"blocksize\">0x8000</property>" // 32kB - " </memory>" - " <memory type=\"flash\" start=\"0x08020000\" length=\"0x20000\">" // Sector 4 - " <property name=\"blocksize\">0x20000</property>" // 128kB - " </memory>" - " <memory type=\"flash\" start=\"0x08040000\" length=\"0xC0000\">" // Sectors 5..7 - " <property name=\"blocksize\">0x40000</property>" // 128kB - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0x60000000\" length=\"0x7fffffff\"/>" // AHB3 Peripherals - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x00100000\" length=\"0xEDC0\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fff0000\" length=\"0x20\"/>" // option byte area - "</memory-map>"; - -static const char* const memory_map_template_H7 = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x10000\"/>" // ITCMRAM 64kB - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x20000\"/>" // DTCMRAM 128kB - " <memory type=\"ram\" start=\"0x24000000\" length=\"0x80000\"/>" // RAM D1 512kB - " <memory type=\"ram\" start=\"0x30000000\" length=\"0x48000\"/>" // RAM D2 288kB - " <memory type=\"ram\" start=\"0x38000000\" length=\"0x10000\"/>" // RAM D3 64kB - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x%x\">" - " <property name=\"blocksize\">0x%x</property>" - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1ff00000\" length=\"0x20000\"/>" // bootrom - "</memory-map>"; - -static const char* const memory_map_template_H72x3x = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x40000\"/>" // ITCMRAM 64kB + Optional remap - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x20000\"/>" // DTCMRAM 128kB - " <memory type=\"ram\" start=\"0x24000000\" length=\"0x80000\"/>" // RAM D1 320kB - " <memory type=\"ram\" start=\"0x30000000\" length=\"0x08000\"/>" // RAM D2 23kB - " <memory type=\"ram\" start=\"0x38000000\" length=\"0x04000\"/>" // RAM D3 16kB - " <memory type=\"ram\" start=\"0x38800000\" length=\"0x01000\"/>" // Backup RAM 4kB - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x%x\">" - " <property name=\"blocksize\">0x%x</property>" - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0x60000000\" length=\"0x3fffffff\"/>" // External Memory - " <memory type=\"ram\" start=\"0xC0000000\" length=\"0x1fffffff\"/>" // External device - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1ff00000\" length=\"0x20000\"/>" // bootrom - "</memory-map>"; - -static const char* const memory_map_template_F4_DE = - "<?xml version=\"1.0\"?>" - "<!DOCTYPE memory-map PUBLIC \"+//IDN gnu.org//DTD GDB Memory Map V1.0//EN\"" - " \"http://sourceware.org/gdb/gdb-memory-map.dtd\">" - "<memory-map>" - " <memory type=\"rom\" start=\"0x00000000\" length=\"0x80000\"/>" // code = sram, bootrom or flash; flash is bigger - " <memory type=\"ram\" start=\"0x20000000\" length=\"0x18000\"/>" // sram - " <memory type=\"flash\" start=\"0x08000000\" length=\"0x10000\">" // Sectors 0..3 - " <property name=\"blocksize\">0x4000</property>" // 16kB - " </memory>" - " <memory type=\"flash\" start=\"0x08010000\" length=\"0x10000\">" // Sector 4 - " <property name=\"blocksize\">0x10000</property>" // 64kB - " </memory>" - " <memory type=\"flash\" start=\"0x08020000\" length=\"0x60000\">" // Sectors 5..7 - " <property name=\"blocksize\">0x20000</property>" // 128kB - " </memory>" - " <memory type=\"ram\" start=\"0x40000000\" length=\"0x1fffffff\"/>" // peripheral regs - " <memory type=\"ram\" start=\"0xe0000000\" length=\"0x1fffffff\"/>" // cortex regs - " <memory type=\"rom\" start=\"0x1fff0000\" length=\"0x7800\"/>" // bootrom - " <memory type=\"rom\" start=\"0x1fff7800\" length=\"0x210\"/>" // otp - " <memory type=\"rom\" start=\"0x1fffc000\" length=\"0x10\"/>" // option byte area - "</memory-map>"; - char* make_memory_map(stlink_t *sl) { // this will be freed in serve() const uint32_t sz = 4096; |