I have a big issue with my project.
I have a Bootloader program, that is located in the 0x00 position on my board. I’m using the TMB507LS3137 kit. When I tested my Bootloader program recording different programs at 0x20020 location (without RTOS), it worked fine.
When I tried to record a FreeRTOS program in the 0x20020 location, nothing happened. It didn’t work, it stuck when it tried to create a task.
The issue is when the FreeRTOS program enters the following line:
#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType )
BaseType_t xRunningPrivileged = prvRaisePrivilege();
xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
portRESET_PRIVILEGE( xRunningPrivileged );
I think that it doesn’t find the prvRaisePrivilege(); function (it’s defined as an extern BaseType_t prvRaisePrivilege( void ); ) (In fact, I cannot find this function). But if I try to run the FreeRTOS program only at location 0x000, the program works well.
It looks like the program jumps to another location at the beginning of the program, to find this function.
How can I solve this issue? Maybe I need an extra change to can run the FreeRTOS program in another memory location? I double-checked my Bootloader and my FreeRTOS program and I didn’t find any issue. I contacted Texas support, and they suggested that it might be a FreeRTOS issue when the program tries to jump to another memory location.
Thanks in advance.