90 lines
2.4 KiB
C
90 lines
2.4 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
#include "ahb.h"
|
|
|
|
#include "iot_io.h"
|
|
#include "dbg_io.h"
|
|
#include "flash.h"
|
|
#include "sfc.h"
|
|
#include "smc.h"
|
|
#include "sram.h"
|
|
#include "gpio_mtx.h"
|
|
#include "sec_glb.h"
|
|
|
|
#define PSRAM_PRIME_ADDR 0x04000000
|
|
|
|
typedef void (*pJump)(void);
|
|
|
|
void gpio_sel()
|
|
{
|
|
gpio_mtx_enable();
|
|
gpio_sig_info_t sfc = {
|
|
6,
|
|
{
|
|
{IO_TYPE_OUT, 0, 23, 0xff, 6},
|
|
{IO_TYPE_OUT, 0, 24, 0xff, 7},
|
|
{IO_TYPE_IO, 0, 25, 4, 8},
|
|
{IO_TYPE_IO, 0, 26, 5, 9},
|
|
{IO_TYPE_IO, 0, 27, 6, 10},
|
|
{IO_TYPE_IO, 0, 28, 7, 11}
|
|
}
|
|
};
|
|
gpio_module_pin_select(&sfc);
|
|
gpio_module_sig_select(&sfc, GPIO_MTX_MODE_MATRIX);
|
|
|
|
gpio_sig_info_t smc = {
|
|
6,
|
|
{
|
|
{IO_TYPE_OUT, 0, 37, 0xff, 0},
|
|
{IO_TYPE_OUT, 0, 38, 0xff, 1},
|
|
{IO_TYPE_IO, 0, 39, 0, 2},
|
|
{IO_TYPE_IO, 0, 40, 1, 3},
|
|
{IO_TYPE_IO, 0, 41, 2, 4},
|
|
{IO_TYPE_IO, 0, 42, 3, 5}
|
|
}
|
|
};
|
|
gpio_module_pin_select(&smc);
|
|
gpio_module_sig_select(&smc, GPIO_MTX_MODE_CORE);
|
|
}
|
|
|
|
void emc_rst() {
|
|
ahb_cache_enable();
|
|
sec_glb_enable(SEC_GLB_EMC);
|
|
flash_init(1);
|
|
sram_qspi_init();
|
|
|
|
sram_qspi_enter();
|
|
hal_smc_qspi_quad_cfg(0);
|
|
ahb_cache_enable();
|
|
ahb_cache_reset();
|
|
}
|
|
|
|
#ifdef __GNUC__
|
|
|
|
int main(void) {
|
|
volatile int i = 0;
|
|
gpio_sel();
|
|
dbg_uart_init();
|
|
iot_printf("start to run jump test\r\n");
|
|
uint32_t addr = PSRAM_PRIME_ADDR;
|
|
emc_rst();
|
|
for(i = 0; i< 1000; i++);
|
|
pJump pjump = (pJump) addr;
|
|
pjump();
|
|
return 0;
|
|
}
|
|
#endif // __GCC__
|
|
|