This is an automated email from Gerrit.

Saravanan Sekar ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/5648

-- gerrit

commit 529977057f1acd71db7e3e396d1411af4dff35e7
Author: Saravanan Sekar <[email protected]>
Date:   Mon May 4 15:42:41 2020 +0200

    flash/nor, contrib/loaders: add numicro loaders Makefile and generated .inc
    
    Flash loaders refactored to the new style - use generated .inc
    instead of hexadecimal machine code in the flash driver source.
    
    Change-Id: I54d43c90a14bf8cc2735742a79ab7dd3b61f9a0a
    Signed-off-by: Saravanan Sekar <[email protected]>

diff --git a/contrib/loaders/flash/numicro/Makefile 
b/contrib/loaders/flash/numicro/Makefile
new file mode 100644
index 0000000..af56383
--- /dev/null
+++ b/contrib/loaders/flash/numicro/Makefile
@@ -0,0 +1,28 @@
+BIN2C = ../../../../src/helper/bin2char.sh
+
+CROSS_COMPILE ?= arm-none-eabi-
+
+CC=$(CROSS_COMPILE)gcc
+OBJCOPY=$(CROSS_COMPILE)objcopy
+OBJDUMP=$(CROSS_COMPILE)objdump
+
+CFLAGS = -static -nostartfiles -mlittle-endian -Wa,-EL
+
+all: numicro_m0.inc numicro_m4.inc
+
+.PHONY: clean
+
+%.elf: %.S
+       $(CC) $(CFLAGS) $< -o $@
+
+%.lst: %.elf
+       $(OBJDUMP) -S $< > $@
+
+%.bin: %.elf
+       $(OBJCOPY) -Obinary $< $@
+
+%.inc: %.bin
+       $(BIN2C) < $< > $@
+
+clean:
+       -rm -f *.elf *.lst *.bin *.inc
diff --git a/contrib/loaders/flash/numicro/numicro_m0.S 
b/contrib/loaders/flash/numicro/numicro_m0.S
new file mode 100644
index 0000000..ace85ff
--- /dev/null
+++ b/contrib/loaders/flash/numicro/numicro_m0.S
@@ -0,0 +1,93 @@
+/***************************************************************************
+ *   Copyright (C) 2011 by James K. Larson                                 *
+ *   [email protected]                                                  *
+ *                                                                         *
+ *   Copyright (C) 2013 Cosmin Gorgovan                                    *
+ *   cosmin [at] linux-geek [dot] org                                      *
+ *                                                                         *
+ *   Copyright (C) 2014 Pawel Si                                           *
+ *   [email protected]                                              *
+ *                                                                         *
+ *   Copyright (C) 2015 Nemui Trinomius                                    *
+ *   [email protected]                                        *
+ *                                                                         *
+ *   Copyright (C) 2017 Zale Yu                                            *
+ *   [email protected]                                                      *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ ***************************************************************************/
+
+       .text
+       .syntax unified
+       .cpu cortex-m0
+       .thumb
+
+       /* Params:
+        * r0 - workarea buffer / result
+        * r1 - target address
+        * r2 - wordcount
+        * Clobbered:
+        * r4 - tmp
+        * r5 - tmp
+        * r6 - tmp
+        * r7 - tmp
+        */
+
+       .thumb_func
+       .global _start
+       .L1:
+       /* for(register uint32_t i=0;i<wcount;i++) */
+       mov    r4, r0
+       mov    r3, #0
+       .L2:
+       sub    r5, r1, r0
+       add    r7, r4, r7
+       cmp    r3, r2
+       beq    .L7
+       .L4:
+       /* NUMICRO_FLASH_ISPADR = faddr; */
+       ldr     r6, .L8
+       str     r7, [r6]
+       /* NUMICRO_FLASH_ISPDAT = *pLW; */
+       ldmia   r4!, {r7}
+       ldr     r5, .L8+4
+       str     r7, [r5]
+       faddr += 4;
+       /* pLW++; */
+       /*  Trigger write action  */
+       /* NUMICRO_FLASH_ISPTRG = ISPTRG_ISPGO; */
+       ldr     r5, .L8+8
+       mov     r6, #1
+       str     r6, [r5]
+       .L3:
+       /* while((NUMICRO_FLASH_ISPTRG & ISPTRG_ISPGO) == ISPTRG_ISPGO){}; */
+       ldr     r7, [r5]
+       lsl     r7, r7, #31
+       bmi     .L3
+
+       add     r3, r3, #1
+       b       .L2
+       .L7:
+       /* return (NUMICRO_FLASH_ISPCON & ISPCON_ISPFF); */
+       ldr     r3, .L8+12
+       ldr     r0, [r3]
+       mov     r1, #64
+       and     r0, r1
+       .L9:
+       bkpt    #0
+       .L8:
+       .word   1342226436
+       .word   1342226440
+       .word   1342226448
+       .word   1342226432
diff --git a/contrib/loaders/flash/numicro/numicro_m0.inc 
b/contrib/loaders/flash/numicro/numicro_m0.inc
new file mode 100644
index 0000000..0b38424
--- /dev/null
+++ b/contrib/loaders/flash/numicro/numicro_m0.inc
@@ -0,0 +1,7 @@
+/* Autogenerated with ../../../../src/helper/bin2char.sh */
+0x04, 0x1C, 0x00, 0x23, 0x0D, 0x1A, 0x67, 0x19, 0x93, 0x42, 0x0C, 0xD0,
+0x08, 0x4E, 0x37, 0x60, 0x80, 0xCC, 0x08, 0x4D, 0x2F, 0x60, 0x08, 0x4D,
+0x01, 0x26, 0x2E, 0x60, 0x2F, 0x68, 0xFF, 0x07, 0xFC, 0xD4, 0x01, 0x33,
+0xEE, 0xE7, 0x05, 0x4B, 0x18, 0x68, 0x40, 0x21, 0x08, 0x40, 0x00, 0xBE,
+0x04, 0xC0, 0x00, 0x50, 0x08, 0xC0, 0x00, 0x50, 0x10, 0xC0, 0x00, 0x50,
+0x00, 0xC0, 0x00, 0x50
diff --git a/contrib/loaders/flash/numicro/numicro_m4.S 
b/contrib/loaders/flash/numicro/numicro_m4.S
new file mode 100644
index 0000000..a245771
--- /dev/null
+++ b/contrib/loaders/flash/numicro/numicro_m4.S
@@ -0,0 +1,93 @@
+/***************************************************************************
+ *   Copyright (C) 2011 by James K. Larson                                 *
+ *   [email protected]                                                  *
+ *                                                                         *
+ *   Copyright (C) 2013 Cosmin Gorgovan                                    *
+ *   cosmin [at] linux-geek [dot] org                                      *
+ *                                                                         *
+ *   Copyright (C) 2014 Pawel Si                                           *
+ *   [email protected]                                              *
+ *                                                                         *
+ *   Copyright (C) 2015 Nemui Trinomius                                    *
+ *   [email protected]                                        *
+ *                                                                         *
+ *   Copyright (C) 2017 Zale Yu                                            *
+ *   [email protected]                                                      *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ ***************************************************************************/
+
+       .text
+       .syntax unified
+       .cpu cortex-m0
+       .thumb
+
+       /* Params:
+        * r0 - workarea buffer / result
+        * r1 - target address
+        * r2 - wordcount
+        * Clobbered:
+        * r4 - tmp
+        * r5 - tmp
+        * r6 - tmp
+        * r7 - tmp
+        */
+
+       .thumb_func
+       .global _start
+       .L1:
+       /* for(register uint32_t i=0;i<wcount;i++) */
+       mov    r4, r0
+       mov    r3, #0
+       .L2:
+       sub    r5, r1, r0
+       add    r7, r4, r7
+       cmp    r3, r2
+       beq    .L7
+       .L4:
+       /* NUMICRO_FLASH_ISPADR = faddr; */
+       ldr     r6, .L8
+       str     r7, [r6]
+       /* NUMICRO_FLASH_ISPDAT = *pLW; */
+       ldmia   r4!, {r7}
+       ldr     r5, .L8+4
+       str     r7, [r5]
+       /* faddr += 4; */
+       /* pLW++; */
+       /*  Trigger write action  */
+       /* NUMICRO_FLASH_ISPTRG = ISPTRG_ISPGO; */
+       ldr     r5, .L8+8
+       mov     r6, #1
+       str     r6, [r5]
+       .L3:
+       /* while((NUMICRO_FLASH_ISPTRG & ISPTRG_ISPGO) == ISPTRG_ISPGO){}; */
+       ldr     r7, [r5]
+       lsl     r7, r7, #31
+       bmi     .L3
+
+       add     r3, r3, #1
+       b       .L2
+       .L7:
+       /* return (NUMICRO_FLASH_ISPCON & ISPCON_ISPFF); */
+       ldr     r3, .L8+12
+       ldr     r0, [r3]
+       mov     r1, #64
+       and     r0, r1
+       .L9:
+       bkpt    #0
+       .L8:
+       .word   0x4000C004
+       .word   0x4000C008
+       .word   0x4000C010
+       .word   0x4000C000
diff --git a/contrib/loaders/flash/numicro/numicro_m4.inc 
b/contrib/loaders/flash/numicro/numicro_m4.inc
new file mode 100644
index 0000000..7021843
--- /dev/null
+++ b/contrib/loaders/flash/numicro/numicro_m4.inc
@@ -0,0 +1,7 @@
+/* Autogenerated with ../../../../src/helper/bin2char.sh */
+0x04, 0x1C, 0x00, 0x23, 0x0D, 0x1A, 0x67, 0x19, 0x93, 0x42, 0x0C, 0xD0,
+0x08, 0x4E, 0x37, 0x60, 0x80, 0xCC, 0x08, 0x4D, 0x2F, 0x60, 0x08, 0x4D,
+0x01, 0x26, 0x2E, 0x60, 0x2F, 0x68, 0xFF, 0x07, 0xFC, 0xD4, 0x01, 0x33,
+0xEE, 0xE7, 0x05, 0x4B, 0x18, 0x68, 0x40, 0x21, 0x08, 0x40, 0x00, 0xBE,
+0x04, 0xC0, 0x00, 0x40, 0x08, 0xC0, 0x00, 0x40, 0x10, 0xC0, 0x00, 0x40,
+0x00, 0xC0, 0x00, 0x40
diff --git a/src/flash/nor/numicro.c b/src/flash/nor/numicro.c
index f7c5e15..1c7330d 100644
--- a/src/flash/nor/numicro.c
+++ b/src/flash/nor/numicro.c
@@ -136,7 +136,7 @@ struct numicro_cpu_type {
         {NUMICRO_LDROM_BASE,  (ldrom_size)}, \
         {NUMICRO_CONFIG_BASE, (config_size)} }
 
