This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6670 can't write KICK0 KICK1 registers

Hi all,

I'm currently working on booting 6670. Right now, core0 has been booted, but other cores haven't. From E2E forum, I know that before writing IPC register, I need to unlock

the the KICK0, KICK1 registers by writing specific values to them, which are 0x83e70b13 and 0x95a4f1e0 for KICK0 and KICK1 respectively. But I can't write the values to

them. The following are my codes regarding the writing KICKx registers part:

#define KICK0     0x02620038

#define KICK1    0x0262003C

# define DEVICE_REG32_W(x,y) = *(volatile uint32_t *)(x) = (y)

void main()

{

    DEVICE_REG32_W(KICK0, 0x83e70b13);

    DEVICE_REG32_W(KICK1, 0x95a4f1e0);

  }

Thanks a lot

Best regards,

Nick


  • Hi Nick,

    There is no problem of your method to write KICK register except for

    # define DEVICE_REG32_W(x,y) = *(volatile uint32_t *)(x) = (y)

    --->

    #define DEVICE_REG32_W(x,y)  *(volatile uint32_t *)(x) = (y)

    And how did you know the KICK register was not wrote successfully? Actually, after writing the dedicated value ,the two registers will also keep zero. You should check whether the other registers which are protected by the KICK mechanism (such as IPCGR)can be modified to verify the KICK is unlocked.

    Allen

     

  • Hi Allen,

    "after writing the dedicated value ,the two registers will also keep zero", are you sure?

    After writing the KICK0, KICK1 registers, I check the DSP RAM via JTAG. But even after writing KICK0, KICK1 registers, I still can't write IPCGx registers. Could you tell me

    why? BTW, do I have to write the KICKx registers before writing the MAGIC_ADDRESS of core1?

    Thanks

    Best regards,

    Nick

  • Hi Nick, the MAGIC_ADDRESS is not protected by the KICKx registers, you can just write to it normally. Regards, Jon

  • Hi Nick,

    After writing to IPCGRx register, the read return 0(according to the datasheet of C6678). You should check Event flag register 2(EVTFLAG2)  to see whether #91 event is generated. This event is bonding to inter-processor interrupt of IPCGRx. On my side, it's working normally.

    Allen