aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Hershberger <joe.hershberger@ni.com>2012-10-03 12:14:57 +0000
committerTom Rini <trini@ti.com>2012-10-03 16:01:23 -0700
commitda83bcd7b33d9e4dca3913cb5c0827dce0f8672a (patch)
treec12603d5b315deb4d2e25a5fcb4b0cd8108a7ce9
parentc167cc02033e45913ce6a3ba4575e7890ce55f07 (diff)
downloadu-boot-linaro-stable-da83bcd7b33d9e4dca3913cb5c0827dce0f8672a.tar.gz
Add a command to access the system timer
Two sub-commands... start and get. * start sets the reference. * get prints out the time since the last start (in "<sec>.<msec>" format). If get is called without start, returns time since boot. Simple way to benchmark an operation: "timer start;<commands-to-measure>;timer get" Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
-rw-r--r--README3
-rw-r--r--common/cmd_misc.c27
2 files changed, 29 insertions, 1 deletions
diff --git a/README b/README
index 18354d333..dd250a0fa 100644
--- a/README
+++ b/README
@@ -858,7 +858,8 @@ The following options need to be configured:
CONFIG_CMD_SPI * SPI serial bus support
CONFIG_CMD_TFTPSRV * TFTP transfer in server mode
CONFIG_CMD_TFTPPUT * TFTP put command (upload)
- CONFIG_CMD_TIME * run command and report execution time
+ CONFIG_CMD_TIME * run command and report execution time (ARM specific)
+ CONFIG_CMD_TIMER * access to the system tick timer
CONFIG_CMD_USB * USB support
CONFIG_CMD_CDP * Cisco Discover Protocol support
CONFIG_CMD_MFSL * Microblaze FSL support
diff --git a/common/cmd_misc.c b/common/cmd_misc.c
index 973b1c208..3b47a0c09 100644
--- a/common/cmd_misc.c
+++ b/common/cmd_misc.c
@@ -53,3 +53,30 @@ U_BOOT_CMD(
"N\n"
" - delay execution for N seconds (N is _decimal_ !!!)"
);
+
+#ifdef CONFIG_CMD_TIMER
+static int do_timer(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ static ulong start;
+
+ if (argc != 2)
+ return CMD_RET_USAGE;
+
+ if (!strcmp(argv[1], "start"))
+ start = get_timer(0);
+
+ if (!strcmp(argv[1], "get")) {
+ ulong msecs = get_timer(start) * 1000 / CONFIG_SYS_HZ;
+ printf("%ld.%03d\n", msecs / 1000, (int)(msecs % 1000));
+ }
+
+ return 0;
+}
+
+U_BOOT_CMD(
+ timer, 2, 1, do_timer,
+ "access the system timer",
+ "start - Reset the timer reference.\n"
+ "timer get - Print the time since 'start'."
+);
+#endif