/***************************************************************************
- * Copyright (C) 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 *
#include "config.h"
#endif
+#include <string.h>
+
#include "replacements.h"
int ecosflash_protect(struct flash_bank_s *bank, int set, int first, int last);
int ecosflash_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count);
int ecosflash_probe(struct flash_bank_s *bank);
-int ecosflash_erase_check(struct flash_bank_s *bank);
int ecosflash_protect_check(struct flash_bank_s *bank);
int ecosflash_info(struct flash_bank_s *bank, char *buf, int buf_size);
.write = ecosflash_write,
.probe = ecosflash_probe,
.auto_probe = ecosflash_probe,
- .erase_check = ecosflash_erase_check,
+ .erase_check = default_flash_blank_check,
.protect_check = ecosflash_protect_check,
.info = ecosflash_info
};
flash_errmsg(int err);
#ifndef __ECOS
-#define FLASH_ERR_OK 0x00 // No error - operation complete
-#define FLASH_ERR_INVALID 0x01 // Invalid FLASH address
-#define FLASH_ERR_ERASE 0x02 // Error trying to erase
-#define FLASH_ERR_LOCK 0x03 // Error trying to lock/unlock
-#define FLASH_ERR_PROGRAM 0x04 // Error trying to program
-#define FLASH_ERR_PROTOCOL 0x05 // Generic error
-#define FLASH_ERR_PROTECT 0x06 // Device/region is write-protected
-#define FLASH_ERR_NOT_INIT 0x07 // FLASH info not yet initialized
-#define FLASH_ERR_HWR 0x08 // Hardware (configuration?) problem
-#define FLASH_ERR_ERASE_SUSPEND 0x09 // Device is in erase suspend mode
-#define FLASH_ERR_PROGRAM_SUSPEND 0x0a // Device is in in program suspend mode
-#define FLASH_ERR_DRV_VERIFY 0x0b // Driver failed to verify data
-#define FLASH_ERR_DRV_TIMEOUT 0x0c // Driver timed out waiting for device
-#define FLASH_ERR_DRV_WRONG_PART 0x0d // Driver does not support device
-#define FLASH_ERR_LOW_VOLTAGE 0x0e // Not enough juice to complete job
+#define FLASH_ERR_OK 0x00 /* No error - operation complete */
+#define FLASH_ERR_INVALID 0x01 /* Invalid FLASH address */
+#define FLASH_ERR_ERASE 0x02 /* Error trying to erase */
+#define FLASH_ERR_LOCK 0x03 /* Error trying to lock/unlock */
+#define FLASH_ERR_PROGRAM 0x04 /* Error trying to program */
+#define FLASH_ERR_PROTOCOL 0x05 /* Generic error */
+#define FLASH_ERR_PROTECT 0x06 /* Device/region is write-protected */
+#define FLASH_ERR_NOT_INIT 0x07 /* FLASH info not yet initialized */
+#define FLASH_ERR_HWR 0x08 /* Hardware (configuration?) problem */
+#define FLASH_ERR_ERASE_SUSPEND 0x09 /* Device is in erase suspend mode */
+#define FLASH_ERR_PROGRAM_SUSPEND 0x0a /* Device is in in program suspend mode */
+#define FLASH_ERR_DRV_VERIFY 0x0b /* Driver failed to verify data */
+#define FLASH_ERR_DRV_TIMEOUT 0x0c /* Driver timed out waiting for device */
+#define FLASH_ERR_DRV_WRONG_PART 0x0d /* Driver does not support device */
+#define FLASH_ERR_LOW_VOLTAGE 0x0e /* Not enough juice to complete job */
char *
if (argc < 7)
{
- WARNING("incomplete flash_bank ecosflash configuration");
+ LOG_WARNING("incomplete flash_bank ecosflash configuration");
return ERROR_FLASH_BANK_INVALID;
}
info = malloc(sizeof(ecosflash_flash_bank_t));
if(info == NULL)
{
- ERROR("no memory for flash bank info");
+ LOG_ERROR("no memory for flash bank info");
exit(-1);
}
bank->driver_priv = info;
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
- // driver
+ /* eCos flash sector sizes are not exposed to OpenOCD, use 0x10000 as
+ * a way to improve impeadance matach between OpenOCD and eCos flash
+ * driver.
+ */
int i = 0;
u32 offset = 0;
bank->num_sectors=bank->size/sectorSize;
info->target = get_target_by_num(strtoul(args[5], NULL, 0));
if (info->target == NULL)
{
- ERROR("no target '%i' configured", (int)strtoul(args[5], NULL, 0));
+ LOG_ERROR("no target '%i' configured", (int)strtoul(args[5], NULL, 0));
exit(-1);
}
return ERROR_OK;
image.base_address_set = 0;
image.start_address_set = 0;
target_t *target=info->target;
+ int retval;
- if (image_open(&image, info->driverPath, NULL) != ERROR_OK)
+ if ((retval=image_open(&image, info->driverPath, NULL)) != ERROR_OK)
{
- ERROR("load_image error: %s", image.error_str);
- return ERROR_FLASH_BANK_INVALID;
+ return retval;
}
info->start_address=image.start_address;
int retval;
if ((retval = image_read_section(&image, i, 0x0, image.sections[i].size, buffer, &buf_cnt)) != ERROR_OK)
{
- ERROR("image_read_section failed with error code: %i", retval);
free(buffer);
image_close(&image);
- return ERROR_FLASH_BANK_INVALID;
+ return retval;
}
target_write_buffer(target, image.sections[i].base_address, buf_cnt, buffer);
image_size += buf_cnt;
- DEBUG("%u byte written at address 0x%8.8x", buf_cnt, image.sections[i].base_address);
+ LOG_DEBUG("%u byte written at address 0x%8.8x", buf_cnt, image.sections[i].base_address);
free(buffer);
}
int runCode(ecosflash_flash_bank_t *info,
u32 codeStart, u32 codeStop, u32 r0, u32 r1, u32 r2,
u32 *result,
- // timeout in ms
+ /* timeout in ms */
int timeout)
{
target_t *target=info->target;
codeStop, timeout,
&armv4_5_info)) != ERROR_OK)
{
- ERROR("error executing eCos flash algorithm");
+ LOG_ERROR("error executing eCos flash algorithm");
return retval;
}
if (flashErr != 0x0)
{
- ERROR("Flash erase failed with %d (%s)\n", flashErr, flash_errmsg(flashErr));
- return ERROR_JTAG_DEVICE_ERROR;
+ LOG_ERROR("Flash erase failed with %d (%s)\n", flashErr, flash_errmsg(flashErr));
+ return ERROR_FAIL;
}
return ERROR_OK;
}
int retval;
- retval=target_write_buffer(target, buffer, t, ((char *)data)+i);
+ retval=target_write_buffer(target, buffer, t, ((u8 *)data)+i);
if (retval != ERROR_OK)
return retval;
if (flashErr != 0x0)
{
- ERROR("Flash prog failed with %d (%s)\n", flashErr, flash_errmsg(flashErr));
- return ERROR_JTAG_DEVICE_ERROR;
+ LOG_ERROR("Flash prog failed with %d (%s)\n", flashErr, flash_errmsg(flashErr));
+ return ERROR_FAIL;
}
}
return ERROR_OK;
}
-int ecosflash_erase_check(struct flash_bank_s *bank)
-{
- return ERROR_OK;
-}
-
int ecosflash_protect_check(struct flash_bank_s *bank)
{
return ERROR_OK;