Free RTOS+ Trace integration

tanariana wrote on Wednesday, March 26, 2014:

Hi,
I need help with Trace recorder library integration. I’m using Keil and STM32F407.
I included recorder library in my project but when I try to compile I got an error which I don’t know how to fix. Error is in code:

void prvTraceEnableIRQ(void)
{
asm volatile (“cpsie i”);
}

void prvTraceDisableIRQ(void)
{
asm volatile (“cpsid i”);
}

void prvTraceSetIRQMask(uint32_t priMask)
{
asm volatile (“MSR primask, %0;” : : “r” (priMask));
}

uint32_t prvTraceGetIRQMask(void)
{
uint32_t result;
asm volatile (“MRS %0, primask” : “=r” (result));
return result;
}

Error says:
GenericRecorderLibSrc\trcHardwarePort.c(65): error: #20: identifier “asm” is undefined
GenericRecorderLibSrc\trcHardwarePort.c(65): error: #65: expected a “;”

Thank you for your help!

rtel wrote on Wednesday, March 26, 2014:

It looks like you are trying to use GCC syntax in a Keil project. IAR will generally let you do that, but Keil won’t.

You need to look in the Keil manual to see what to do, but as a head start

asm volatile (“cpsie i”); can be replaced with __enable_irq();

Likewise asm volatile (“cpsid i”); can be replaced with __disable_irq();

I imagine there is another such intrinsic to get the primask value.

Regards.

tanariana wrote on Wednesday, March 26, 2014:

Thank you for your help!