Hi All -
We have a design using the TMS320c672x. It is working...usually...however we are seeing infrequent boot failures.
The DSP boots from flash, and uses the TI secondary bootloader. We have narrowed down the problem to the PLL initialization code that is integrated into the TI bootloader.
We have seen three different abnormal conditions on boot:
- The execution never returns from the PLL initialization code. I am not sure where in the PLL code it is getting stuck (or if it's just going out into the weeds). But it never returns to the TI bootloader code after jumping out to the PLL initialization code.
- The execution returns to the beginning of the TI secondary bootloader code instead of properly returning from the PLL initialization call. When this happened, the DSP was running at the initialized PLL clock frequency. So in this case the PLL initialization appeared to complete properly, but program flow is getting messed up somehow.
- The execution returns from the PLL initialization code successfully, but the DSP is still running at the pre-PLL-initialized rate.
As I said, usually (maybe 95% of the time) the PLL initialization happens correctly, and the boot completes successfully.
We narrowed down this behavior by using some DSP pins as general purpose output, and sending codes corresponding to the code locations...a "poor mans bus trace". We have only set up 2 pins and so the "resolution" is pretty poor. I really wish I could get a real bus trace.
So I have a couple of questions for the community:
- Has anyone seen this type of behavior related to the TI secondary bootloader PLL initialization code? Or PLL initialization code in general?
- Does anyone have any ideas on how to get better visibility into the problem?
TIA.
eric