Hi,
I' m developing a boot system for c6678. I want to activate all cores(1-7) from core 0
I used a code from the pcieboot_helloworld example but the cores(1-7) didn't wake up.
What I miss? Can you help me?
#define DEVICE_REG32_W(x,y) *(volatile uint32_t *)(x)=(y)
#define DEVICE_REG32_R(x) (*(volatile uint32_t *)(x))
#define CHIP_LEVEL_REG 0x02620000
#define KICK0 (CHIP_LEVEL_REG + 0x0038)
#define KICK1 (CHIP_LEVEL_REG + 0x003C)
#define MAGIC_ADDR 0x87fffc
#define BOOT_MAGIC_ADDR(x) (MAGIC_ADDR + (1<<28) + (x<<24))
#define IPCGR(x) (0x02620240 + x*4)
#define BOOT_MAGIC_NUMBER 0xBABEFACE
extern far uint32_t _c_int00;
if (core == 0)
{
/* Unlock the chip registers */
DEVICE_REG32_W(KICK0, 0x83e70b13);
DEVICE_REG32_W(KICK1, 0x95a4f1e0);
/* Writing the entry address to other cores */
for (core = 1; core < 8; core++)
{
DEVICE_REG32_W(BOOT_MAGIC_ADDR(core), (uint32_t)&_c_int00);
/* Delay 1us sec */
cycleDelay (1000000);
}
for (core = 1; core < 8; core++)
{
/* IPC interrupt other cores */
DEVICE_REG32_W(IPCGR(core), 1);
cycleDelay (1000000000);
}
}
else
{
DEVICE_REG32_W(MAGIC_ADDR, BOOT_MAGIC_NUMBER);
}