Add a command to access the system timer
authorJoe Hershberger <joe.hershberger@ni.com>
Wed, 3 Oct 2012 12:14:57 +0000 (12:14 +0000)
committerTom Rini <trini@ti.com>
Wed, 3 Oct 2012 23:01:23 +0000 (16:01 -0700)
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>
README
common/cmd_misc.c

diff --git a/README b/README
index 18354d3337f4586c59406da3f7a43b1028bc7014..dd250a0fa8071f96393ef23a5cfa536d541c46b5 100644 (file)
--- 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
index 973b1c20826e64efddc9e848aa713ed8fe9560d8..3b47a0c0957aa852f2189e2ad3b52bdb25785942 100644 (file)
@@ -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