My plans for the afternoon mainly involved preparations for Project Egbert, including learning to use features like DDR inputs on the Spartan 3E (having gotten the hang of LVDS I/O yesterday).
However, the client went and handed me some boards of an older model, which the technician was having trouble programming.
Hm. Well, Flash Magic won't talk to them through my cable, either... and it will talk to a known-good unit (of a slightly more recent model). Autobaud fails. Actually, it appears that the LPC2138 is sending BREAK on TXD0 (or perhaps it's just not initializing, and the line is floating low - I should check that).
Hook up the JTAG pod, and it finds the processor... and the flash appears erased... and the JTAG debugger can't load the program into flash either. Some sort of "no response; are you sure that's flash at this address?" sort of error.
And, yes, the 3.3V supply looks healthy, and the main oscillator is humming along at the appointed frequency. (Otherwise the JTAG wouldn't work.) RESET is high, at least at the supervisor chip. (Again, if RESET were low, JTAG would fail. I think. Maybe I'd better re-examine that.)
So, either this batch of boards has bad microcontrollers, or there's something else going on that keeps the bootloader from running and flash from being programmed.
In the former case, it raises questions about Project Egbert, as I've been planning all along to use a similar NXP part in that. If we're having reliability issues, perhaps I need to look at alternative vendors.
Update 1: TXD0 is floating after reset. This is also the case on the good unit; it goes from floating-low to driven-high (followed, of course, by a bit stream) when the flash-programming software starts talking to it on RXD0. On the bad units, though, it just stays at floating-low.
RESET and P0.14 are confirmed correct at the chip: P0.14 is low when the "program" switch is on, and RESET goes low while the button is pushed.
RXD0 looked right on the first unit I examined... mayhap there's something peculiar about it. It is 5V logic, but that's the case on all of them, and that input is supposed to be 5V tolerant.
(Oh, and the client notes that there have been quality issues with some recent boards... speckles of copper where no copper should be, and pits in copper that should be pitless. Since we may need to go to 4 mil trace/space for Egbert (or Egbert Jr.), this may call for finding a fab house with better QA than the one they've been using.)
Update 2: It occurs to me that what ISP and JTAG flash programming have in common is the ISP/IAP code that lives in the boot block.
If I hook up the JTAG pod again, and examine memory starting at 7FFFD000, the good unit has ARM code there. The four bad units have all ones. Like, the boot block has somehow gotten erased, or was never programmed in the first place.
Anyway, I sent the boards back, to have their 2138s replaced. But what happened? Were the chips shipped sans boot code? Were they severely X-rayed? Did the boot blocks somehow get erased? The manual says that's impossible, but apparently some members of the LPC2100 family can have their boot blocks rewritten.
It's all rather confusing, really.
Recent Comments