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
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?
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,
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!
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.
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:
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.
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?
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!
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...
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.
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 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?
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.