231 lines
5.4 KiB
Plaintext
231 lines
5.4 KiB
Plaintext
__param __sf_addr__=0x10008000;
|
|
__param __sp0_addr__=0x10288000;
|
|
__param __sp1_addr__=0x10308000;
|
|
__param __sx0_addr__=0x10388000;
|
|
__param __sx1_addr__=0x10408000;
|
|
|
|
|
|
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 = 0xF0680000 + 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 = 0xF0680000 + 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 = 0xF0680000 + 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);
|
|
}
|
|
|
|
sx0_remap()
|
|
{
|
|
core_remap(__sx0_addr__, 0x20, 0x34);
|
|
}
|
|
|
|
sx1_remap()
|
|
{
|
|
core_remap(__sx1_addr__, 0x40, 0x54);
|
|
}
|
|
|
|
sp0_remap()
|
|
{
|
|
core_remap(__sp0_addr__, 0x60, 0x74);
|
|
}
|
|
|
|
sp1_remap()
|
|
{
|
|
core_remap(__sp1_addr__, 0x80, 0x94);
|
|
}
|
|
|
|
sf_reset()
|
|
{
|
|
__var reg;
|
|
__var val;
|
|
reg = 0xf0690000 + 0x1A0C;
|
|
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 = 0xf0690000 + addr_offset;
|
|
val = __readMemory32(reg, "Memory");
|
|
val |= (1<<0);
|
|
__message val:%x;
|
|
__writeMemory32(val, reg, "Memory");
|
|
__delay(1000);
|
|
}
|
|
|
|
|
|
sp0_start()
|
|
{
|
|
core_start(0x1A14);
|
|
}
|
|
|
|
sp1_start()
|
|
{
|
|
core_start(0x1A1C);
|
|
}
|
|
|
|
sx0_start()
|
|
{
|
|
core_start(0x1A24);
|
|
}
|
|
|
|
sx1_start()
|
|
{
|
|
core_start(0x1A2C);
|
|
}
|
|
|
|
sp_split_mode()
|
|
{
|
|
sp_split(0x1);
|
|
}
|
|
|
|
sp_locksetp_mode()
|
|
{
|
|
sp_split(0);
|
|
}
|
|
|
|
sp_split(val_set)
|
|
{
|
|
__var reg_addr;
|
|
__var reg_val;
|
|
__var start_bit_val;
|
|
__var width;
|
|
__var val;
|
|
|
|
start_bit_val = 0x160;
|
|
width = 0x1;
|
|
val = val_set;
|
|
reg_addr = 0xF0680000 + 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 = 0x1A0;
|
|
width = 0x1;
|
|
val = val_set;
|
|
reg_addr = 0xF0680000 + 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 = 0x1A1;
|
|
width = 0x1;
|
|
val = val_set;
|
|
reg_addr = 0xF0680000 + 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");
|
|
}
|
|
|
|
sx_split_mode()
|
|
{
|
|
sx_split(0x1);
|
|
}
|
|
|
|
sx_locksetp_mode()
|
|
{
|
|
sx_split(0);
|
|
}
|
|
|
|
sx_split(val_set)
|
|
{
|
|
__var reg_addr;
|
|
__var reg_val;
|
|
__var start_bit_val;
|
|
__var width;
|
|
__var val;
|
|
|
|
start_bit_val = 0x180;
|
|
width = 0x1;
|
|
val = val_set;
|
|
reg_addr = 0xF0680000 + 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 = 0x1C0;
|
|
width = 0x1;
|
|
val = val_set;
|
|
reg_addr = 0xF0680000 + 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 = 0x1C1;
|
|
width = 0x1;
|
|
val = val_set;
|
|
reg_addr = 0xF0680000 + 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");
|
|
}
|
|
|
|
/*********************************************************************
|
|
* execUserReset()
|
|
execUserPreReset()
|
|
*********************************************************************/
|
|
execUserPreload()
|
|
{
|
|
__message "------------------------------ execUserPreload Remap ---------------------------------";
|
|
sf_remap();
|
|
__delay(1000);
|
|
|
|
//__message "------------------------------ Reset ---------------------------------";
|
|
sf_reset();
|
|
|
|
__message "------------------------------ Halt CPU by Jlink ---------------------------------";
|
|
__jlinkExecCommand("Halt");
|
|
} |