]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-rocon.git/commitdiff
RoCoN: test command to report measured LXPWR cycle period.
authorPavel Pisa <ppisa@pikron.com>
Sun, 23 Nov 2014 09:25:09 +0000 (10:25 +0100)
committerPavel Pisa <ppisa@pikron.com>
Sun, 23 Nov 2014 09:25:09 +0000 (10:25 +0100)
Signed-off-by: Pavel Pisa <ppisa@pikron.com>
sw/app/rocon/appl_tests.c

index 1b3adc8925d4968dbcd19761c50f4b9ac77f239b..e2deb07e2807d7b6963ab056866ed7209735a73a 100644 (file)
@@ -279,6 +279,11 @@ int cmd_do_testsdram(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
 volatile void *lxpwr_rx_data_hist_buff;
 volatile void *lxpwr_rx_data_hist_buff_end;
 
+uint32_t lxpwr_rx_last_irq;
+uint32_t lxpwr_rx_cycle_time;
+uint32_t lxpwr_rx_irq_latency;
+uint32_t lxpwr_rx_irq_latency_max;
+
 IRQ_HANDLER_FNC(lxpwr_rx_done_isr)
 {
   uint32_t ir;
@@ -290,6 +295,9 @@ IRQ_HANDLER_FNC(lxpwr_rx_done_isr)
     cr0 = LXPWR_RX_TIM->CR0;
     cr1 = LXPWR_RX_TIM->CR1;
 
+    lxpwr_rx_cycle_time = cr1 - lxpwr_rx_last_irq;
+    lxpwr_rx_last_irq = cr1;
+
     hal_gpio_set_value(T2MAT0_PIN, 1);
     hal_gpio_set_value(T2MAT1_PIN, 0);
     hal_gpio_set_value(T2MAT0_PIN, 0);
@@ -310,6 +318,10 @@ IRQ_HANDLER_FNC(lxpwr_rx_done_isr)
       }
       lxpwr_rx_data_hist_buff = pbuf;
     }
+
+    lxpwr_rx_irq_latency = LXPWR_RX_TIM->TC - cr1;
+    if (lxpwr_rx_irq_latency > lxpwr_rx_irq_latency_max)
+      lxpwr_rx_irq_latency_max = lxpwr_rx_irq_latency;
   }
 
   return IRQ_HANDLED;
@@ -362,6 +374,14 @@ int cmd_do_testlxpwrrx(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[
   return 0;
 }
 
+int cmd_do_testlxpwrstat(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
+{
+  printf("lxpwrrx period %ld latency %ld max %ld\n",
+         (long)lxpwr_rx_cycle_time, (long)lxpwr_rx_irq_latency,
+         (long)lxpwr_rx_irq_latency_max);
+  return 0;
+}
+
 cmd_des_t const cmd_des_test_memusage = {0, 0,
                 "memusage", "report memory usage", cmd_do_test_memusage,
 {
@@ -424,6 +444,11 @@ cmd_des_t const cmd_des_testlxpwrrx = {0, 0,
                                      cmd_do_testlxpwrrx, {(void *)0}
                                     };
 
+cmd_des_t const cmd_des_testlxpwrstat = {0, 0,
+                                     "testlxpwrstat", "lxpwr interrupt statistic",
+                                     cmd_do_testlxpwrstat, {(void *)0}
+                                    };
+
 cmd_des_t const *const cmd_appl_tests[] =
 {
   &cmd_des_test_memusage,
@@ -439,5 +464,6 @@ cmd_des_t const *const cmd_appl_tests[] =
   &cmd_des_testsdram,
 #endif /*SDRAM_BASE*/
   &cmd_des_testlxpwrrx,
+  &cmd_des_testlxpwrstat,
   NULL
 };