flash/nor: Add support for TI CC3220SF internal flash
[openocd.git] / contrib / loaders / flash / sim3x.s
1 /***************************************************************************
2 * Copyright (C) 2014 by Ladislav Bábel *
3 * ladababel@seznam.cz *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 ***************************************************************************/
15
16 #define INITIAL_UNLOCK 0x5A
17 #define MULTIPLE_UNLOCK 0xF2
18
19 #define FLASHCTRL_KEY 0x4002E0C0
20 #define FLASHCTRL_CONFIG 0x4002E000
21 #define FLASHCTRL_WRADDR 0x4002E0A0
22 #define FLASHCTRL_WRDATA 0x4002E0B0
23 #define BUSYF 0x00100000
24
25
26 /* Write the initial unlock value to KEY (0xA5) */
27 movs r6, #INITIAL_UNLOCK
28 str r6, [r0, #FLASHCTRL_KEY]
29
30 /* Write the multiple unlock value to KEY (0xF2) */
31 movs r6, #MULTIPLE_UNLOCK
32 str r6, [r0, #FLASHCTRL_KEY]
33
34 wait_fifo:
35 ldr r6, [r2, #0]
36 cmp r6, #0
37 beq exit
38 ldr r5, [r2, #4]
39 cmp r5, r6
40 beq wait_fifo
41
42 /* wait for BUSYF flag */
43 wait_busy1:
44 ldr r6, [r0, #FLASHCTRL_CONFIG]
45 tst r6, #BUSYF
46 bne wait_busy1
47
48 /* Write the destination address to WRADDR */
49 str r4, [r0, #FLASHCTRL_WRADDR]
50
51 /* Write the data half-word to WRDATA in right-justified format */
52 ldrh r6, [r5]
53 str r6, [r0, #FLASHCTRL_WRDATA]
54
55 adds r5, #2
56 adds r4, #2
57
58 /* wrap rp at end of buffer */
59 cmp r5, r3
60 bcc no_wrap
61 mov r5, r2
62 adds r5, #8
63
64 no_wrap:
65 str r5, [r2, #4]
66 subs r1, r1, #1
67 cmp r1, #0
68 beq exit
69 b wait_fifo
70
71 exit:
72 movs r6, #MULTIPLE_LOCK
73 str r6, [r0, #FLASHCTRL_KEY]
74
75 /* wait for BUSYF flag */
76 wait_busy2:
77 ldr r6, [r0, #FLASHCTRL_CONFIG]
78 tst r6, #BUSYF
79 bne wait_busy2
80
81 bkpt #0

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)