summaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
authordrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-03-15 13:36:44 +0000
committerdrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-03-15 13:36:44 +0000
commitcb582796539d35920e918bec2d0118eb3736d40e (patch)
tree0c46f343c31094c65d196c66cc821e0a6d43bf49 /src/helper
parente0c2e30660bef422744e885ab32c26c58978a8a1 (diff)
downloadopenocd_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.am5
-rw-r--r--src/helper/time_support.c24
-rw-r--r--src/helper/time_support.h9
-rw-r--r--src/helper/types.h8
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)