Independent Core Kernel Reset

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
MatteoBW
Level 1
Level 1
First reply posted First question asked Welcome!

I have tried to perform the kernel reset for every single core (in a TC399x) following the steps described in the user manual (5.3.4.12 Independent Core Kernel Reset).

I found also this topic: https://community.infineon.com/t5/AURIX/CPU-Kernel-Reset/m-p/318329#M4186 that is performing the reset on the CPU0, but there are not references to other cores.

In my case the CPU0 is resetting correctly, but using other cores, the related CPUx seems to remain locked in an inactive state.

This is the procedure, as example, for CPU1:

unlock_wdtcon()

CPU1_KRST1.RST = 1

CPU1_KRST0.RST = 1

while(CPU1_KRST0.RSTSTAT = 0)

CPU1_KRSTCLR = 1

lock_wdtcon()

I tried to run this sequence from both core0 and core1, without solve the problem.

What am I doing wrong?

 

 

0 Likes
1 Solution
cwunder
Employee
Employee
100 solutions authored 5 likes given 50 likes received

cwunder_0-1638675506754.png

cwunder_1-1638675700527.png

You need to set the PC of the core that is halted back to its start address. This has to be done from a core that is running.

View solution in original post

0 Likes
3 Replies
Nambi
Moderator
Moderator
Moderator
500 replies posted 50 likes received 5 likes given

Hi,

1. I tried to perform the reset using the below ILLD API. This API successfully triggered a reset of Cpu1 from Cpu0.

IfxCpu_triggerCpuReset(IfxCpu_ResourceCpu_1);

You can refer to this API from IfxCpu.c file of the ILLD.

2. As per my understanding below flow was observed at your end:
i)CPU1 was initially running
ii)After the execution of your sequence, it went to an inactive state.
This could be because CPU1 was successfully reset, and it was not restarted again. You can confirm the state of CPU1(running or inactive) before and after executing your sequence.

Best Regards.

0 Likes
MatteoBW
Level 1
Level 1
First reply posted First question asked Welcome!

Hi Nambi,

1. I'll try using the iLLD API and let you know.

2. The sequence you wrote is correct. The CPU1 was successfully reset and if I break my debug session on the CPU1 it is on the start address 0xA0000000, but it seems stuck there.

0 Likes
cwunder
Employee
Employee
100 solutions authored 5 likes given 50 likes received

cwunder_0-1638675506754.png

cwunder_1-1638675700527.png

You need to set the PC of the core that is halted back to its start address. This has to be done from a core that is running.

0 Likes