Added the faux flash driver and target. Used for testing.
[openocd.git] / src / flash / ecos.c
index 5b7ac7caefdf9258032de9cbcfa23fee38327e53..8583544e038b8d5c962c6347c56c5abf28f7f850 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
+ *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
  *   oyvind.harboe@zylin.com                                               *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -66,7 +66,7 @@ typedef struct ecosflash_flash_bank_s
        uint32_t start_address;
 } ecosflash_flash_bank_t;
 
-static const int sectorSize=0x10000;
+static const int sectorSize = 0x10000;
 
 char *
 flash_errmsg(int err);
@@ -139,21 +139,21 @@ static int ecosflash_flash_bank_command(struct command_context_s *cmd_ctx, char
        }
 
        info = malloc(sizeof(ecosflash_flash_bank_t));
-       if(info == NULL)
+       if (info == NULL)
        {
                LOG_ERROR("no memory for flash bank info");
                exit(-1);
        }
        bank->driver_priv = info;
-       info->driverPath=strdup(args[6]);
+       info->driverPath = strdup(args[6]);
 
        /* eCos flash sector sizes are not exposed to OpenOCD, use 0x10000 as
-        * a way to improve impeadance matach between OpenOCD and eCos flash
+        * a way to improve impedance match between OpenOCD and eCos flash
         * driver.
         */
        int i = 0;
        uint32_t offset = 0;
-       bank->num_sectors=bank->size/sectorSize;
+       bank->num_sectors = bank->size/sectorSize;
        bank->sectors = malloc(sizeof(flash_sector_t) * bank->num_sectors);
        for (i = 0; i < bank->num_sectors; i++)
        {
@@ -181,15 +181,15 @@ static int loadDriver(ecosflash_flash_bank_t *info)
 
        image.base_address_set = 0;
        image.start_address_set = 0;
-       target_t *target=info->target;
+       target_t *target = info->target;
        int retval;
 
-       if ((retval=image_open(&image, info->driverPath, NULL)) != ERROR_OK)
+       if ((retval = image_open(&image, info->driverPath, NULL)) != ERROR_OK)
        {
                return retval;
        }
 
-       info->start_address=image.start_address;
+       info->start_address = image.start_address;
 
        image_size = 0x0;
        int i;
@@ -215,12 +215,12 @@ static int loadDriver(ecosflash_flash_bank_t *info)
        return ERROR_OK;
 }
 