-static const struct numicro_cpu_type NuMicroParts[] = {
+static const struct numicro_cpu_type numicro_parts[] = {
        /*PART NO*/     /*PART ID*/ /*Banks*/
 
        /* M051AN */
@@ -630,8 +630,8 @@ struct  numicro_flash_bank {
 };
 
 /* Private variables */
-uint32_t m_pageSize = NUMICRO_PAGESIZE;
-uint32_t m_addressMinusOffset;
+static uint32_t m_page_size = NUMICRO_PAGESIZE;
+static uint32_t m_addr_minus_offset;
 
 /* Private methods */
 static int numicro_get_arm_arch(struct target *target)
@@ -640,12 +640,12 @@ static int numicro_get_arm_arch(struct target *target)
 
        if (!armv7m->arm.is_armv6m) {
                LOG_DEBUG("NuMicro arm architecture: armv7m\n");
-               m_pageSize = NUMICRO_PAGESIZE * 4;
-               m_addressMinusOffset = 0x10000000;
+               m_page_size = NUMICRO_PAGESIZE * 4;
+               m_addr_minus_offset = 0x10000000;
        } else {
                LOG_DEBUG("NuMicro arm architecture: armv6m\n");
-               m_pageSize = NUMICRO_PAGESIZE;
-               m_addressMinusOffset = 0x0;
+               m_page_size = NUMICRO_PAGESIZE;
+               m_addr_minus_offset = 0x0;
        }
 
        return ERROR_OK;
@@ -658,25 +658,25 @@ static int numicro_reg_unlock(struct target *target)
        int retval = ERROR_OK;
 
        /* Check to see if NUC is register unlocked or not */
-       retval = target_read_u32(target, NUMICRO_SYS_WRPROT - 
m_addressMinusOffset, &is_protected);
+       retval = target_read_u32(target, NUMICRO_SYS_WRPROT - 
m_addr_minus_offset, &is_protected);
        if (retval != ERROR_OK)
                return retval;
 
        LOG_DEBUG("protected = 0x%08" PRIx32 "", is_protected);
        if (is_protected == 0) {        /* means protected - so unlock it */
                /* unlock flash registers */
-               retval = target_write_u32(target, NUMICRO_SYS_WRPROT - 
m_addressMinusOffset, REG_KEY1);
+               retval = target_write_u32(target, NUMICRO_SYS_WRPROT - 
m_addr_minus_offset, REG_KEY1);
                if (retval != ERROR_OK)
                        return retval;
-               retval = target_write_u32(target, NUMICRO_SYS_WRPROT - 
m_addressMinusOffset, REG_KEY2);
+               retval = target_write_u32(target, NUMICRO_SYS_WRPROT - 
m_addr_minus_offset, REG_KEY2);
                if (retval != ERROR_OK)
                        return retval;
-               retval = target_write_u32(target, NUMICRO_SYS_WRPROT - 
m_addressMinusOffset, REG_KEY3);
+               retval = target_write_u32(target, NUMICRO_SYS_WRPROT - 
m_addr_minus_offset, REG_KEY3);
                if (retval != ERROR_OK)
                        return retval;
        }
        /* Check that unlock worked */
-       retval = target_read_u32(target, NUMICRO_SYS_WRPROT - 
m_addressMinusOffset, &is_protected);
+       retval = target_read_u32(target, NUMICRO_SYS_WRPROT - 
m_addr_minus_offset, &is_protected);
        if (retval != ERROR_OK)
                return retval;
 
@@ -704,27 +704,27 @@ static int numicro_init_isp(struct target *target)
                return retval;
 
        /* Enable ISP/SRAM/TICK Clock */
-       retval = target_read_u32(target, NUMICRO_SYSCLK_AHBCLK - 
m_addressMinusOffset, &reg_stat);
+       retval = target_read_u32(target, NUMICRO_SYSCLK_AHBCLK - 
m_addr_minus_offset, &reg_stat);
        if (retval != ERROR_OK)
                return retval;
 
        reg_stat |= AHBCLK_ISP_EN | AHBCLK_SRAM_EN | AHBCLK_TICK_EN;
-       retval = target_write_u32(target, NUMICRO_SYSCLK_AHBCLK - 
m_addressMinusOffset, reg_stat);
+       retval = target_write_u32(target, NUMICRO_SYSCLK_AHBCLK - 
m_addr_minus_offset, reg_stat);
        if (retval != ERROR_OK)
                return retval;
 
        /* Enable ISP */
-       retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - 
m_addressMinusOffset, &reg_stat);
+       retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - 
m_addr_minus_offset, &reg_stat);
        if (retval != ERROR_OK)
                return retval;
 
        reg_stat |= ISPCON_ISPFF | ISPCON_LDUEN | ISPCON_APUEN | ISPCON_CFGUEN 
