AnsweredAssumed Answered

LPC4357 EMC long-long rare fail

Question asked by Robert Morrison on Sep 17, 2019
Latest reply on Sep 20, 2019 by Bernhard Fink

I am using the LPC3457 208 PQFP device on a custom board.  I have written a lot of working firmware for it, but recently found a rare failure mode that I was able to trace back to the processor issuing a bad long long (64 bit) write cycle on the EMC bus.  Traces are shown below--on the good access trace, you can see two long long writes which the processor automatically breaks into two 32bit accesses.  In between are several diagnostic marker accesses (removing the diagnostic stuff has no effect on the failure mode).  In the bad access trace, which happens at the same address but only occurs after about 10000 test iterations, the second long-long write occurs, but is preceded by a bogus bad 32 bit write to the same address.  Here is the code that the emulator aborts on, note that the hw_signal trigger is off-screen to the right on the bad access trace.

 

// here is the first long long write
   *(long long *)FPGA_CHAN_DATA_H = data1;    // This is sent on second burst cycle
   wait_short(2);
         *FPGA_MODE = 0x4;     // swap longs, reset param cnt
// detect if first write fails
         if ((*FPGA_NXP_TEST & 0xffffffff00000000) == 0)
         {
            param_cnt = *FPGA_MODE;
            hw_signal();
         }
         *FPGA_MODE = 4;     // swap longs back
   wait_short(2);
// hw_signal();        Uncomment this to show the good trace
   *FPGA_MODE = 0x8;     // swap longs, reset param cnt

// here is the second long long write, it generates a bogus access about once
// every 10000 iterations.

   *(long long *)FPGA_CHAN_DATA_H = data2;    // This is sent on second burst cycle
   wait_short(10);
            param_cnt = *FPGA_MODE;
// detect if bad write occurs
         if ((*FPGA_NXP_TEST & 0xffffffff00000000) == 0)
         {
            hw_signal();
            hw_signal();
            hw_signal();
         }

Has anyone seen problems with EMC long-long accesses like this?

Attachments

Outcomes