From ad2470d0eb73f3f3274fab68af28dbeca6546ae1 Mon Sep 17 00:00:00 2001 From: Peter Zotov Date: Fri, 8 Apr 2011 19:08:15 +0400 Subject: [PATCH] Use real flash size from system ROM. --- src/gdb-server.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/gdb-server.c b/src/gdb-server.c index 777da3b..6b57e78 100644 --- a/src/gdb-server.c +++ b/src/gdb-server.c @@ -24,7 +24,7 @@ static const char* current_memory_map = NULL; struct chip_params { uint32_t chip_id; char* description; - uint32_t flash_size, flash_pagesize; + uint32_t max_flash_size, flash_pagesize; uint32_t sram_size; uint32_t bootrom_base, bootrom_size; } const devices[] = { @@ -46,7 +46,7 @@ struct chip_params { }; int serve(struct stlink* sl, int port); -char* make_memory_map(const struct chip_params *params); +char* make_memory_map(const struct chip_params *params, uint16_t flash_size); int main(int argc, char** argv) { if(argc != 3) { @@ -84,10 +84,17 @@ int main(int argc, char** argv) { } printf("Device connected: %s\n", params->description); - printf("Device parameters: SRAM: 0x%x bytes, Flash: 0x%x bytes in pages of %x bytes\n", - params->sram_size, params->flash_size, params->flash_pagesize); + printf("Device parameters: SRAM: 0x%x bytes, Flash: up to 0x%x bytes in pages of 0x%x bytes\n", + params->sram_size, params->max_flash_size, params->flash_pagesize); - current_memory_map = make_memory_map(params); + uint16_t flash_size; + + stlink_read_mem32(sl, 0x1FFFF7E0, 4); + flash_size = sl->q_buf[0] | (sl->q_buf[1] << 8); + + printf("Flash size is %d KiB.\n", flash_size); + + current_memory_map = make_memory_map(params, flash_size * 0x400); int port = atoi(argv[1]); @@ -114,15 +121,15 @@ static const char* const memory_map_template = " " // option byte area ""; -char* make_memory_map(const struct chip_params *params) { +char* make_memory_map(const struct chip_params *params, uint16_t flash_size) { /* This will be freed in serve() */ char* map = malloc(4096); map[0] = '\0'; snprintf(map, 4096, memory_map_template, - params->flash_size, + flash_size, params->sram_size, - params->flash_size, params->flash_pagesize, + flash_size, params->flash_pagesize, params->bootrom_base, params->bootrom_size); return map; -- 2.39.5