| ISPCON_ISPEN;
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPCON - 
m_addressMinusOffset, reg_stat);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPCON - 
m_addr_minus_offset, reg_stat);
        if (retval != ERROR_OK)
                return retval;
 
        /* Write one to undocumented flash control register */
-       retval = target_write_u32(target, NUMICRO_FLASH_CHEAT - 
m_addressMinusOffset, 1);
+       retval = target_write_u32(target, NUMICRO_FLASH_CHEAT - 
m_addr_minus_offset, 1);
        if (retval != ERROR_OK)
                return retval;
 
@@ -736,26 +736,26 @@ static uint32_t numicro_fmc_cmd(struct target *target, 
uint32_t cmd, uint32_t ad
        uint32_t timeout, status;
        int retval = ERROR_OK;
 
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPCMD - 
m_addressMinusOffset, cmd);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPCMD - 
m_addr_minus_offset, cmd);
        if (retval != ERROR_OK)
                return retval;
 
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPDAT - 
m_addressMinusOffset, wdata);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPDAT - 
m_addr_minus_offset, wdata);
        if (retval != ERROR_OK)
                return retval;
 
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPADR - 
m_addressMinusOffset, addr);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPADR - 
m_addr_minus_offset, addr);
        if (retval != ERROR_OK)
                return retval;
 
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addressMinusOffset, ISPTRG_ISPGO);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addr_minus_offset, ISPTRG_ISPGO);
        if (retval != ERROR_OK)
                return retval;
 
        /* Wait for busy to clear - check the GO flag */
        timeout = 100;
        for (;;) {
-               retval = target_read_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addressMinusOffset, &status);
+               retval = target_read_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addr_minus_offset, &status);
                if (retval != ERROR_OK)
                        return retval;
                        LOG_DEBUG("status: 0x%" PRIx32 "", status);
