flash/nor, contrib/loaders: move numicro M0 write assembly to contrib/loaders
Simply move numicro M0 flash write assembly to contrib/loaders. Also, modify corresponding Makefile and generated numicro_m0.inc. To make the path more general, this patch rename the path "contrib/loaders/flash/numicro_m4" to "contrib/loaders/flash/numicro" as well. Signed-off-by: Jian-Hong Pan <chienhung.pan@gmail.com> Change-Id: I9adea24c2b3c97319a9b015cf50257f3d131dc26 Reviewed-on: https://review.openocd.org/c/openocd/+/7346 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
committed by
Antonio Borneo
parent
63336f4aaf
commit
9ffda10298
70
contrib/loaders/flash/numicro/numicro_m4.S
Normal file
70
contrib/loaders/flash/numicro/numicro_m4.S
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user