This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3354: Video crash

Part Number: AM3354
Other Parts Discussed in Thread: AM3358

Hello,

We're designing a custom hardware based on the AM3354 and Linux.

Everything goes well until we try to display video. 

The linux kernel crash anywhere. It looks like something altered the DDR and crash the software.

One way to “"solve"” the problem is to mux LCD_DATA(0, 1, 3, 4, 5) to GPIO (instead of LCD_DATA). It altered the colors but it works.

We thought something like crosstalk or coupling between the LCD bus and the DDR but after re-routing this part of the board, we have exactly the same problem.

We try to remove the LVDS transceiver, so the LCD bus is loaded only with boot config resistors but we have the same problem.

 

Traces length on LCD and DDR are sized controlled.

We apply the exel file to configure the DDR registers.

I’m looking for new ideas to move forward.

Thanks for your help,

BR,

Olivier

 

cpu : AM3354ZCZ

ddr : MT41K512M16HA-125

Linux 4.1.18, Yocto 1.8.2

  • Hi Biser,

    We're trying this, I will keep you in touch, thanks,

    Best Regards,

    Olivier.

  • Hi Biser,

    We re-analyse all registers and perform a software leveling and it's better but our test (QT_CinematicExperience -platform eglfs) still crash after 2 to 10 minutes.

    We slow down DDR3 cycle from 400MHz to 303 MHz.

    RD DQS 0x3d
    FIFO WE 0x9d
    WR DQS 0x46
    WR DATA 0x7e

    TIM1 0x0888A39B
    TIM2 0x266D7FDA
    TIM3 0x501F86AF
    CFG 0x62C053B2
    CTRL 0x00100007 / 0x00100008

    According to your experience, is-it looking like more on the routing or again on config registers?

    Thanks for your help,

    Best Regards,

    Olivier.
  • Yes,  and the result seems good (see below). 

    We just change DDR PLL to reduce frequency to 266MHz and it's seems better again (no fail at this time...).

    CortxA8: Output: ****  AM3358_SK Initialization is in progress ..........

    CortxA8: Output: ****  AM335x ALL PLL Config for OPP == OPP100 is in progress .........

    CortxA8: Output: Input Clock Read from SYSBOOT[15:14]:  24MHz

    CortxA8: Output: ****  Going to Bypass...

    CortxA8: Output: ****  Bypassed, changing values...

    CortxA8: Output: ****  Locking ARM PLL

    CortxA8: Output: ****  Core Bypassed

    CortxA8: Output: ****  Now locking Core...

    CortxA8: Output: ****  Core locked

    CortxA8: Output: ****  DDR DPLL Bypassed

    CortxA8: Output: ****  DDR DPLL Locked

    CortxA8: Output: ****  PER DPLL Bypassed

    CortxA8: Output: ****  PER DPLL Locked

    CortxA8: Output: ****  DISP PLL Config is in progress ..........

    CortxA8: Output: ****  DISP PLL Config is DONE ..........

    CortxA8: Output: ****  AM335x ALL ADPLL Config for OPP == OPP100 is Done .........

    CortxA8: Output: ****  AM335x DDR3 EMIF and PHY configuration is in progress...

    CortxA8: Output: EMIF PRCM is in progress .......

    CortxA8: Output: EMIF PRCM Done

    CortxA8: Output: DDR PHY Configuration in progress

    CortxA8: Output: Waiting for VTP Ready .......

    CortxA8: Output: VTP is Ready!

    CortxA8: Output: DDR PHY CMD0 Register configuration is in progress .......

    CortxA8: Output: DDR PHY CMD1 Register configuration is in progress .......

    CortxA8: Output: DDR PHY CMD2 Register configuration is in progress .......

    CortxA8: Output: DDR PHY DATA0 Register configuration is in progress .......

    CortxA8: Output: DDR PHY DATA1 Register configuration is in progress .......

    CortxA8: Output: Setting IO control registers.......

    CortxA8: Output: EMIF Timing register configuration is in progress .......

    CortxA8: Output: EMIF Timing register configuration is done .......

    CortxA8: Output: PHY is READY!!

    CortxA8: Output: DDR PHY Configuration done

    CortxA8: Output: ****  AM3358_SK Initialization is Done ******************

    CortxA8: GEL Output:

    This EDMA test consists of 8 tests.

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: Write is completed Starting @0x40300000

    CortxA8: GEL Output:

    Test 1

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000000

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000000

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000000

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000000

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 2

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000001

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000001

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000001

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000001

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 3

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000002

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000002

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000002

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000002

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 4

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000003

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000003

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000003

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000003

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 5

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000004

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000004

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000004

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000004

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 6

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000005

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000005

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000005

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000005

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 7

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000006

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000006

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000006

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000006

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output:

    Test 8

    CortxA8: GEL Output: Write is completed Starting @0x80000000

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000007

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000007

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x40300000

    CortxA8: GEL Output:

    CortxA8: GEL Output: Write is completed Starting @0x40300800

    CortxA8: GEL Output: EDMA Transfer Start for QUEPRI 0x00000007

    CortxA8: GEL Output: EDMA Transfer Complete for QUEPRI 0x00000007

    CortxA8: GEL Output: Test Case Passed for Destination Addr=0x80000800

    CortxA8: GEL Output:

    CortxA8: GEL Output: Test is complete

  • Well, this indicates that the DDR3 is performing normally. I suggest that you concentrate on your video software - check for memory leaks, CPU load, this sort of thing...
  • By the way DDR3 minimum clock frequency is 303MHz, using it at 266MHz is out of specs.
  • The software is just the QT example (QT_CinematicExperience -platform eglfs).

    Ok for the 266MHz, I'll check this.

    Thanks for your support,

    Olivier.