@@ -768,132 +768,13 @@ static uint32_t numicro_fmc_cmd(struct target *target, 
uint32_t cmd, uint32_t ad
                busy_sleep(1);  /* can use busy sleep for short times. */
        }
 
-       retval = target_read_u32(target, NUMICRO_FLASH_ISPDAT - 
m_addressMinusOffset, rdata);
+       retval = target_read_u32(target, NUMICRO_FLASH_ISPDAT - 
m_addr_minus_offset, rdata);
        if (retval != ERROR_OK)
                return retval;
 
        return ERROR_OK;
 }
 
-/* NuMicro Program-LongWord Microcodes */
-static const uint8_t numicro_flash_write_code[] = {
-       /* Params:
-        * r0 - workarea buffer / result
-        * r1 - target address
-        * r2 - wordcount
-        * Clobbered:
-        * r4 - tmp
-        * r5 - tmp
-        * r6 - tmp
-        * r7 - tmp
-        */
-
-       /* .L1: */
-       /* for(register uint32_t i=0;i<wcount;i++) */
-       0x04, 0x1C,                             /* mov    r4, r0          */
-       0x00, 0x23,                             /* mov    r3, #0          */
-       /* .L2: */
-       0x0D, 0x1A,                             /* sub    r5, r1, r0      */
-       0x67, 0x19,                             /* add    r7, r4, r7      */
-       0x93, 0x42,                             /* cmp    r3, r2                
  */
-       0x0C, 0xD0,                             /* beq    .L7             */
-       /* .L4: */
-       /* NUMICRO_FLASH_ISPADR = faddr; */
-       0x08, 0x4E,                             /* ldr  r6, .L8           */
-       0x37, 0x60,                             /* str  r7, [r6]          */
-       /* NUMICRO_FLASH_ISPDAT = *pLW; */
-       0x80, 0xCC,                             /* ldmia        r4!, {r7}     */
-       0x08, 0x4D,                             /* ldr  r5, .L8+4         */
-       0x2F, 0x60,                             /* str  r7, [r5]                
  */
-       /* faddr += 4; */
-       /* pLW++; */
-       /*  Trigger write action  */
-       /* NUMICRO_FLASH_ISPTRG = ISPTRG_ISPGO; */
-       0x08, 0x4D,                             /* ldr  r5, .L8+8         */
-       0x01, 0x26,                             /* mov  r6, #1            */
-       0x2E, 0x60,                             /* str  r6, [r5]          */
-       /* .L3: */
-       /* while((NUMICRO_FLASH_ISPTRG & ISPTRG_ISPGO) == ISPTRG_ISPGO){}; */
-       0x2F, 0x68,                             /* ldr  r7, [r5]          */
-       0xFF, 0x07,                             /* lsl  r7, r7, #31       */
-       0xFC, 0xD4,                             /* bmi  .L3               */
-
-       0x01, 0x33,                             /* add  r3, r3, #1        */
-       0xEE, 0xE7,                             /* b    .L2               */
-       /* .L7: */
-       /* return (NUMICRO_FLASH_ISPCON & ISPCON_ISPFF); */
-       0x05, 0x4B,                             /* ldr  r3, .L8+12        */
-       0x18, 0x68,                             /* ldr  r0, [r3]          */
-       0x40, 0x21,                             /* mov  r1, #64           */
-       0x08, 0x40,                             /* and  r0, r1            */
-       /* .L9: */
-       0x00, 0xBE,                             /* bkpt    #0             */
-       /* .L8: */
-       0x04, 0xC0, 0x00, 0x50,/* .word 1342226436    */
-       0x08, 0xC0, 0x00, 0x50,/* .word 1342226440    */
-       0x10, 0xC0, 0x00, 0x50,/* .word 1342226448    */
-       0x00, 0xC0, 0x00, 0x50 /* .word 1342226432    */
-};
-
-static const uint8_t numicro_M4_flash_write_code[] = {
-       /* Params:
-       * r0 - workarea buffer / result
-       * r1 - target address
-       * r2 - wordcount
-       * Clobbered:
-       * r4 - tmp
-       * r5 - tmp
-       * r6 - tmp
-       * r7 - tmp
-       */
-
-       /* .L1: */
-       /* for(register uint32_t i=0;i<wcount;i++) */
-       0x04, 0x1C,                             /* mov    r4, r0          */
-       0x00, 0x23,                             /* mov    r3, #0          */
-       /* .L2: */
-       0x0D, 0x1A,                             /* sub    r5, r1, r0      */
-       0x67, 0x19,                             /* add    r7, r4, r7      */
-       0x93, 0x42,                             /* cmp    r3, r2                
  */
-       0x0C, 0xD0,                             /* beq    .L7             */
-       /* .L4: */
-       /* NUMICRO_FLASH_ISPADR = faddr; */
-       0x08, 0x4E,                             /* ldr  r6, .L8           */
-       0x37, 0x60,                             /* str  r7, [r6]          */
-       /* NUMICRO_FLASH_ISPDAT = *pLW; */
-       0x80, 0xCC,                             /* ldmia        r4!, {r7}     */
-       0x08, 0x4D,                             /* ldr  r5, .L8+4         */
-       0x2F, 0x60,                             /* str  r7, [r5]                
  */
-       /* faddr += 4; */
-       /* pLW++; */
-       /*  Trigger write action  */
-       /* NUMICRO_FLASH_ISPTRG = ISPTRG_ISPGO; */
-       0x08, 0x4D,                             /* ldr  r5, .L8+8         */
-       0x01, 0x26,                             /* mov  r6, #1            */
-       0x2E, 0x60,                             /* str  r6, [r5]          */
-       /* .L3: */
-       /* while((NUMICRO_FLASH_ISPTRG & ISPTRG_ISPGO) == ISPTRG_ISPGO){}; */
-       0x2F, 0x68,                             /* ldr  r7, [r5]          */
-       0xFF, 0x07,                             /* lsl  r7, r7, #31       */
-       0xFC, 0xD4,                             /* bmi  .L3               */
-
-       0x01, 0x33,                             /* add  r3, r3, #1        */
-       0xEE, 0xE7,                             /* b    .L2               */
-       /* .L7: */
-       /* return (NUMICRO_FLASH_ISPCON & ISPCON_ISPFF); */
-       0x05, 0x4B,                             /* ldr  r3, .L8+12        */
-       0x18, 0x68,                             /* ldr  r0, [r3]          */
-       0x40, 0x21,                             /* mov  r1, #64           */
-       0x08, 0x40,                             /* and  r0, r1            */
-       /* .L9: */
-       0x00, 0xBE,                             /* bkpt    #0             */
-       /* .L8: */
-       0x04, 0xC0, 0x00, 0x40,/* .word 0x4000C004    */
-       0x08, 0xC0, 0x00, 0x40,/* .word 0x4000C008    */
-       0x10, 0xC0, 0x00, 0x40,/* .word 0x4000C010    */
-       0x00, 0xC0, 0x00, 0x40 /* .word 0x4000C000    */
-};
-
 /* Program LongWord Block Write */
 static int numicro_writeblock(struct flash_bank *bank, const uint8_t *buffer,
                uint32_t offset, uint32_t count)
