From DSignT Support Database
DSP does not bootload / start-up reliably from Flash Memory, sometimes it hangs and cannot be recovered by a reset: power cycling is required.
- Power Supply start-up: If the power supply ramps up very slow, the DSP may enter a latch-up.
- Power Supply regulation speed: After bootload, when the DSP starts working, the current drawn by the DSP rises immediately. If the power supply regulation is too slow the supply voltage may drop below the critical threshold. Some supervisor / power monitor chips may not recognize this very short "brown-out". In this case adding additional low-ESR capacitors helps to overcome the voltage drop.
- Power-Up sequencing (IO and core supply): Some DSPs require a special power-up sequence. If no power-up sequencing is specified, the DSP supply voltages (IO and core) should start-up almost simultaneously, and never with more than half a second delay. If one supply is missing, current will flow through parasitic diodes in the DSP which causes a latch-up. Add four 4148 diodes between the 3.3V IO and core supply. As long an the core supply is down, the core will be supplied via these four diodes. The core voltage in this state is approx. 0.9V, which is sufficient to keep the internal diodes from conducting. If the IO supply may start-up later than the core supply, add a Shottky diode from core supply to IO supply.
- Unconnected pins: If certain DSP pins, like the boot configuration pins or EMIF HOLD, are not stable during start-up, the DSP may hang. Although most pins do have internal pull-up or pull-down registers, noise on the PCB may toggle these pins, requiring additional external PU or PD resistors.
- Initialization Software: Some initialization steps require delays. These are especially important during PLL configuration and EMIF initialization. If these delays are violated the DSP may enter undefined states, from which it cannot be recovered by a reset. The reset pin has no effect on some of the DSP peripherals. The PLL for example will not be reset reliably if it hangs due to delay violations.
- Un-initialized variables: At start-up the memory (DSP internal RAM and external RAM) contains random data. If one ore more variables in the DSP program are not properly initialized, or accessed before they are initialized, this may cause program crashes. A reset will not change the random memory content, only a power cycle will generate different random data. Typically this problem is easy to detect if all compiler warnings are checked.
2.2 Steps for Trouble-Shooting
- Replace the bootloader code with a small program which only turns on a LED or an IO port. If this program is bootloaded reliably the hardware is ok.
- replace IO and core power supplies with a lab bench supply and check if the problem persists.
- write a simple test program containing only DSP initialization (PLL, EMIF, etc) and turn on a LED after initialization is complete. Does the DSP hang during initialization?
3 Additional Tags