|
From: openocd-gerrit <ope...@us...> - 2023-01-15 15:04:43
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Main OpenOCD repository".
The branch, master has been updated
via 63336f4aaf672899db78de4ce6781c9451851472 (commit)
from 21b14028ad7565f4916ae05a6c28b465eceb9150 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 63336f4aaf672899db78de4ce6781c9451851472
Author: Jian-Hong Pan <chi...@gm...>
Date: Thu Nov 10 00:14:10 2022 +0800
flash/nor, contrib/loaders: move numicro M4 write assembly to contrib/loaders
Simply move numicro M4 flash write assembly to contrib/loaders. Also,
add corresponding Makefile and generated numicro_m4.inc.
Signed-off-by: Jian-Hong Pan <chi...@gm...>
Change-Id: I22b8be0a245857335b11bd0b538db415fc34748d
Reviewed-on: https://review.openocd.org/c/openocd/+/7343
Tested-by: jenkins
Reviewed-by: Antonio Borneo <bor...@gm...>
diff --git a/contrib/loaders/flash/numicro_m4/Makefile b/contrib/loaders/flash/numicro_m4/Makefile
new file mode 100644
index 000000000..0f9c507cd
--- /dev/null
+++ b/contrib/loaders/flash/numicro_m4/Makefile
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+BIN2C = ../../../../src/helper/bin2char.sh
+
+CROSS_COMPILE ?= arm-none-eabi-
+
+CC=$(CROSS_COMPILE)gcc
+OBJCOPY=$(CROSS_COMPILE)objcopy
+OBJDUMP=$(CROSS_COMPILE)objdump
+
+
+AFLAGS = -static -nostartfiles -mlittle-endian -mcpu=cortex-m4 -Wa,-EL
+
+all: numicro_m4.inc
+
+.PHONY: clean
+
+%.elf: %.S
+ $(CC) $(AFLAGS) $< -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_m4/numicro_m4.S b/contrib/loaders/flash/numicro_m4/numicro_m4.S
new file mode 100644
index 000000000..6c59cca57
--- /dev/null
+++ b/contrib/loaders/flash/numicro_m4/numicro_m4.S
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+/***************************************************************************
+ * Copyright (C) 2017 Zale Yu *
+ * CY...@nu... *
+ * *
+ * Copyright (C) 2022 Jian-Hong Pan *
+ * chi...@gm... *
+ ***************************************************************************/
+
+ .text
+ .cpu cortex-m4
+ .thumb
+
+ /* 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++){ */
+ mov r4, r0
+ mov r3, #0
+.L2:
+ sub r5, r1, r0
+ add r7, r4, r5
+ 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_m4/numicro_m4.inc b/contrib/loaders/flash/numicro_m4/numicro_m4.inc
new file mode 100644
index 000000000..c3e605292
--- /dev/null
+++ b/contrib/loaders/flash/numicro_m4/numicro_m4.inc
@@ -0,0 +1,5 @@
+/* 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 2bba7b746..cbd2450b0 100644
--- a/src/flash/nor/numicro.c
+++ b/src/flash/nor/numicro.c
@@ -740,62 +740,7 @@ static const uint8_t numicro_flash_write_code[] = {
};
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 */
+#include "../../../contrib/loaders/flash/numicro_m4/numicro_m4.inc"
};
/* Program LongWord Block Write */
-----------------------------------------------------------------------
Summary of changes:
.../loaders/flash/{nrf5 => numicro_m4}/Makefile | 7 ++-
contrib/loaders/flash/numicro_m4/numicro_m4.S | 70 ++++++++++++++++++++++
contrib/loaders/flash/numicro_m4/numicro_m4.inc | 5 ++
src/flash/nor/numicro.c | 57 +-----------------
4 files changed, 80 insertions(+), 59 deletions(-)
copy contrib/loaders/flash/{nrf5 => numicro_m4}/Makefile (76%)
create mode 100644 contrib/loaders/flash/numicro_m4/numicro_m4.S
create mode 100644 contrib/loaders/flash/numicro_m4/numicro_m4.inc
hooks/post-receive
--
Main OpenOCD repository
|