sam4s flash: remove unused bootstrap routine
Remove the static const array containing ARM instructions for a bootstrap program. Despite what the comment says, the DAP can write to the Flash and in fact this program is not referenced anywhere in openocd so it's a bit confusing having it in there. There should be no functionality change from this. Change-Id: I4ca4206f090a896628ee9b675d1f04450ada1563 Signed-off-by: Andrey Yurovsky <yurovsky@gmail.com> Reviewed-on: http://openocd.zylin.com/1641 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
This commit is contained in:
parent
d4993beec4
commit
a58f294ac4
|
@ -1838,93 +1838,6 @@ static int sam4_page_read(struct sam4_bank_private *pPrivate, unsigned pagenum,
|
|||
return r;
|
||||
}
|
||||
|
||||
/* The code below is basically this: */
|
||||
/* compiled with */
|
||||
/* arm-none-eabi-gcc -mthumb -mcpu = cortex-m3 -O9 -S ./foobar.c -o foobar.s */
|
||||
/* */
|
||||
/* Only the *CPU* can write to the flash buffer. */
|
||||
/* the DAP cannot... so - we download this 28byte thing */
|
||||
/* Run the algorithm - (below) */
|
||||
/* to program the device */
|
||||
/* */
|
||||
/* ======================================== */
|
||||
/* #include <stdint.h> */
|
||||
/* */
|
||||
/* struct foo { */
|
||||
/* uint32_t *dst; */
|
||||
/* const uint32_t *src; */
|
||||
/* int n; */
|
||||
/* volatile uint32_t *base; */
|
||||
/* uint32_t cmd; */
|
||||
/* }; */
|
||||
/* */
|
||||
/* */
|
||||
/* uint32_t sam4_function(struct foo *p) */
|
||||
/* { */
|
||||
/* volatile uint32_t *v; */
|
||||
/* uint32_t *d; */
|
||||
/* const uint32_t *s; */
|
||||
/* int n; */
|
||||
/* uint32_t r; */
|
||||
/* */
|
||||
/* d = p->dst; */
|
||||
/* s = p->src; */
|
||||
/* n = p->n; */
|
||||
/* */
|
||||
/* do { */
|
||||
/* *d++ = *s++; */
|
||||
/* } while (--n) */
|
||||
/* ; */
|
||||
/* */
|
||||
/* v = p->base; */
|
||||
/* */
|
||||
/* v[ 1 ] = p->cmd; */
|
||||
/* do { */
|
||||
/* r = v[8/4]; */
|
||||
/* } while (!(r&1)) */
|
||||
/* ; */
|
||||
/* return r; */
|
||||
/* } */
|
||||
/* ======================================== */
|
||||
|
||||
static const uint8_t
|
||||
sam4_page_write_opcodes[] = {
|
||||
/* 24 0000 0446 mov r4, r0 */
|
||||
0x04, 0x46,
|
||||
/* 25 0002 6168 ldr r1, [r4, #4] */
|
||||
0x61, 0x68,
|
||||
/* 26 0004 0068 ldr r0, [r0, #0] */
|
||||
0x00, 0x68,
|
||||
/* 27 0006 A268 ldr r2, [r4, #8] */
|
||||
0xa2, 0x68,
|
||||
/* 28 @ lr needed for prologue */
|
||||
/* 29 .L2: */
|
||||
/* 30 0008 51F8043B ldr r3, [r1], #4 */
|
||||
0x51, 0xf8, 0x04, 0x3b,
|
||||
/* 31 000c 12F1FF32 adds r2, r2, #-1 */
|
||||
0x12, 0xf1, 0xff, 0x32,
|
||||
/* 32 0010 40F8043B str r3, [r0], #4 */
|
||||
0x40, 0xf8, 0x04, 0x3b,
|
||||
/* 33 0014 F8D1 bne .L2 */
|
||||
0xf8, 0xd1,
|
||||
/* 34 0016 E268 ldr r2, [r4, #12] */
|
||||
0xe2, 0x68,
|
||||
/* 35 0018 2369 ldr r3, [r4, #16] */
|
||||
0x23, 0x69,
|
||||
/* 36 001a 5360 str r3, [r2, #4] */
|
||||
0x53, 0x60,
|
||||
/* 37 001c 0832 adds r2, r2, #8 */
|
||||
0x08, 0x32,
|
||||
/* 38 .L4: */
|
||||
/* 39 001e 1068 ldr r0, [r2, #0] */
|
||||
0x10, 0x68,
|
||||
/* 40 0020 10F0010F tst r0, #1 */
|
||||
0x10, 0xf0, 0x01, 0x0f,
|
||||
/* 41 0024 FBD0 beq .L4 */
|
||||
0xfb, 0xd0,
|
||||
0x00, 0xBE /* bkpt #0 */
|
||||
};
|
||||
|
||||
static int sam4_page_write(struct sam4_bank_private *pPrivate, unsigned pagenum, uint8_t *buf)
|
||||
{
|
||||
uint32_t adr;
|
||||
|
|
Loading…
Reference in New Issue