Dear TI team,
we're facing an issue with MCU_PLL0 after a reset of the device.
During cold boot (initial power-up of the board), MCU_PLL0 is configured to generate a 400 MHz clock for the R5 processor at the time when the ROM enters the SBL.
After triggering a system reset, either via JTAG (CCS: "System Reset" / CTRL+SHIFT+S) or via Sciclient_pmDeviceReset(SCICLIENT_SERVICE_WAIT_FOREVER), the MCU_PLL0 comes up with the IDLE bit set in MCU_PLL0_CFG, causing the outputs to operate in bypass mode. This causes the OSPI for example to operate at 6.25 MHz instead of 33 MHz. The R5f is apparently also running considerably slower, since for example the checksum calculation in our own code takes ~16 times as long (would nicely match 400 MHz vs. 25 MHz).
Resetting the IDK via the PORz button does NOT show this problem.
You can verify this behaviour on an IDK with a SD card containing just the SBL and SYSFW (I'm using 06.01). If you cold boot the target you get the following output on the 2nd COM PORT (MCU_UART1):
SBL Revision: 01.00.09.02 (Oct 20 2019 - 15:14:40)
SYSFW ver: 19.7.1-v2019.07a (Terrific Llam
SD Boot - File open fails
If you trigger a system reset via CCS, booting takes a bit longer, and you get output like this:
æ˜à˜øæfžxþ†žþ†žþžøž˜øøøøø†øøø†ø†øø†ø€ø€†þ˜ž`þøøøøøøø†øøæ†˜àøfø˜øø`ø˜ø`øø††æ€æ€˜€SYSFW ver: 19.7.1-v2019.07a (Terrific Llam
SD Boot - File open fails
The first line with the SBL Revision is garbled.
If you configure the terminal for 57600 baud (actually you'd need 60000, but I got useful output with 57600) you can see the first line but not the rest:
SBL Revision: 01.00.09.02 (Oct 20 2019 - 15:14:40)
ñòñññôôõôõ÷ôôö÷õ÷ôöõõôôö÷ôõôôöðôõõöõöõôòöôöòòóòòóôñðôñ÷÷ôôöôñööôô÷ôô÷ôõôööõôòòó
The same ist true for the 3rd UART (WKUP_UART0):
On a cold boot with 115200 you get:
0x40000B
0x800004
On a system reset with 115200 you get:
øààà€†xþ~xxp
ð
ó
þ
If you configure the terminal for 57600, you get valid output on a system reset:
0x40000B
0x800004
The MCU_PLL0 is running as intended halfway through the SBL (probably somewhere within SBL_SciClientInit(), because the "SYSFW ver" is output correctly), but up to that point it is outputting 25 MHz on all outputs.
It seems that we have this issue only if the booting progressed through SBL, because if I cold boot the target without an SD card, break in the debugger, execute the system reset, and break in the debugger again, the IDLE bit is NOT set.
Why is MCU_PLL0 sometimes in IDLE state following a reset?
Are there any known issues with regard to the reset state of MCU_PLL0?
I've been told that the PORz on our own hardware does NOT work, but I still need to verify the exact behaviour.
Regards,
Dominic