|
|
@@ -116,6 +116,9 @@ static void ec_master_cmd_show_help(void)
|
|
|
EC_LOG_RAW(" perf -s <time> Start performance test\n");
|
|
|
EC_LOG_RAW(" perf -v Show performance statistics\n");
|
|
|
#endif
|
|
|
+ EC_LOG_RAW(" timediff -s Enable system time diff monitor\n");
|
|
|
+ EC_LOG_RAW(" timediff -d Disable system time diff monitor\n");
|
|
|
+ EC_LOG_RAW(" timediff -v Show system time diff statistics\n");
|
|
|
EC_LOG_RAW(" help Show this help\n\n");
|
|
|
}
|
|
|
|
|
|
@@ -677,16 +680,6 @@ int ethercat(int argc, const char **argv)
|
|
|
} else if (strcmp(argv[1], "master") == 0) {
|
|
|
ec_master_cmd_master(global_cmd_master);
|
|
|
return 0;
|
|
|
-#ifdef CONFIG_EC_PERF_ENABLE
|
|
|
- } else if (strcmp(argv[1], "perf") == 0) {
|
|
|
- if (argc >= 4 && strcmp(argv[2], "-s") == 0) {
|
|
|
- ec_perf_init(&global_cmd_master->perf, atoi(argv[3]));
|
|
|
- return 0;
|
|
|
- } else if (argc >= 3 && strcmp(argv[2], "-v") == 0) {
|
|
|
- ec_perf_print_statistics(&global_cmd_master->perf);
|
|
|
- return 0;
|
|
|
- }
|
|
|
-#endif
|
|
|
} else if (strcmp(argv[1], "slaves") == 0) {
|
|
|
// ethercat slaves
|
|
|
if (argc == 2) {
|
|
|
@@ -926,6 +919,46 @@ int ethercat(int argc, const char **argv)
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
+ } else if (argc >= 3 && strcmp(argv[1], "timediff") == 0) {
|
|
|
+ if (strcmp(argv[2], "-s") == 0) {
|
|
|
+ uintptr_t flags;
|
|
|
+
|
|
|
+ flags = ec_osal_enter_critical_section();
|
|
|
+ global_cmd_master->systime_diff_enable = true;
|
|
|
+ global_cmd_master->curr_systime_diff = 0;
|
|
|
+ global_cmd_master->min_systime_diff = 0xffffffff;
|
|
|
+ global_cmd_master->max_systime_diff = 0;
|
|
|
+ global_cmd_master->systime_diff_count = 0;
|
|
|
+ global_cmd_master->total_systime_diff = 0;
|
|
|
+ ec_osal_leave_critical_section(flags);
|
|
|
+
|
|
|
+ } else if (strcmp(argv[2], "-d") == 0) {
|
|
|
+ uintptr_t flags;
|
|
|
+
|
|
|
+ flags = ec_osal_enter_critical_section();
|
|
|
+ global_cmd_master->systime_diff_enable = false;
|
|
|
+ ec_osal_leave_critical_section(flags);
|
|
|
+ } else if (strcmp(argv[2], "-v") == 0) {
|
|
|
+ for (uint32_t i = 0; i < 10; i++) {
|
|
|
+ EC_LOG_RAW("System Time Diff curr = %d, min = %d, max = %d, avg = %d ns\n",
|
|
|
+ global_cmd_master->curr_systime_diff,
|
|
|
+ global_cmd_master->min_systime_diff,
|
|
|
+ global_cmd_master->max_systime_diff,
|
|
|
+ global_cmd_master->total_systime_diff / global_cmd_master->systime_diff_count);
|
|
|
+ ec_osal_msleep(1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+#ifdef CONFIG_EC_PERF_ENABLE
|
|
|
+ } else if (strcmp(argv[1], "perf") == 0) {
|
|
|
+ if (argc >= 4 && strcmp(argv[2], "-s") == 0) {
|
|
|
+ ec_perf_init(&global_cmd_master->perf, atoi(argv[3]));
|
|
|
+ return 0;
|
|
|
+ } else if (argc >= 3 && strcmp(argv[2], "-v") == 0) {
|
|
|
+ ec_perf_print_statistics(&global_cmd_master->perf);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+#endif
|
|
|
} else {
|
|
|
}
|
|
|
|