@@ -906,6 +787,13 @@ static int numicro_writeblock(struct flash_bank *bank, 
const uint8_t *buffer,
        struct reg_param reg_params[3];
        struct armv7m_algorithm armv7m_info;
        int retval = ERROR_OK;
+       static const uint8_t numicro_flash_write_code[] = {
+#include "../../../contrib/loaders/flash/numicro/numicro_m0.inc"
+       };
+
+       static const uint8_t numicro_M4_flash_write_code[] = {
+#include "../../../contrib/loaders/flash/numicro/numicro_m4.inc"
+       };
 
        /* Params:
         * r0 - workarea buffer / result
@@ -927,8 +815,9 @@ static int numicro_writeblock(struct flash_bank *bank, 
const uint8_t *buffer,
                LOG_WARNING("offset 0x%" PRIx32 " breaks required 2-byte 
alignment", offset);
                return ERROR_FLASH_DST_BREAKS_ALIGNMENT;
        }
+
        /* Difference between M0 and M4 */
-       if (m_pageSize == NUMICRO_PAGESIZE) {
+       if (m_page_size == NUMICRO_PAGESIZE) {
                /* allocate working area with flash programming code */
                if (target_alloc_working_area(target, 
sizeof(numicro_flash_write_code),
                        &write_algorithm) != ERROR_OK) {
@@ -955,7 +844,7 @@ static int numicro_writeblock(struct flash_bank *bank, 
const uint8_t *buffer,
                if (retval != ERROR_OK)
                        return retval;
 
-               buffer_size = m_pageSize;
+               buffer_size = m_page_size;
        }
 
        /* memory buffer */
@@ -1040,8 +929,8 @@ static int numicro_protect_check(struct flash_bank *bank)
                return retval;
 
        /* Read CONFIG0,CONFIG1 */
-       numicro_fmc_cmd(target, ISPCMD_READ, NUMICRO_CONFIG0 - 
m_addressMinusOffset, 0, &config[0]);
-       numicro_fmc_cmd(target, ISPCMD_READ, NUMICRO_CONFIG1 - 
m_addressMinusOffset, 0, &config[1]);
+       numicro_fmc_cmd(target, ISPCMD_READ, NUMICRO_CONFIG0 - 
m_addr_minus_offset, 0, &config[0]);
+       numicro_fmc_cmd(target, ISPCMD_READ, NUMICRO_CONFIG1 - 
m_addr_minus_offset, 0, &config[1]);
 
        LOG_DEBUG("CONFIG0: 0x%" PRIx32 ",CONFIG1: 0x%" PRIx32 "", config[0], 
config[1]);
 
@@ -1085,19 +974,19 @@ static int numicro_erase(struct flash_bank *bank, int 
first, int last)
        if (retval != ERROR_OK)
                return retval;
 
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPCMD - 
m_addressMinusOffset, ISPCMD_ERASE);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPCMD - 
m_addr_minus_offset, ISPCMD_ERASE);
        if (retval != ERROR_OK)
                return retval;
 
        for (i = first; i <= last; i++) {
                LOG_DEBUG("erasing sector %d at address 0x%" PRIx32 "", i,
                                 (uint32_t)(bank->base + 
bank->sectors[i].offset));
-               retval = target_write_u32(target, NUMICRO_FLASH_ISPADR - 
m_addressMinusOffset,
+               retval = target_write_u32(target, NUMICRO_FLASH_ISPADR - 
m_addr_minus_offset,
                                          bank->base + bank->sectors[i].offset);
                if (retval != ERROR_OK)
                        return retval;
 
-               retval = target_write_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addressMinusOffset,
+               retval = target_write_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addr_minus_offset,
                                          ISPTRG_ISPGO); /* This is the only 
bit available */
                if (retval != ERROR_OK)
                        return retval;
@@ -1105,7 +994,7 @@ static int numicro_erase(struct flash_bank *bank, int 
first, int last)
                /* wait for busy to clear - check the GO flag */
                timeout = 100;
                for (;;) {
-                       retval = target_read_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addressMinusOffset, &status);
+                       retval = target_read_u32(target, NUMICRO_FLASH_ISPTRG - 
m_addr_minus_offset, &status);
                        if (retval != ERROR_OK)
                                return retval;
                                LOG_DEBUG("status: 0x%" PRIx32 "", status);
@@ -1119,14 +1008,14 @@ static int numicro_erase(struct flash_bank *bank, int 
first, int last)
                }
 
                /* check for failure */
-               retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - 
m_addressMinusOffset, &status);
+               retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - 
m_addr_minus_offset, &status);
                if (retval != ERROR_OK)
                        return retval;
 
                if ((status & ISPCON_ISPFF) != 0) {
                        LOG_DEBUG("failure: 0x%" PRIx32 "", status);
                        /* if bit is set, then must write to it to clear it. */
-                       retval = target_write_u32(target, NUMICRO_FLASH_ISPCON 
- m_addressMinusOffset, (status | ISPCON_ISPFF));
+                       retval = target_write_u32(target, NUMICRO_FLASH_ISPCON 
- m_addr_minus_offset, (status | ISPCON_ISPFF));
                        if (retval != ERROR_OK)
                                return retval;
                } else {
@@ -1160,7 +1049,7 @@ static int numicro_write(struct flash_bank *bank, const 
uint8_t *buffer,
        if (retval != ERROR_OK)
                return retval;
 
-       retval = target_write_u32(target, NUMICRO_FLASH_ISPCMD - 
m_addressMinusOffset, ISPCMD_WRITE);
+       retval = target_write_u32(target, NUMICRO_FLASH_ISPCMD - 
m_addr_minus_offset, ISPCMD_WRITE);
        if (retval != ERROR_OK)
                return retval;
 
@@ -1186,20 +1075,20 @@ static int numicro_write(struct flash_bank *bank, const 
uint8_t *buffer,
                        uint8_t padding[4] = {0xff, 0xff, 0xff, 0xff};
                        memcpy(padding, buffer + i, MIN(4, count-i));
 
-                       retval = target_write_u32(target, NUMICRO_FLASH_ISPADR 
- m_addressMinusOffset, bank->base + offset + i);
+                       retval = target_write_u32(target, NUMICRO_FLASH_ISPADR 
- m_addr_minus_offset, bank->base + offset + i);
                        if (retval != ERROR_OK)
                                return retval;
-                       retval = target_write_memory(target, 
NUMICRO_FLASH_ISPDAT - m_addressMinusOffset, 4, 1, padding);
+                       retval = target_write_memory(target, 
NUMICRO_FLASH_ISPDAT - m_addr_minus_offset, 4, 1, padding);
                        if (retval != ERROR_OK)
                                return retval;
-                       retval = target_write_u32(target, NUMICRO_FLASH_ISPTRG 
- m_addressMinusOffset, ISPTRG_ISPGO);
+                       retval = target_write_u32(target, NUMICRO_FLASH_ISPTRG 
- m_addr_minus_offset, ISPTRG_ISPGO);
                        if (retval != ERROR_OK)
                                return retval;
 
                        /* wait for busy to clear - check the GO flag */
                        timeout = 100;
                        for (;;) {
-                               retval = target_read_u32(target, 
NUMICRO_FLASH_ISPTRG - m_addressMinusOffset, &status);
+                               retval = target_read_u32(target, 
NUMICRO_FLASH_ISPTRG - m_addr_minus_offset, &status);
                                if (retval != ERROR_OK)
                                        return retval;
                                        LOG_DEBUG("status: 0x%" PRIx32 "", 
status);
@@ -1216,13 +1105,13 @@ static int numicro_write(struct flash_bank *bank, const 
uint8_t *buffer,
        }
 
        /* check for failure */
-       retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - 
m_addressMinusOffset, &status);
+       retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - 
m_addr_minus_offset, &status);
        if (retval != ERROR_OK)
                return retval;
        if ((status & ISPCON_ISPFF) != 0) {
                LOG_DEBUG("failure: 0x%" PRIx32 "", status);
                /* if bit is set, then must write to it to clear it. */
-               retval = target_write_u32(target, NUMICRO_FLASH_ISPCON - 
m_addressMinusOffset, (status | ISPCON_ISPFF));
+               retval = target_write_u32(target, NUMICRO_FLASH_ISPCON - 
m_addr_minus_offset, (status | ISPCON_ISPFF));
                if (retval != ERROR_OK)
                        return retval;
        } else {
@@ -1242,7 +1131,7 @@ static int numicro_get_cpu_type(struct target *target, 
const struct numicro_cpu_
 
        numicro_get_arm_arch(target);
        /* Read NuMicro PartID */
-       retval = target_read_u32(target, NUMICRO_SYS_BASE - 
m_addressMinusOffset, &part_id);
+       retval = target_read_u32(target, NUMICRO_SYS_BASE - 
m_addr_minus_offset, &part_id);
        if (retval != ERROR_OK) {
                LOG_WARNING("NuMicro flash driver: Failed to Get PartID\n");
                return ERROR_FLASH_OPERATION_FAILED;
@@ -1250,9 +1139,9 @@ static int numicro_get_cpu_type(struct target *target, 
const struct numicro_cpu_
 
        LOG_INFO("Device ID: 0x%08" PRIx32 "", part_id);
        /* search part numbers */
-       for (size_t i = 0; i < sizeof(NuMicroParts) / sizeof(NuMicroParts[0]); 
i++) {
-               if (part_id == NuMicroParts[i].partid) {
-                       *cpu = &NuMicroParts[i];
+       for (size_t i = 0; i < sizeof(numicro_parts) / 
sizeof(numicro_parts[0]); i++) {
+               if (part_id == numicro_parts[i].partid) {
+                       *cpu = &numicro_parts[i];
                        LOG_INFO("Device Name: %s", (*cpu)->partname);
                        return ERROR_OK;
                }
@@ -1294,7 +1183,7 @@ static int numicro_probe(struct flash_bank *bank)
                return ERROR_FLASH_OPERATION_FAILED;
        }
 
-       num_pages = flash_size / m_pageSize;
+       num_pages = flash_size / m_page_size;
 
        bank->num_sectors = num_pages;
        bank->sectors = malloc(sizeof(struct flash_sector) * num_pages);
@@ -1302,10 +1191,10 @@ static int numicro_probe(struct flash_bank *bank)
 
        for (int i = 0; i < num_pages; i++) {
                bank->sectors[i].offset = offset;
-               bank->sectors[i].size = m_pageSize;
+               bank->sectors[i].size = m_page_size;
                bank->sectors[i].is_erased = -1;
                bank->sectors[i].is_protected = 0;
-               offset += m_pageSize;
+               offset += m_page_size;
        }
 
        struct numicro_flash_bank *numicro_info = bank->driver_priv;

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to