Revision 3e1a9c79 os/core/src/aos_system.c
os/core/src/aos_system.c | ||
---|---|---|
80 | 80 |
static aos_timestamp_t _syssynctime; |
81 | 81 |
#endif |
82 | 82 |
|
83 |
#if ((AMIROOS_CFG_SSSP_MASTER != true) && (AMIROOS_CFG_PROFILE == true)) || defined(__DOXYGEN__) |
|
84 |
static float _syssyncskew; |
|
85 |
#define SYSTEM_SYSSYNCSKEW_LPFACTOR (0.1f / AOS_SYSTEM_TIME_RESOLUTION) |
|
86 |
#endif |
|
87 |
|
|
83 | 88 |
#if (AMIROOS_CFG_SHELL_ENABLE == true) || defined(__DOXYGEN__) |
84 | 89 |
/** |
85 | 90 |
* @brief Shell thread working area. |
... | ... | |
461 | 466 |
_printSystemInfo(stream); |
462 | 467 |
|
463 | 468 |
// print time measurement precision |
464 |
chprintf(stream, "system time resolution: %uus\n", AOS_SYSTEM_TIME_RESOLUTION);
|
|
469 |
chprintf(stream, "module time resolution: %uus\n", AOS_SYSTEM_TIME_RESOLUTION);
|
|
465 | 470 |
|
466 | 471 |
// print system uptime |
467 | 472 |
aos_timestamp_t uptime; |
... | ... | |
473 | 478 |
chprintf(stream, "%10u seconds\n", (uint8_t)(uptime % MICROSECONDS_PER_MINUTE / MICROSECONDS_PER_SECOND)); |
474 | 479 |
chprintf(stream, "%10u milliseconds\n", (uint16_t)(uptime % MICROSECONDS_PER_SECOND / MICROSECONDS_PER_MILLISECOND)); |
475 | 480 |
chprintf(stream, "%10u microseconds\n", (uint16_t)(uptime % MICROSECONDS_PER_MILLISECOND / MICROSECONDS_PER_MICROSECOND)); |
481 |
#if (AMIROOS_CFG_SSSP_MASTER != true) && (AMIROOS_CFG_PROFILE == true) |
|
482 |
chprintf(stream, "SSSP synchronization offset: %.3fus per %uus\n", _syssyncskew, AMIROOS_CFG_SSSP_SYSSYNCPERIOD); |
|
483 |
#endif |
|
484 |
_printSystemInfoSeparator(stream, '=', SYSTEM_INFO_WIDTH); |
|
476 | 485 |
|
477 | 486 |
return AOS_OK; |
478 | 487 |
} |
... | ... | |
615 | 624 |
// align the uptime with the synchronization period |
616 | 625 |
if (uptime % AMIROOS_CFG_SSSP_SYSSYNCPERIOD < AMIROOS_CFG_SSSP_SYSSYNCPERIOD / 2) { |
617 | 626 |
_uptime -= uptime % AMIROOS_CFG_SSSP_SYSSYNCPERIOD; |
627 |
#if (AMIROOS_CFG_PROFILE == true) |
|
628 |
_syssyncskew = ((1.0f - SYSTEM_SYSSYNCSKEW_LPFACTOR) * _syssyncskew) + (SYSTEM_SYSSYNCSKEW_LPFACTOR * (uptime % AMIROOS_CFG_SSSP_SYSSYNCPERIOD)); |
|
629 |
#endif |
|
618 | 630 |
} else { |
619 | 631 |
_uptime += AMIROOS_CFG_SSSP_SYSSYNCPERIOD - (uptime % AMIROOS_CFG_SSSP_SYSSYNCPERIOD); |
632 |
#if (AMIROOS_CFG_PROFILE == true) |
|
633 |
_syssyncskew = ((1.0f - SYSTEM_SYSSYNCSKEW_LPFACTOR) * _syssyncskew) - (SYSTEM_SYSSYNCSKEW_LPFACTOR * (AMIROOS_CFG_SSSP_SYSSYNCPERIOD - (uptime % AMIROOS_CFG_SSSP_SYSSYNCPERIOD))); |
|
634 |
#endif |
|
620 | 635 |
} |
621 | 636 |
} |
622 | 637 |
} |
... | ... | |
709 | 724 |
chVTObjectInit(&_syssynctimer); |
710 | 725 |
_syssynctime = 0; |
711 | 726 |
#endif |
727 |
#if (AMIROOS_CFG_SSSP_MASTER != true) && (AMIROOS_CFG_PROFILE == true) |
|
728 |
_syssyncskew = 0.0f; |
|
729 |
#endif |
|
712 | 730 |
|
713 | 731 |
// set aos configuration |
714 | 732 |
aos.sssp.stage = AOS_SSSP_STARTUP_2_1; |
Also available in: Unified diff