doubao_chat/apps/common/movable/example.c

55 lines
1.5 KiB
C

#include "app_config.h"
#include "generic/typedef.h"
#include "asm/sdram.h"
#ifdef CONFIG_MP3_DEC_CODE_MOVABLE
static const struct sdram_cfg_info_t sdram_cfg = {
.sdram_size = 2 * 1024 * 1024,
.sdram_test_size = 4 * 1024,
.sdram_config_val = -1,
.sdram_mode = 0,
.sdram_pll3_en = 0,
.sdram_pll3_nousb_en = 0,
.sdram_cl = 2,
.sdram_rlcnt = 1,
.sdram_d_dly = 1,
.sdram_q_dly = 1,
.sdram_phase = 3,
.sdram_dq_dly_trm = 4,
};
static u32 *start_of_region = NULL;
extern u32 __mp3_dec_movable_slot_start[];
extern u32 __mp3_dec_movable_slot_end[];
extern u8 __mp3_dec_movable_region_start[];
extern u8 __mp3_dec_movable_region_end[];
static void enter_mp3_dec_movable_region(u32 **start_of_region, u8 *code_load_addr)
{
u32 code_size = __mp3_dec_movable_region_end - __mp3_dec_movable_region_start;
code_movable_load(__mp3_dec_movable_region_start, code_size, code_load_addr, __mp3_dec_movable_slot_start, __mp3_dec_movable_slot_end, start_of_region);
}
static void exit_mp3_dec_movable_region(u32 **start_of_region, u8 *code_load_addr)
{
code_movable_unload(__mp3_dec_movable_region_start, __mp3_dec_movable_slot_start, __mp3_dec_movable_slot_end, start_of_region);
}
void mp3_dec_movable_test_start(void)
{
sdram_init(&sdram_cfg);
enter_mp3_dec_movable_region(&start_of_region, __NONCPU_ADDR__);
}
void mp3_dec_movable_test_stop(void)
{
exit_mp3_dec_movable_region(&start_of_region, __NONCPU_ADDR__);
sdram_uninit();
}
#endif