Can't get ISR actors registed in Tracealyzer

Hi

Following up on the excellent advice given to the article given by @Boudewijn.Dijkstra .

I decided to name as many objects as possible. I am however failing to see any ISRs showing up as actors. I have also noted some inconsistencies in the configuration files with the API.

In trcConfig.h i have set TRC_CFG_INCLUDE_ISR_TRACING to 1. In the comments above this define, there are mentioning of two functions, which do not exist in the codebase

xTraceStoreISRBegin and xTraceStoreISREnd

I think that is likley that its meant to say.

xTraceISRBegin and xTraceISREnd

However, even using these calls in the manner described in the comments for xTraceISRRegister does not show the ISR as an actor

These are the steps i have taken in order to use tracealyzer when i use a EXTI to detect that a microSD card beeing inserted in a slot.

in the setup code

TraceISRHandle_t trcISRSDcard = 0;

Later during init

xTraceISRRegister("micrSD_insert_ISR", PRIORITY_INTERRUPT_EXTI_SD_CARD_DETECT, &trcISRSDcard);

And then the ISR code itself (shortened here)

void EXTI0_IRQHandler(void) {
	BaseType_t xHigherPriorityTaskWoken = pdFALSE;
	xTraceISRBegin(trcISRSDcard);

    .
    .
    .

	LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_0);

	xTraceISREnd(0);
	portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
}

Now, everything works and I can step through the code with a debugger probe, but nothing named micrSD_insert_ISR shows up in traceviewer when I look at it afterwards. (I have not yet added all ISRs)

What am I doing wrong?

Best regards

Martin

It might be that the “entry table” in TraceRecorder is running out of slots. Try increasing TRC_CFG_ENTRY_SLOTS. See the Troubleshooting section in the guide you linked to. Does that help?

Hi again

I defined TRC_CFG_USE_TRACE_ASSERT to 1 in the bottom of trcConfig. This got me a number of interesting things to fix.

I have configNUM_THREAD_LOCAL_STORAGE_POINTERS set to 0, which it did not like.

However, this seems to have been related to me enabling TRC_CFG_ENABLE_TASK_MONITOR in an attempt to track down the problem in the first place. So I defined TRC_CFG_ENABLE_TASK_MONITOR to 0 again.

I also had set TRC_CFG_ENTRY_SYMBOL_MAX_LENGTH to 50 apparently, which it also did not like. I caught an assert that said that 28 was the max value. It might be good to mention it in the config file.

Once I changed that it worked correctly.

// Martin

Great that you solved it and thanks for the feedback. I will make sure we add a note regarding the maximum symbol name length.

1 Like