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:
parent
3328a2c1b5
commit
da74d65fbf
|
@ -232,7 +232,6 @@ static void guard_cb(virtual_timer_t *vtp, void *p) {
|
||||||
*/
|
*/
|
||||||
void vt_storm_execute(const vt_storm_config_t *cfg) {
|
void vt_storm_execute(const vt_storm_config_t *cfg) {
|
||||||
unsigned i;
|
unsigned i;
|
||||||
bool delta_warning;
|
|
||||||
|
|
||||||
config = cfg;
|
config = cfg;
|
||||||
|
|
||||||
|
@ -277,7 +276,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (i = 1; i <= VT_STORM_CFG_ITERATIONS; i++) {
|
for (i = 1; i <= VT_STORM_CFG_ITERATIONS; i++) {
|
||||||
bool dw;
|
bool warning;
|
||||||
|
|
||||||
chprintf(cfg->out, "Iteration %d\r\n", i);
|
chprintf(cfg->out, "Iteration %d\r\n", i);
|
||||||
chThdSleep(TIME_MS2I(10));
|
chThdSleep(TIME_MS2I(10));
|
||||||
|
@ -286,9 +285,10 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
|
||||||
vtcus = 0;
|
vtcus = 0;
|
||||||
|
|
||||||
delay = TIME_MS2I(5);
|
delay = TIME_MS2I(5);
|
||||||
saturated = false;
|
saturated = false;
|
||||||
delta_warning = false;
|
warning = false;
|
||||||
do {
|
do {
|
||||||
|
rfcu_mask_t mask;
|
||||||
sysinterval_t decrease;
|
sysinterval_t decrease;
|
||||||
|
|
||||||
/* Starting sweepers.*/
|
/* Starting sweepers.*/
|
||||||
|
@ -300,7 +300,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
|
||||||
chVTSetI(&sweeperm3, delay - 3, sweeperm3_cb, NULL);
|
chVTSetI(&sweeperm3, delay - 3, sweeperm3_cb, NULL);
|
||||||
chVTSetI(&sweeperp3, delay + 3, sweeperp3_cb, NULL);
|
chVTSetI(&sweeperp3, delay + 3, sweeperp3_cb, NULL);
|
||||||
chVTSetI(&wrapper, (sysinterval_t) - 1, wrapper_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(&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(&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);
|
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);
|
chVTResetI(&guard3);
|
||||||
|
|
||||||
/* Check for relevant RFCU events.*/
|
/* Check for relevant RFCU events.*/
|
||||||
dw = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA |
|
mask = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA |
|
||||||
CH_RFCU_VT_SKIPPED_DEADLINE) != (rfcu_mask_t)0;
|
CH_RFCU_VT_SKIPPED_DEADLINE);
|
||||||
chSysUnlock();
|
chSysUnlock();
|
||||||
|
|
||||||
if (saturated) {
|
if (saturated) {
|
||||||
chprintf(cfg->out, "#");
|
chprintf(cfg->out, "#");
|
||||||
break;
|
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);
|
palToggleLine(config->line);
|
||||||
chprintf(cfg->out, "+");
|
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 {
|
else {
|
||||||
palToggleLine(config->line);
|
palToggleLine(config->line);
|
||||||
|
@ -351,7 +361,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
|
||||||
delay = delay - decrease;
|
delay = delay - decrease;
|
||||||
} while (delay >= (sysinterval_t)VT_STORM_CFG_MIN_DELAY);
|
} 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);
|
chprintf(cfg->out, "\r\nRFCU warning detected", TIME_I2US(delay), delay);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in New Issue