aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorJian-Hong Pan <chienhung.pan@gmail.com>2022-11-10 00:14:10 +0800
committerAntonio Borneo <borneo.antonio@gmail.com>2023-01-15 15:04:06 +0000
commit63336f4aaf672899db78de4ce6781c9451851472 (patch)
treef069600ce4f02b92a63ab59d65a6912e00f6f23f /contrib
parent21b14028ad7565f4916ae05a6c28b465eceb9150 (diff)
downloadriscv-openocd-63336f4aaf672899db78de4ce6781c9451851472.zip
riscv-openocd-63336f4aaf672899db78de4ce6781c9451851472.tar.gz
riscv-openocd-63336f4aaf672899db78de4ce6781c9451851472.tar.bz2
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 <chienhung.pan@gmail.com> Change-Id: I22b8be0a245857335b11bd0b538db415fc34748d Reviewed-on: https://review.openocd.org/c/openocd/+/7343 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'contrib')
-rw-r--r--contrib/loaders/flash/numicro_m4/Makefile31
-rw-r--r--contrib/loaders/flash/numicro_m4/numicro_m4.S70
-rw-r--r--contrib/loaders/flash/numicro_m4/numicro_m4.inc5
3 files changed, 106 insertions, 0 deletions
diff --git a/contrib/loaders/flash/numicro_m4/Makefile b/contrib/loaders/flash/numicro_m4/Makefile
new file mode 100644
index 0000000..0f9c507
--- /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 0000000..6c59cca
--- /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 *
+ * CYYU@nuvoton.com *
+ * *
+ * Copyright (C) 2022 Jian-Hong Pan *
+ * chienhung.pan@gmail.com *
+ ***************************************************************************/
+
+ .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 0000000..c3e6052
--- /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,