I'm trying to compile FreeRTOS_Toggle_Led_Example_S32K358_SMP project and it produces the following error:
C:/NXP/workspaceS32DS.3.6.0/FreeRTOS_Toggle_Led_Example_S32K358_SMP/generate/include/FreeRTOSConfig.h:64:66: error: implicit declaration of function 'taskDISABLE_INTERRUPTS' [-Werror=implicit-function-declaration]
arm-none-eabi-gcc "@RTD/src/Clock_Ip.args" -MMD -MP -MF"RTD/src/Clock_Ip_Monitor.d" -MT"RTD/src/Clock_Ip_Monitor.o" -o "RTD/src/Clock_Ip_Monitor.o" "../RTD/src/Clock_Ip_Monitor.c"
64 | #define configASSERT(x) if((x)==0) { taskDISABLE_INTERRUPTS(); for( ;; ); }
| ^~~~~~~~~~~~~~~~~~~~~~
../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/portmacro.h:184:17: note: in expansion of macro 'configASSERT'
184 | configASSERT( Get_64(&ucRecursionCountByLock[ulLockNum]) != 255u);
| ^~~~~~~~~~~~
Missing #include?
Is there a quick way to fix this?
I'm using DS 3.6.0 and 'FreeRTOS for S32K3XX version 5.0.0' package. Example taken from 'SW32K3 FreeRTOS 11.1.0 5.0.0 CD1 D2409 Example Projects' section of the above package.
thanks
已解决! 转到解答。
Hi @ogai,
This issue has already been reported to the SW team. The provided example is incomplete, and some workarounds are needed for it to work correctly:
1. Configuration .mex needs to be updated to include SMP support:
2. Calls to vPortGET_CORE_ID need to be replace with calls to portGET_CORE_ID.
3. In ASSERT(), change macro definition to "if((x)==0) {__asm volatile ( " cpsid i " ::: "memory" ); for( ;;); }
Best regards,
Julián
Hi @ogai,
This issue has already been reported to the SW team. The provided example is incomplete, and some workarounds are needed for it to work correctly:
1. Configuration .mex needs to be updated to include SMP support:
2. Calls to vPortGET_CORE_ID need to be replace with calls to portGET_CORE_ID.
3. In ASSERT(), change macro definition to "if((x)==0) {__asm volatile ( " cpsid i " ::: "memory" ); for( ;;); }
Best regards,
Julián