More details in report.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14752 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2021-09-13 07:51:30 +00:00
parent 3328a2c1b5
commit da74d65fbf
1 changed files with 20 additions and 10 deletions

View File

@ -232,7 +232,6 @@ static void guard_cb(virtual_timer_t *vtp, void *p) {
*/
void vt_storm_execute(const vt_storm_config_t *cfg) {
unsigned i;
bool delta_warning;
config = cfg;
@ -277,7 +276,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
#endif
for (i = 1; i <= VT_STORM_CFG_ITERATIONS; i++) {
bool dw;
bool warning;
chprintf(cfg->out, "Iteration %d\r\n", i);
chThdSleep(TIME_MS2I(10));
@ -286,9 +285,10 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
vtcus = 0;
delay = TIME_MS2I(5);
saturated = false;
delta_warning = false;
saturated = false;
warning = false;
do {
rfcu_mask_t mask;
sysinterval_t decrease;
/* Starting sweepers.*/
@ -300,7 +300,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
chVTSetI(&sweeperm3, delay - 3, sweeperm3_cb, NULL);
chVTSetI(&sweeperp3, delay + 3, sweeperp3_cb, NULL);
chVTSetI(&wrapper, (sysinterval_t) - 1, wrapper_cb, NULL);
chVTSetContinuousI(&continuous, CH_CFG_ST_TIMEDELTA * 10, continuous_cb, NULL);
chVTSetContinuousI(&continuous, TIME_US2I(50), continuous_cb, NULL);
chVTSetI(&guard0, TIME_MS2I(250) + (CH_CFG_TIME_QUANTUM / 2), guard_cb, NULL);
chVTSetI(&guard1, TIME_MS2I(250) + (CH_CFG_TIME_QUANTUM - 1), guard_cb, NULL);
chVTSetI(&guard2, TIME_MS2I(250) + (CH_CFG_TIME_QUANTUM + 1), guard_cb, NULL);
@ -324,18 +324,28 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
chVTResetI(&guard3);
/* Check for relevant RFCU events.*/
dw = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA |
CH_RFCU_VT_SKIPPED_DEADLINE) != (rfcu_mask_t)0;
mask = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA |
CH_RFCU_VT_SKIPPED_DEADLINE);
chSysUnlock();
if (saturated) {
chprintf(cfg->out, "#");
break;
}
else if (dw) {
else if (mask == CH_RFCU_VT_INSUFFICIENT_DELTA) {
palToggleLine(config->line);
chprintf(cfg->out, "x");
warning = true;
}
else if (mask == CH_RFCU_VT_SKIPPED_DEADLINE) {
palToggleLine(config->line);
chprintf(cfg->out, "+");
delta_warning = true;
warning = true;
}
else if (mask == (CH_RFCU_VT_INSUFFICIENT_DELTA | CH_RFCU_VT_SKIPPED_DEADLINE)) {
palToggleLine(config->line);
chprintf(cfg->out, "*");
warning = true;
}
else {
palToggleLine(config->line);
@ -351,7 +361,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
delay = delay - decrease;
} while (delay >= (sysinterval_t)VT_STORM_CFG_MIN_DELAY);
if (delta_warning) {
if (warning) {
chprintf(cfg->out, "\r\nRFCU warning detected", TIME_I2US(delay), delay);
}
else {