Custom LS2088A hardware DDR4 bring up

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Custom LS2088A hardware DDR4 bring up

3,443 Views
ralfgoebel
Contributor III

Hi,

I'm trying to get U-Boot (QorIQ SDK 2.0) working with a custom LS2088A hardware. After fixing an address offset for the Global Generic Reference Timer, U-Boot continues until DDR4 initialization is done. The initialization of DDR4 memory doesn't show any problems. But U-Boot seems to get stuck when accessing DDR4 memory for the first time:

Initializing DDR....using SPD

Detected UDIMM TS512MSH64V1H

Detected UDIMM TS512MSH64V1H

Programming controller 0

Programming controller 1

RAM Configuration:

Bank #0: 80000000 2 GiB

Bank #1: 8080000000 5 GiB

DRAM:  7 GiB

DDR    7 GiB (DDR4, 64-bit, CL=13, ECC off)
       DDR Controller Interleaving Mode: 256B

U-Boot stops when calling memcpy() in reloc_fdt(), which seems to be the first access to DDR4.

I also tried to implement a memory test after DDR4 initialization. The result is  that U-Boot hangs after writing the first word that is not in a range of 128 bytes of the previous writes. Could there be something like a write buffer stall, or some cache related problem?

Another question:

I also have a CodeWarrior TAP, but no valid license. Is the LS2088A usable with CodeWarrior? I don't want to waste 3000$.

Any help is appreciated,

Ralf

Labels (1)
Tags (1)
16 Replies

2,160 Views
addiyi
NXP Employee
NXP Employee

You should update CW with LS2088 support.

Adrian

0 Kudos

2,160 Views
ralfgoebel
Contributor III

How do I update CW with LS2088 support?

Thanks,

Ralf

0 Kudos

2,160 Views
addiyi
NXP Employee
NXP Employee

Go to Help > Install New Software and select ARMv8 Eclipse Update Site. Make sure no ccs/cdde/python is running.

Adrian

0 Kudos

2,160 Views
ralfgoebel
Contributor III

It's still not working.

First, I added LS2088 support and I also updated the QCVS plugin. After the update, the target connect succeded without any error, but I wasn't able to do anyhing (Suspend and Resume all greyed out).

Then, I decided to update also all other CW components. Now I get the following error when connecting to the target:

Flash programming operation failed.
//
Additional error details:
[FP: no device selected]

The Diagnose Connection function shows the following error:

Failed to connect to locally started CodeWarrior Connection Server

In the QCVS validation tool, there is still no LS2088 device. The log shows this error now:

Failed to apply DDR configuration at line 3102: 2164326513 (Core not in debug)
Test was not executed!

Thanks,

Ralf

0 Kudos

2,160 Views
addiyi
NXP Employee
NXP Employee

For debugging follow the steps:

- duplicate a Target connection for LS2088 board (LS2088A_RDB for example);

- double click on this new target connection and set up the connection config;

- select this new target connection and click on Connect button (this will also execute the initialization file);

- once you are in debug and you have some available code on board you can use run control;

You can also create a stationary project and use the new target connection for connecting to the board. This way you can exercise the run control.

Support for LS2088 in QCSV is not available. As I said above, the support will be available in October. Meantime, you can contact a NXP FAE for early access to QCVS that support LS2088.

Adrian

0 Kudos

2,160 Views
ralfgoebel
Contributor III

Hi Adrian,

I re-installed CW and added only LS2088 support.

With the steps you mentioned, I can connect to the target. But I don't have any runtime controls and the CPU seems to be running. I can only terminate the debug session:

LS2088A_Debug.png

I also tried to use 'USE_SAFE_RCW = True' within the Target Init File.

Using the LS2085A configuration with the RDB board works as expected: the CPU is haltet and the runtime controls are available.

Thanks,

Ralf

0 Kudos

2,160 Views
addiyi
NXP Employee
NXP Employee

Go to Help > About CodeWarrior Dev Studio... and confirm the Version is 11.2.1 and Build Id is 160720. Also click on Installation Details and confirm  

- CW for QorIQ LS Debugger Data Core 11.2.2.A1-SP3_160714 com.freescale.core.debugger.data.feature.feature.group 

