aboutsummaryrefslogtreecommitdiff
path: root/src/ecosboard.c
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-12-15 09:05:16 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-12-15 09:05:16 +0000
commit459d03e3bb516cfe7ea641718084885ffda070f4 (patch)
tree9eb390110b17d162e2963f03fe927a59d1640eec /src/ecosboard.c
parent508ed7a7c69f74ed889e1b471929d9e68e5c1194 (diff)
downloadriscv-openocd-459d03e3bb516cfe7ea641718084885ffda070f4.zip
riscv-openocd-459d03e3bb516cfe7ea641718084885ffda070f4.tar.gz
riscv-openocd-459d03e3bb516cfe7ea641718084885ffda070f4.tar.bz2
fast_load profiling tool moved to target.c
git-svn-id: svn://svn.berlios.de/openocd/trunk@1241 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/ecosboard.c')
-rw-r--r--src/ecosboard.c196
1 files changed, 0 insertions, 196 deletions
diff --git a/src/ecosboard.c b/src/ecosboard.c
index 34bb558..6326b98 100644
--- a/src/ecosboard.c
+++ b/src/ecosboard.c
@@ -121,196 +121,6 @@ static bool writeLog = true;
char hwaddr[512];
-struct FastLoad
-{
- u32 address;
- u8 *data;
- int length;
-
-};
-
-static int fastload_num;
-static struct FastLoad *fastload;
-
-static void free_fastload()
-{
- if (fastload!=NULL)
- {
- int i;
- for (i=0; i<fastload_num; i++)
- {
- if (fastload[i].data)
- free(fastload[i].data);
- }
- free(fastload);
- fastload=NULL;
- }
-}
-
-
-int handle_fast_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
- u8 *buffer;
- u32 buf_cnt;
- u32 image_size;
- u32 min_address=0;
- u32 max_address=0xffffffff;
- int i;
- int retval;
-
- image_t image;
-
- duration_t duration;
- char *duration_text;
-
- if ((argc < 1)||(argc > 5))
- {
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- /* a base address isn't always necessary, default to 0x0 (i.e. don't relocate) */
- if (argc >= 2)
- {
- image.base_address_set = 1;
- image.base_address = strtoul(args[1], NULL, 0);
- }
- else
- {
- image.base_address_set = 0;
- }
-
-
- image.start_address_set = 0;
-
- if (argc>=4)
- {
- min_address=strtoul(args[3], NULL, 0);
- }
- if (argc>=5)
- {
- max_address=strtoul(args[4], NULL, 0)+min_address;
- }
-
- if (min_address>max_address)
- {
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- duration_start_measure(&duration);
-
- if (image_open(&image, args[0], (argc >= 3) ? args[2] : NULL) != ERROR_OK)
- {
- return ERROR_OK;
- }
-
- image_size = 0x0;
- retval = ERROR_OK;
- fastload_num=image.num_sections;
- fastload=(struct FastLoad *)malloc(sizeof(struct FastLoad)*image.num_sections);
- if (fastload==NULL)
- {
- image_close(&image);
- return ERROR_FAIL;
- }
- memset(fastload, 0, sizeof(struct FastLoad)*image.num_sections);
- for (i = 0; i < image.num_sections; i++)
- {
- buffer = malloc(image.sections[i].size);
- if (buffer == NULL)
- {
- command_print(cmd_ctx, "error allocating buffer for section (%d bytes)", image.sections[i].size);
- break;
- }
-
- if ((retval = image_read_section(&image, i, 0x0, image.sections[i].size, buffer, &buf_cnt)) != ERROR_OK)
- {
- free(buffer);
- break;
- }
-
- u32 offset=0;
- u32 length=buf_cnt;
-
-
- /* DANGER!!! beware of unsigned comparision here!!! */
-
- if ((image.sections[i].base_address+buf_cnt>=min_address)&&
- (image.sections[i].base_address<max_address))
- {
- if (image.sections[i].base_address<min_address)
- {
- /* clip addresses below */
- offset+=min_address-image.sections[i].base_address;
- length-=offset;
- }
-
- if (image.sections[i].base_address+buf_cnt>max_address)
- {
- length-=(image.sections[i].base_address+buf_cnt)-max_address;
- }
-
- fastload[i].address=image.sections[i].base_address+offset;
- fastload[i].data=malloc(length);
- if (fastload[i].data==NULL)
- {
- free(buffer);
- break;
- }
- memcpy(fastload[i].data, buffer+offset, length);
- fastload[i].length=length;
-
- image_size += length;
- command_print(cmd_ctx, "%u byte written at address 0x%8.8x", length, image.sections[i].base_address+offset);
- }
-
- free(buffer);
- }
-
- duration_stop_measure(&duration, &duration_text);
- if (retval==ERROR_OK)
- {
- command_print(cmd_ctx, "Loaded %u bytes in %s", image_size, duration_text);
- command_print(cmd_ctx, "NB!!! image has not been loaded to target, issue a subsequent 'fast_load' to do so.");
- }
- free(duration_text);
-
- image_close(&image);
-
- if (retval!=ERROR_OK)
- {
- free_fastload();
- }
-
- return retval;
-}
-
-int handle_fast_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
- if (argc>0)
- return ERROR_COMMAND_SYNTAX_ERROR;
- if (fastload==NULL)
- {
- LOG_ERROR("No image in memory");
- return ERROR_FAIL;
- }
- int i;
- int ms=timeval_ms();
- int size=0;
- for (i=0; i<fastload_num;i++)
- {
- int retval;
- target_t *target = get_current_target(cmd_ctx);
- if ((retval = target_write_buffer(target, fastload[i].address, fastload[i].length, fastload[i].data)) != ERROR_OK)
- {
- return retval;
- }
- size+=fastload[i].length;
- }
- int after=timeval_ms();
- command_print(cmd_ctx, "Loaded image %f kBytes/s", (float)(size/1024.0)/((float)(after-ms)/1000.0));
- return ERROR_OK;
-}
-
/* Give TELNET a way to find out what version this is */
int handle_zy1000_version_command(struct command_context_s *cmd_ctx, char *cmd,
@@ -1969,12 +1779,6 @@ int main(int argc, char *argv[])
register_command(cmd_ctx, NULL, "rm", handle_rm_command, COMMAND_ANY,
"remove file");
- register_command(cmd_ctx, NULL, "fast_load_image", handle_fast_load_image_command, COMMAND_ANY,
- "same args as load_image, image stored in memory");
-
- register_command(cmd_ctx, NULL, "fast_load", handle_fast_load_command, COMMAND_ANY,
- "loads active fast load image to current target");
-
register_command(cmd_ctx, NULL, "cat", handle_cat_command, COMMAND_ANY,
"display file content");