diff options
author | drath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2007-03-15 13:36:44 +0000 |
---|---|---|
committer | drath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2007-03-15 13:36:44 +0000 |
commit | cb582796539d35920e918bec2d0118eb3736d40e (patch) | |
tree | 0c46f343c31094c65d196c66cc821e0a6d43bf49 /src/helper | |
parent | e0c2e30660bef422744e885ab32c26c58978a8a1 (diff) | |
download | openocd+libswd-cb582796539d35920e918bec2d0118eb3736d40e.tar.gz openocd+libswd-cb582796539d35920e918bec2d0118eb3736d40e.tar.bz2 openocd+libswd-cb582796539d35920e918bec2d0118eb3736d40e.tar.xz openocd+libswd-cb582796539d35920e918bec2d0118eb3736d40e.zip |
- reworked file i/o. every fileaccess (target, flash, nand, in future configuration, too) should now go through the fileio subsystem
- added support for reading IHEX files (through fileio)
- load/dump_binary renamed to the more generic load/dump_image <file> <address> ['bin'|'ihex']
- added NAND framework (preliminary)
- added support for the LPC3180 SLC and MLC NAND controllers (preliminary)
- fix initialization for parport
- gw16012 fixes/cleanups
- added EmbeddedICE version 7 (preliminary, reported on two LPC23xx devices so far)
- added 'arm7_9 etm <target#>' configuration command to enable access to the ETM registers
git-svn-id: svn://svn.berlios.de/openocd/trunk@132 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/Makefile.am | 5 | ||||
-rw-r--r-- | src/helper/time_support.c | 24 | ||||
-rw-r--r-- | src/helper/time_support.h | 9 | ||||
-rw-r--r-- | src/helper/types.h | 8 |
4 files changed, 42 insertions, 4 deletions
diff --git a/src/helper/Makefile.am b/src/helper/Makefile.am index 5720b9d7..2214146c 100644 --- a/src/helper/Makefile.am +++ b/src/helper/Makefile.am @@ -1,6 +1,7 @@ INCLUDES = $(all_includes) METASOURCES = AUTO noinst_LIBRARIES = libhelper.a -libhelper_a_SOURCES = binarybuffer.c configuration.c log.c interpreter.c command.c time_support.c replacements.c +libhelper_a_SOURCES = binarybuffer.c configuration.c log.c interpreter.c command.c time_support.c \ + replacements.c fileio.c noinst_HEADERS = binarybuffer.h configuration.h types.h log.h command.h \ - interpreter.h time_support.h replacements.h + interpreter.h time_support.h replacements.h fileio.h diff --git a/src/helper/time_support.c b/src/helper/time_support.c index 620c9c48..fffc5379 100644 --- a/src/helper/time_support.c +++ b/src/helper/time_support.c @@ -22,6 +22,7 @@ #endif #include "time_support.h" +#include "log.h" #include <sys/time.h> #include <time.h> @@ -82,3 +83,26 @@ int timeval_add_time(struct timeval *result, int sec, int usec) return 0; } +int duration_start_measure(duration_t *duration) +{ + gettimeofday(&duration->start, NULL); + + return ERROR_OK; +} + +int duration_stop_measure(duration_t *duration, char **text) +{ + struct timeval end; + + gettimeofday(&end, NULL); + + timeval_subtract(&duration->duration, &end, &duration->start); + + if (text) + { + *text = malloc(16); + snprintf(*text, 16, "%is %ius", duration->duration.tv_sec, duration->duration.tv_usec); + } + + return ERROR_OK; +} diff --git a/src/helper/time_support.h b/src/helper/time_support.h index d8b7fe5c..4e79d0d0 100644 --- a/src/helper/time_support.h +++ b/src/helper/time_support.h @@ -27,4 +27,13 @@ extern int timeval_subtract(struct timeval *result, struct timeval *x, struct ti extern int timeval_add(struct timeval *result, struct timeval *x, struct timeval *y); extern int timeval_add_time(struct timeval *result, int sec, int usec); +typedef struct duration_s +{ + struct timeval start; + struct timeval duration; +} duration_t; + +extern int duration_start_measure(duration_t *duration); +extern int duration_stop_measure(duration_t *duration, char **text); + #endif /* TIME_SUPPORT_H */ diff --git a/src/helper/types.h b/src/helper/types.h index 90f49396..69cb16a2 100644 --- a/src/helper/types.h +++ b/src/helper/types.h @@ -34,6 +34,10 @@ typedef unsigned short u16; typedef unsigned int u32; #endif +#ifndef u64 +typedef unsigned long long u64; +#endif + #ifdef WORDS_BIGENDIAN /* big endian host */ #define le_to_h_u32(x) (u32)(x[0] | x[1] << 8 | x[2] << 16 | x[3] << 24) @@ -61,8 +65,8 @@ typedef unsigned int u32; #else /* little endian host */ #define le_to_h_u32(x) (*(u32*)(x)) #define le_to_h_u16(x) (*(u16*)(x)) -#define be_to_h_u32(x) (u32)(x[3] | x[2] << 8 | x[1] << 16 | x[0] << 24) -#define be_to_h_u16(x) (u16)(x[1] | x[0] << 8) +#define be_to_h_u32(x) (u32)((x)[3] | (x)[2] << 8 | (x)[1] << 16 | (x)[0] << 24) +#define be_to_h_u16(x) (u16)((x)[1] | (x)[0] << 8) #define h_u32_to_le(buf, val) do { *(u32*)(buf) = (val); } while (0) #define h_u16_to_le(buf, val) do { *(u16*)(buf) = (val); } while (0) |