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__
 | 
						|
 |