Files
E3_boot/devices/E3106/script/IAR/xip_remap.mac
2025-11-07 10:05:24 +08:00

94 lines
2.5 KiB
Plaintext

__param __sf_addr__=0x100c1000;
core_remap(addr, start_bit1, start_bit2)
{
__var reg_addr;
__var reg_val;
__var start_bit_val;
__var width;
__var val;
start_bit_val = start_bit1;
width = 0x14;
val = addr>>12;
reg_addr = 0xf08b0000 + 0x1400 + (start_bit_val>>5)*4;
__message reg_addr:%x;
reg_val = __readMemory32(reg_addr, "Memory");
__message "original ", reg_val :%x;
reg_val = reg_val&(~(((1<<width)-1)<<(start_bit_val&0x1f)));
reg_val = reg_val|(val<<(start_bit_val&0x1f));
__writeMemory32(reg_val, reg_addr, "Memory");
__message "new ", reg_val :%x;
reg_addr = 0xf08b0000 + 0x1400 + (start_bit_val>>5)*4;
reg_val = __readMemory32(reg_addr, "Memory");
reg_val = reg_val&(~(((1<<width)-1)<<(start_bit_val & 0x1f)));
reg_val = reg_val|(val<<(start_bit_val & 0x1f));
__writeMemory32(reg_val, reg_addr, "Memory");
start_bit_val = start_bit2;
width = 0x1;
val = 1;
reg_addr = 0xf08b0000 + 0x1400 + (start_bit_val>>5)*4;
__message reg_addr:%x;
reg_val = __readMemory32(reg_addr, "Memory");
__message "original ", reg_val :%x;
reg_val = reg_val&(~(((1<<width)-1)<<(start_bit_val & 0x1f)));
reg_val = reg_val|(val<<(start_bit_val & 0x1f));
__writeMemory32(reg_val, reg_addr, "Memory");
__message "new ", reg_val :%x;
reg_addr = 0xf0670004;
reg_val = __readMemory32(reg_addr, "Memory");
reg_val |= 0x01;
__writeMemory32(reg_val, reg_addr, "Memory");
}
sf_remap()
{
core_remap(__sf_addr__, 0x0, 0x14);
}
sf_reset()
{
__var reg;
__var val;
reg = 0xf08c0000 + 0x1A04;
val = __readMemory32(reg, "Memory");
val |= (1<<6);
__message val:%x;
__writeMemory32(val, reg, "Memory");
__delay(1000);
}
core_start(addr_offset)
{
__var reg;
__var val;
reg = 0xf08c0000 + addr_offset;
val = __readMemory32(reg, "Memory");
val |= (1<<0);
__message val:%x;
__writeMemory32(val, reg, "Memory");
__delay(1000);
}
/*********************************************************************
* execUserReset()
execUserPreReset()
*********************************************************************/
execUserPreload()
{
__message "------------------------------ execUserPreload Remap ---------------------------------";
sf_remap();
__delay(1000);
//__message "------------------------------ Reset ---------------------------------";
sf_reset();
__message "------------------------------ Halt CPU by Jlink ---------------------------------";
__jlinkExecCommand("Halt");
}