-static int const OFFSET_ERASE=0x0;
-static int const OFFSET_ERASE_SIZE=0x8;
-static int const OFFSET_FLASH=0xc;
-static int const OFFSET_FLASH_SIZE=0x8;
-static int const OFFSET_GET_WORKAREA=0x18;
-static int const OFFSET_GET_WORKAREA_SIZE=0x4;
+static int const OFFSET_ERASE = 0x0;
+static int const OFFSET_ERASE_SIZE = 0x8;
+static int const OFFSET_FLASH = 0xc;
+static int const OFFSET_FLASH_SIZE = 0x8;
+static int const OFFSET_GET_WORKAREA = 0x18;
+static int const OFFSET_GET_WORKAREA_SIZE = 0x4;
 
 static int runCode(ecosflash_flash_bank_t *info,
                uint32_t codeStart, uint32_t codeStop, uint32_t r0, uint32_t r1, uint32_t r2,
@@ -228,7 +228,7 @@ static int runCode(ecosflash_flash_bank_t *info,
                /* timeout in ms */
                int timeout)
 {
-       target_t *target=info->target;
+       target_t *target = info->target;
 
        reg_param_t reg_params[3];
        armv4_5_algorithm_t armv4_5_info;
@@ -254,7 +254,7 @@ static int runCode(ecosflash_flash_bank_t *info,
                return retval;
        }
 
-       *result=buf_get_u32(reg_params[0].value, 0, 32);
+       *result = buf_get_u32(reg_params[0].value, 0, 32);
 
        destroy_reg_param(&reg_params[0]);
        destroy_reg_param(&reg_params[1]);
@@ -268,21 +268,21 @@ static int eCosBoard_erase(ecosflash_flash_bank_t *info, uint32_t address, uint3
        int retval;
        int timeout = (len / 20480 + 1) * 1000; /*asume 20 KB/s*/
 
-       retval=loadDriver(info);
-       if (retval!=ERROR_OK)
+       retval = loadDriver(info);
+       if (retval != ERROR_OK)
                return retval;
 
        uint32_t flashErr;
-       retval=runCode(info,
-                       info->start_address+OFFSET_ERASE,
-                       info->start_address+OFFSET_ERASE+OFFSET_ERASE_SIZE,
+       retval = runCode(info,
+                       info->start_address + OFFSET_ERASE,
+                       info->start_address + OFFSET_ERASE + OFFSET_ERASE_SIZE,
                        address,
                        len,
                        0,
                        &flashErr,
                        timeout
-                       );
-       if (retval!=ERROR_OK)
+);
+       if (retval != ERROR_OK)
                return retval;
 
        if (flashErr != 0x0)
@@ -296,48 +296,48 @@ static int eCosBoard_erase(ecosflash_flash_bank_t *info, uint32_t address, uint3
 
 static int eCosBoard_flash(ecosflash_flash_bank_t *info, void *data, uint32_t address, uint32_t len)
 {
-       target_t *target=info->target;
-       const int chunk=8192;
-       int retval=ERROR_OK;
+       target_t *target = info->target;
+       const int chunk = 8192;
+       int retval = ERROR_OK;
        int timeout = (chunk / 20480 + 1) * 1000; /*asume 20 KB/s + 1 second*/
 
-       retval=loadDriver(info);
-       if (retval!=ERROR_OK)
+       retval = loadDriver(info);
+       if (retval != ERROR_OK)
                return retval;
 
        uint32_t buffer;
-       retval=runCode(info,
-                       info->start_address+OFFSET_GET_WORKAREA,
-                       info->start_address+OFFSET_GET_WORKAREA+OFFSET_GET_WORKAREA_SIZE,
+       retval = runCode(info,
+                       info->start_address + OFFSET_GET_WORKAREA,
+                       info->start_address + OFFSET_GET_WORKAREA + OFFSET_GET_WORKAREA_SIZE,
                        0,
                        0,
                        0,
                        &buffer,
                        1000);
-       if (retval!=ERROR_OK)
+       if (retval != ERROR_OK)
                return retval;
 
 
        uint32_t i;
-       for (i=0; i<len; i+=chunk)
+       for (i = 0; i < len; i += chunk)
        {
-               int t=len-i;
-               if (t>chunk)
+               int t = len-i;
+               if (t > chunk)
                {
-                       t=chunk;
+                       t = chunk;
                }
 
                int retval;
-               retval=target_write_buffer(target, buffer, t, ((uint8_t *)data)+i);
+               retval = target_write_buffer(target, buffer, t, ((uint8_t *)data) + i);
                if (retval != ERROR_OK)
                        return retval;
 
                uint32_t flashErr;
-               retval=runCode(info,
-                               info->start_address+OFFSET_FLASH,
-                               info->start_address+OFFSET_FLASH+OFFSET_FLASH_SIZE,
+               retval = runCode(info,
+                               info->start_address + OFFSET_FLASH,
+                               info->start_address + OFFSET_FLASH + OFFSET_FLASH_SIZE,
                                buffer,
-                               address+i,
+                               address + i,
                                t,
                                &flashErr,
                                timeout);
@@ -392,7 +392,7 @@ static void command(flash_bank_t *bank, uint8_t cmd, uint8_t *cmd_buf)
 static uint32_t ecosflash_address(struct flash_bank_s *bank, uint32_t address)
 {
        uint32_t retval = 0;
-       switch(bank->bus_width)
+       switch (bank->bus_width)
        {
                case 4:
                        retval = address & 0xfffffffc;
@@ -408,9 +408,9 @@ static uint32_t ecosflash_address(struct flash_bank_s *bank, uint32_t address)
 
 static int ecosflash_erase(struct flash_bank_s *bank, int first, int last)
 {
-       struct flash_bank_s *c=bank;
+       struct flash_bank_s *c = bank;
        ecosflash_flash_bank_t *info = bank->driver_priv;
-       return eCosBoard_erase(info, c->base+first*sectorSize, sectorSize*(last-first+1));
+       return eCosBoard_erase(info, c->base + first*sectorSize, sectorSize*(last-first + 1));
 }
 
 static int ecosflash_protect(struct flash_bank_s *bank, int set, int first, int last)
@@ -421,8 +421,8 @@ static int ecosflash_protect(struct flash_bank_s *bank, int set, int first, int
 static int ecosflash_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
 {
        ecosflash_flash_bank_t *info = bank->driver_priv;
-       struct flash_bank_s *c=bank;
-       return eCosBoard_flash(info, buffer, c->base+offset, count);
+       struct flash_bank_s *c = bank;
+       return eCosBoard_flash(info, buffer, c->base + offset, count);
 }
 
 static int ecosflash_protect_check(struct flash_bank_s *bank)

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)