ruggerobandera wrote on Friday, October 21, 2016:
I’m using FreeRTOS V8.2.3 and a STM32746G with the discovery board.
I create a simple FreeRTOS application and all works fine. Now I create a Simple Bootloader (no RTOS) The Simple Bootloader is mapped ta 0x08000000 my Application is mapped 0x08010000.
After the jump below the code I used
typedef void (*p_function)(void);
// address == 0x08010000.
void JmpToAddress(unsigned int address)
{
    uint8_t i;
    uint32_t jump_address = *(__IO uint32_t*)(address + 4);
    p_function p_jump_function = (p_function)jump_address;
    __disable_irq(); // stop all interrupts
    // Disable IRQs
    for(i = 0;i < 8;i++)  {
        NVIC->ICER[i] = 0xFFFFFFFF;
    }
    // Clear pending IRQs
    for(i = 0;i < 8;i++)  {
        NVIC->ICPR[i] = 0xFFFFFFFF;
    }
    __enable_irq();
    __set_CONTROL(0);
    // re-init stack pointer (first entry of the vector table)
    __set_MSP(*(__IO uint32_t*)address);
   p_jump_function();
}
my application start correctly RTOS create theall the tasks and jump to the firsttask.
My code is
firsttask(void const * argument)
{
   kernelStatus = osKernelRunning();// status is ok
	
	for( ;; ) {
		// do somethings ...
		OSIDelay(200); //never exit
	}
}
It Seem’s as the scheduler dosen’t run.
Any Idea