We are manufacturing an image engines based on TMS320C6671 (and
plenty of other TI modules). We built a first production series
several months ago without any issues. The first production boards
are booting from SPI and executing simple boot loader code.
The boot loader configures PLL for 1 GHz DSP operation, configures
EMIF-16 interface for co-operation with external parallel FLASH
memory and FPGA, copies portions of the target firmware from FLASH
to the core SRAM memory and finally jumps to the regular firmware
entry address already in SRAM.
Right now, we have just received first 5 boards from a fresh
production lot, where the manufacturer is not able to finish
functional quality check procedure and the entire production is
suspended. The DSP is not able to successfully boot the code from
SPI, even though the code didn't change compared with the previous
production lot.
After removing DSP heat sink, we noticed that processor ICs have
a slightly different marking compared with previous production.
There's a letter "A" in the top-right corner of the package. It's
not directly defined, but we suppose the letter "A" stands for
extended temperature range of the device (CYPA) and manufacturer
bought them by mistake instead of the regular DSP type (CYP). Maybe
the "A" stands for a die revision. A photo is attached. Both
production lots have processors with "YB20" inscription below part
number line, only the "A" letter in the top right corner is
different between two series. The most important question is, can
somebody please decipher the difference in package marking?
After some struggle with power sleep controller, which was required
to enable power for EMIF-16 when booting code via JTAG emulator,
we're able to run the new production boards without problem if the
boot loader code is transferred via emulator and not booted from the
SPI. All further functionality: DDR-3 and other peripherals are
working just fine. The only problem lays in SPI booting. In fact
there are two scenarios of unsuccessful booting illustrated in the
two attached scope waveforms (clock + chip select). Sometimes the
system stops reading from SPI early. Sometimes it reads the entire
boot loader content, sets boot complete pin but still doesn't
execute the boot loader code properly.
Did the boot procedure change between non-"A" and "A" devices? Any
description of this change? Our SPI boot device is not a typical
FLASH memory, so it may be a problem. However it works in tens of
devices from the previous production and in none of the five devices
we received right now, so a specification of the timing or a hint
what are the most common design errors in the SPI booting area would
be very useful.



