lpc2000: Fix flash programming fail on LPC4300 internal flash 84/1784/2
authorNemui Trinomius <nemuisan_kawausogasuki@live.jp>
Sat, 26 Oct 2013 03:17:04 +0000 (12:17 +0900)
committerSpencer Oliver <spen@spen-soft.co.uk>
Tue, 29 Oct 2013 22:47:51 +0000 (22:47 +0000)
LPC43xx with internal flash parts model needs "IAP Init(49)"Command
before erase & write internal flash.Tested on a LPC4337 and LPC4357.

Change-Id: I48620ce12e578c61a3ca1adcd48815c1f71c35bb
Signed-off-by: Nemui Trinomius <nemuisan_kawausogasuki@live.jp>
Reviewed-on: http://openocd.zylin.com/1784
Tested-by: jenkins
Reviewed-by: Jens Bauer <jens@gpio.dk>
Reviewed-by: Mathias Küster <kesmtp@freenet.de>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/flash/nor/lpc2000.c

index 12814aad168b28d9c044b39b8846ba0fa49e4622..aadb9999a9f4199a9658195cf6ac2fd079ed8fe3 100644 (file)
@@ -653,6 +653,10 @@ static int lpc2000_erase(struct flash_bank *bank, int first, int last)
        if (retval != ERROR_OK)
                return retval;
 
+       if (lpc2000_info->variant == lpc4300)
+               /* Init IAP Anyway */
+               lpc2000_iap_call(bank, iap_working_area, 49, param_table, result_table);
+
        /* Prepare sectors */
        int status_code = lpc2000_iap_call(bank, iap_working_area, 50, param_table, result_table);
        switch (status_code) {
@@ -781,6 +785,10 @@ static int lpc2000_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offs
        uint32_t param_table[5] = {0};
        uint32_t result_table[4];
 
+       if (lpc2000_info->variant == lpc4300)
+               /* Init IAP Anyway */
+               lpc2000_iap_call(bank, iap_working_area, 49, param_table, result_table);
+
        while (bytes_remaining > 0) {
                uint32_t thisrun_bytes;
                if (bytes_remaining >= lpc2000_info->cmd51_max_buffer)

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)