Exemple #1
0
int main()
{
	pFunction Jump_To_Application;
	uint32_t JumpAddress;

	SystemInit();		/* 配置系统时钟为72M */	
	NVIC_Configuration();

	watchdog_init();
	delay_init(72);	//72M
	w25x64_init();

	InitSerial();
	Signel_led_init();
	TIM_init();
	SerialPutString("BootLoader Runing...\n");
	SerialPutString("BootLoader for ");
	SerialPutString(SYSTEM_NAME);
	SerialPutString("\n");
	ymodem();

	iap();
	SerialPutString("Load App!\n");

	TIM_Cmd(TIM2,DISABLE);
	if (((*(__IO uint32_t*)APP_LOCATION) & 0x2FFE0000 ) == 0x20000000)
	{
		JumpAddress = *(__IO uint32_t*) (APP_LOCATION + 4);
		Jump_To_Application = (pFunction) JumpAddress;
		__set_MSP(*(__IO uint32_t*) APP_LOCATION);
		Jump_To_Application();
	}
	return 0;
}
Exemple #2
0
int main(void)
{
    typedef void (*pFunction)(void);
    pFunction Jump_To_Application;
    uint32_t  jumpAddress;
    __disable_irq();

    jumpAddress         = *(__IO uint32_t *)(MAIN_PROGRAM_START_ADDRESS + 4);
    Jump_To_Application = (pFunction)jumpAddress;
    __set_MSP(*(__IO uint32_t *)MAIN_PROGRAM_START_ADDRESS);

    Jump_To_Application();

    while (1)
    {
    }
}
Exemple #3
0
/**
 ******************************************************************************
 * @brief   иЩ╪╤жВ╨╞йЩ
 * @param[in]  None
 * @param[out] None
 *
 * @retval     None
 ******************************************************************************
 */
int32_t
main(void)
{
    pFunction Jump_To_Application;
    uint32_t JumpAddress;

    /* ЁУй╪╩╞иХ╠╦ */
    hw_init();

    print("\r\r\r\r\n");
    print("*********************************************\r\n");
    print("*               BootLoader v1.1             *\r\n");
    print("*         CopyRight 2013 discovery407.      *\r\n");
    print("*********************************************\r\n");

    /* ©╙фТ╤╗й╠фВ */
    systick_open();

    /* ╢╝©зиЩ╪╤ */
    if (OK != uart_update())
    {
        return -1;
    }

    /* ╧ь╠у╤╗й╠фВ */
    systick_stop();
    /* лЬв╙жас╕сцо╣мЁ */
    print("Enter application ...\r\n");

    /* Jump to user application */
    JumpAddress = *(__IO uint32_t*) (APP_START_ADDRESS + 4);
    Jump_To_Application = (pFunction) JumpAddress;
    /* Initialize user application's Stack Pointer */
    __set_MSP(*(__IO uint32_t*) APP_START_ADDRESS);
    Jump_To_Application();

    return 0;
}
Exemple #4
0
void run_app(uint32_t ApplicationAddress)
{
	uint32_t JumpAddress;
	pFunction Jump_To_Application;
	
	printf("AppAddress : %h\n\r", ApplicationAddress);
	/* Test if user code is programmed starting from address "ApplicationAddress" */
    if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFC0000 ) == 0x20000000)
	{ 
		/* Jump to user application */
		JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
		Jump_To_Application = (pFunction) JumpAddress;
		/* Initialize user application's Stack Pointer */
		__set_MSP(*(__IO uint32_t*) ApplicationAddress);
		Jump_To_Application();
    }
    else
    {
    	printf("*** Application isn't Exist ...\n\r");
    	  /* Infinite loop */
		while (1) {}
    }
}