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, ®_stat); + retval = target_read_u32(target, NUMICRO_SYSCLK_AHBCLK - m_addr_minus_offset, ®_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, ®_stat); + retval = target_read_u32(target, NUMICRO_FLASH_ISPCON - m_addr_minus_offset, ®_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
