mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 21:53:35 +08:00
Merged debug level commits from Tridge
This commit is contained in:
committed by
Lorenz Meier
parent
bfecfbf5ee
commit
6eb69b07a8
+22
-5
@@ -63,11 +63,12 @@ struct sys_state_s system_state;
|
||||
|
||||
static struct hrt_call serial_dma_call;
|
||||
|
||||
// global debug level for isr_debug()
|
||||
/* global debug level for isr_debug() */
|
||||
volatile uint8_t debug_level = 0;
|
||||
volatile uint32_t i2c_resets = 0;
|
||||
volatile uint32_t i2c_loop_resets = 0;
|
||||
|
||||
struct hrt_call loop_overtime_call;
|
||||
|
||||
|
||||
/*
|
||||
a set of debug buffers to allow us to send debug information from ISRs
|
||||
@@ -111,6 +112,19 @@ static void show_debug_messages(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
catch I2C lockups
|
||||
*/
|
||||
static void loop_overtime(void *arg)
|
||||
{
|
||||
debug("RESETTING\n");
|
||||
i2c_loop_resets++;
|
||||
i2c_dump();
|
||||
i2c_reset();
|
||||
hrt_call_after(&loop_overtime_call, 50000, (hrt_callout)loop_overtime, NULL);
|
||||
}
|
||||
|
||||
|
||||
int user_start(int argc, char *argv[])
|
||||
{
|
||||
/* run C++ ctors before we go any further */
|
||||
@@ -152,7 +166,6 @@ int user_start(int argc, char *argv[])
|
||||
(main_t)controls_main,
|
||||
NULL);
|
||||
|
||||
|
||||
struct mallinfo minfo = mallinfo();
|
||||
debug("free %u largest %u\n", minfo.mxordblk, minfo.fordblks);
|
||||
|
||||
@@ -168,6 +181,11 @@ int user_start(int argc, char *argv[])
|
||||
/* XXX we should use CONFIG_IDLE_CUSTOM and take over the idle thread instead of running two additional tasks */
|
||||
uint8_t counter=0;
|
||||
for (;;) {
|
||||
/*
|
||||
if we are not scheduled for 100ms then reset the I2C bus
|
||||
*/
|
||||
hrt_call_after(&loop_overtime_call, 100000, (hrt_callout)loop_overtime, NULL);
|
||||
|
||||
poll(NULL, 0, 10);
|
||||
perf_begin(mixer_perf);
|
||||
mixer_tick();
|
||||
@@ -175,10 +193,9 @@ int user_start(int argc, char *argv[])
|
||||
show_debug_messages();
|
||||
if (counter++ == 200) {
|
||||
counter = 0;
|
||||
isr_debug(0, "tick debug=%u status=0x%x resets=%u loop_resets=%u",
|
||||
isr_debug(1, "tick debug=%u status=0x%x resets=%u",
|
||||
(unsigned)debug_level,
|
||||
(unsigned)r_status_flags,
|
||||
(unsigned)i2c_resets,
|
||||
(unsigned)i2c_loop_resets);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user