From af225b39c9abd1211962ba79bd3e4c8286efebe2 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Wed, 12 Oct 2011 13:51:19 +0200 Subject: [PATCH] The Flash Size Register is different for the different chips, so add it to the chip parameters Signed-off-by: Karl Palsson --- gdbserver/gdb-server.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/gdbserver/gdb-server.c b/gdbserver/gdb-server.c index a5b1036..1cce453 100644 --- a/gdbserver/gdb-server.c +++ b/gdbserver/gdb-server.c @@ -35,31 +35,32 @@ static const char* current_memory_map = NULL; struct chip_params { uint32_t chip_id; char* description; + uint32_t flash_size_reg; uint32_t max_flash_size, flash_pagesize; uint32_t sram_size; uint32_t bootrom_base, bootrom_size; } const devices[] = { - { 0x410, "F1 Medium-density device", + { 0x410, "F1 Medium-density device", 0x1ffff7e0, 0x20000, 0x400, 0x5000, 0x1ffff000, 0x800 }, // table 2, pm0063 - { 0x411, "F2 device", + { 0x411, "F2 device", 0, /* No flash size register found in the docs*/ 0x100000, 0x20000, 0x20000, 0x1ff00000, 0x7800 }, // table 1, pm0059 - { 0x412, "F1 Low-density device", + { 0x412, "F1 Low-density device", 0x1ffff7e0, 0x8000, 0x400, 0x2800, 0x1ffff000, 0x800 }, // table 1, pm0063 - { 0x413, "F4 device", + { 0x413, "F4 device", 0x1FFF7A10, 0x100000, 0x20000, 0x20000, 0x1ff00000, 0x7800 }, // table 1, pm0081 - { 0x414, "F1 High-density device", + { 0x414, "F1 High-density device", 0x1ffff7e0, 0x80000, 0x800, 0x10000, 0x1ffff000, 0x800 }, // table 3 pm0063 // This ignores the EEPROM! (and uses the page erase size, // not the sector write protection...) - { 0x416, "L1 Med-density device", // table 1, pm0062 + { 0x416, "L1 Med-density device", 0x1FF8004C, // table 1, pm0062 0x20000, 0x100, 0x4000, 0x1ff00000, 0x1000 }, - { 0x418, "F1 Connectivity line device", + { 0x418, "F1 Connectivity line device", 0x1ffff7e0, 0x40000, 0x800, 0x10000, 0x1fffb000, 0x4800 }, - { 0x420, "F1 Medium-density value line device", + { 0x420, "F1 Medium-density value line device", 0x1ffff7e0, 0x20000, 0x400, 0x2000, 0x1ffff000, 0x800 }, - { 0x428, "F1 High-density value line device", + { 0x428, "F1 High-density value line device", 0x1ffff7e0, 0x80000, 0x800, 0x8000, 0x1ffff000, 0x800 }, - { 0x430, "F1 XL-density device", // pm0068 + { 0x430, "F1 XL-density device", 0x1ffff7e0, // pm0068 0x100000, 0x800, 0x18000, 0x1fffe000, 0x1800 }, { 0 } }; @@ -106,7 +107,7 @@ int main(int argc, char** argv) { uint32_t flash_size; - stlink_read_mem32(sl, 0x1FFFF7E0, 4); // FIXME - that's never going to work! + stlink_read_mem32(sl, params->flash_size_reg, 4); flash_size = sl->q_buf[0] | (sl->q_buf[1] << 8); printf("Flash size is %d KiB.\n", flash_size); -- 2.30.2