This is an automated email from Gerrit.

Paul Fertser (fercer...@gmail.com) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/3802

-- gerrit

commit d55f14f3eea56b467f7ca1c955f687e4ebfa871d
Author: Paul Fertser <fercer...@gmail.com>
Date:   Wed Oct 5 19:12:12 2016 +0300

    flash: nor: lpc2000: handle lpc11xx parts with more than 96k memory
    
    Known big flash parts such as LPC11u68/e68 have a non-uniform memory
    organisation, the first 24 sectors are 4k, the rest are 32k.
    
    Change-Id: Icf515152dfc54ec0ca187561d2d63088b9640f14
    Signed-off-by: Paul Fertser <fercer...@gmail.com>

diff --git a/src/flash/nor/lpc2000.c b/src/flash/nor/lpc2000.c
index 76cd86b..190684a 100644
--- a/src/flash/nor/lpc2000.c
+++ b/src/flash/nor/lpc2000.c
@@ -259,6 +259,8 @@
 
 #define IAP_CODE_LEN 0x34
 
+#define LPC11xx_REG_SECTORS    24
+
 typedef enum {
        lpc2000_v1,
        lpc2000_v2,
@@ -554,14 +556,21 @@ static int lpc2000_build_sector_list(struct flash_bank 
*bank)
                        exit(-1);
                }
                lpc2000_info->cmd51_max_buffer = 512; /* smallest MCU in the 
series, LPC1110, has 1 kB of SRAM */
-               bank->num_sectors = bank->size / 4096;
+               unsigned int large_sectors = 0;
+               unsigned int normal_sectors = bank->size / 4096;
+
+               if (normal_sectors > LPC11xx_REG_SECTORS) {
+                       large_sectors = (normal_sectors - LPC11xx_REG_SECTORS) 
/ 8;
+                       normal_sectors = LPC11xx_REG_SECTORS;
+               }
+
+               bank->num_sectors = normal_sectors + large_sectors;
 
                bank->sectors = malloc(sizeof(struct flash_sector) * 
bank->num_sectors);
 
                for (int i = 0; i < bank->num_sectors; i++) {
                        bank->sectors[i].offset = offset;
-                       /* all sectors are 4kB-sized */
-                       bank->sectors[i].size = 4 * 1024;
+                       bank->sectors[i].size = (i < LPC11xx_REG_SECTORS ? 4 : 
32) * 1024;
                        offset += bank->sectors[i].size;
                        bank->sectors[i].is_erased = -1;
                        bank->sectors[i].is_protected = 1;

-- 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to