47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
/* Board */
|
|
#include "clock_config.h"
|
|
|
|
/* ROM API */
|
|
#include "fsl_iap.h"
|
|
|
|
/* Private */
|
|
#include "app_aux_ctrl.h"
|
|
|
|
#define APP_AUX_CTRL_BASE (0x00072000UL)
|
|
|
|
int app_aux_ctrl_init(void) {
|
|
int ret = 0;
|
|
status_t sdk_ret = kStatus_Success;
|
|
flash_config_t f_config;
|
|
|
|
BOARD_BootClockFROHF96M(); /* Adjust clock to use FLASH APIs. */
|
|
|
|
sdk_ret = FLASH_Init(&f_config);
|
|
if (sdk_ret != kStatus_Success) {
|
|
ret = -1;
|
|
goto restore_clock_exit;
|
|
}
|
|
|
|
sdk_ret = FLASH_VerifyErase(&f_config, APP_AUX_CTRL_BASE, 512);
|
|
/* This is a special case, since we need to make sure the flash is NOT erased before reading the content. */
|
|
if (sdk_ret == kStatus_Success) {
|
|
ret = -2;
|
|
goto restore_clock_exit;
|
|
}
|
|
|
|
/* Restore PLL0 clock before booting the Aux domain */
|
|
BOARD_InitBootClocks();
|
|
|
|
/* Configure boot address */
|
|
SYSCON->CPBOOT = APP_AUX_CTRL_BASE;
|
|
|
|
/* Go! */
|
|
SYSCON->CPUCTRL = (0xC0C4 << 16U) | SYSCON_CPUCTRL_CPU1RSTEN(1) | SYSCON_CPUCTRL_CPU1CLKEN(1);
|
|
SYSCON->CPUCTRL = (0xC0C4 << 16U) | SYSCON_CPUCTRL_CPU1RSTEN(0) | SYSCON_CPUCTRL_CPU1CLKEN(1);
|
|
|
|
return ret;
|
|
|
|
restore_clock_exit:
|
|
BOARD_InitBootClocks();
|
|
return ret;
|
|
} |