- CW for QorIQ LS Debugger Data LS2088A 11.2.2.A1-SP3_160714 com.freescale.ls2088A.debugger.data.feature.feature.group

The status of your custom LS2088 board is the same as in first post? It stuck in ddr init?

Adrian 

0 Kudos

2,160 Views
ralfgoebel
Contributor III

I didn't have Debugger Data Core installed. Now I have the following versions installed:

- CodeWarrior Development Studio for QorIQ LS series: Version: 11.2.0 Build Id: 160114

- CW for QorIQ LS Debugger Data Core    11.2.2.A1-SP5_b160812

- CW for QorIQ LS Debugger Data LS2088A    11.2.2.A1-SP5_b160812

I just found a way to halt the CPU: I can press the "connect to a process" button and then select a random process running on the PC. The CPU then gets interrupted and all runtime controls are suddenly available!

Ralf

0 Kudos

2,160 Views
addiyi
NXP Employee
NXP Employee

Please check the initialization file to fit your board, especially DDR initialization. Or you could try to build stationary project for OCRAM.

Adrian

0 Kudos

2,160 Views
ralfgoebel
Contributor III

The initialization script wasn't executed at all with my configuration, I don't know why.

But there is a new CW update available. The target connection now works without any workaround and the initialization script also gets executed.

This was very frustrating...

0 Kudos

2,160 Views
addiyi
NXP Employee
NXP Employee

Support for LS2088 is added in CodeWarrior and works just fine. Also, contacting a NXP FAE, you can get support for QCVS DDR validation tool (delivered with CodeWarrior, but available for external customers in October) which can help you with your DDR config issue.

Adrian

2,160 Views
ralfgoebel
Contributor III

Hi Adrian,

we bought a CodeWarrior Specialist Level license now, but I'm not able to establish a proper connection to the LS2088A using the CW TAP. I selected the LS2085A device in the Target Connection Configurator. When trying to connect in the "Target Connections" dialog, I get an error with the following gdb traces:

227,318 ~"Connecting to LS2085A\n"
227,318 =cmd-param-changed,param="remotetimeout",value="100"
230,963 @" connected successfully\n"
230,966 ~"DEBUG_SYNC_START 115 LS2088A_Test"
231,634 ~"\nError when executing gdb command: monitor mem read :ccs:LS2085A:CortexA57#0 0x1e00100 4 \
physical_noncoherent 1"
231,635 ~"\n"
231,635 ~"Protocol error with Rcmd\n"
231,635 &"Traceback (most recent call last):\n"
231,635 &"  File \"<string>\", line 674, in <module>\n"
231,635 &"  File \"<string>\", line 532, in Detect_DDR_Freq\n"
231,635 &"  File \"<string>\", line 57, in CCSR_LE_D\n"
231,635 &"  File \"<string>\", line 48, in MD\n"
231,636 &"TypeError: int() can't convert non-string with explicit base\n"

It seems that the connection works, but then the first memory read fails.

I have a similar problem with the DDR validation tool. I'm alble to make a connection to the target, but the test fails with the folloing message:

Failed to suspend the core: line 1427: 'Provided RunControl context path is not valid'
Test failed!

Thanks,

Ralf

0 Kudos

2,160 Views
ralfgoebel
Contributor III

Thanks for the information about CodeWarrior.

But if I understand it correctly, the DDR Validation Tool is mainly used for tuning of the timing parameters. I'm not sure this would help to fix my problem, because it seems more fundamental.

Maybe, the LS2088A requires some additional configuration which is not yet performed by U-Boot in the SDK 2.0.

Is there an U-Boot repository which contains support for the LS2088/84A?

Thanks,
Ralf

0 Kudos

2,160 Views
addiyi
NXP Employee
NXP Employee

Support for LS2088 is available in EAR and not in SDK2.0. Please try using the uboot attached.

0 Kudos

2,160 Views
ralfgoebel
Contributor III

Sorry, I just found that there is a LS2088A EAR 1.0. I will try this version and get back.

Thanks,

Ralf

0 Kudos

2,160 Views
ralfgoebel
Contributor III

I have EAR 6.0, but it doesn't seem to support the LS2088A. Is there a newer version available?

I also don't think that your U-Boot binary would work on my hardware.

Ralf

0 Kudos