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.

K2H: DDR3B in latest ProcessorSDK

I recently migrated from MCSDK to the latest ProcessorSDK. DDR3B has stopped working during that transition.

I see that DDR3B configuration was removed from the u-boot board initialization files (specifically from <u-boot base>/board/ti/ks2_evm/ddr2_k2hk.c).

Was this configuration relocated anywhere or outright removed? Maybe it was moved to linux or to another part of the initialization sequence?

  • Hi Chris,

    I've forwarded this to the u-boot experts. Their feedback should be posted here.

    BR
    Tsvetolin Shulev
  • Thanks, I'm looking forward to the help.

    One thing to note: I added back in the DDR3B initialization from the MCSDK u-boot. In the u-boot prompt I can read and write from DDR3B. After I boot linux (processor-sdk-linux-rt-03.01.00) I can only read 0's from DDR3B.
  • Hi, Chris,

    When DDR3B was enabled in MCSDK, Linux never used that area, and also there is coherence issue. Hence, the DDR3B on K2H is not anymore supported in Linux ProcSDK. Any reason you need to access DDR3B on Linux side? We suggest that DDR3B be enabled from DSP side and used by DSP.

    Rex

  • Hi Rex,

    Thank you for that information.

    In our system we were originally planning on running linux in part of DDR3B and using DDR3A for application buffers, shuttling in raw data from an capture source, having the DSP cores work on the data there, and then return data also in DDR3A.

    Is it not possible to run linux in DDR3B?

    If not, we will put linux in only part of DDR3A, but will still want to use DDR3B as extra application-specific buffers, outside of linux memory. I can enable and access DDR3B in u-boot, but something during the linux boot is disabling it. I'm having trouble finding where it is disabled -- do you know where that is, or how I can prevent linux from interfering with the DDR3B configuration?

    Thanks,

    Chris

  • Hi, Chris,

    DDR3B at 0x6000 0000 is only 512MB which is very tight in running kernel. Kernel uses more than 512MB. Besides, DDR3B is not connected to MSMC, and also it is not coherent with ARM. The original purpose of the DDR3B on K2H was for DSP, and we don't see any advantage of Linux using DDR3B. Therefore in the later design of Keystone-2 EVM (K2E), the DDR3B was removed.  Theorectically, Kernel can be run off DDR3B, but we have never tried it. There definitely some changes need to be made in term of Base Address and Size for Kernel, etc. I suspect the MMU in ProcSDK Linux may not be configured for that area.

    Rex

  • Ok, I'll plan on sticking with DDR3A for linux for now.

    Do you know where linux is disabling DDR3B after it has been set up by u-boot?

    Thanks,
    Chris
  • I'm having the exact same problem. Did you ever figure this out? I know DDR3B worked from an older MCSDK release, but I haven't figured out where it is being disabled in the Processor SDK.
  • Hi, Anthony,

    I just want to acknowledge your post. I suspect it's MMU, and am checking the code. I will post back my findings.

    Rex

  • Rex,

    I am having the same issue as Anthony and Chris.  Have you made any progress on checking in to the MMU?

    Thanks,

    Mark

  • Hi, Mark,

    I was working on it yesterday using different u-boot and kernel combination trying to narrow down to the cause, but to no avail. Other assumption is the mpax in uboot, but I couldn't find it got modified. I am still poking the code.

    Rex
  • I tried a few things and am pretty sure its in the kernel.

    •   I compiled the kernel (and dtb) from the mcsdk-03.01.04.07 (git tag K2_RT_LINUX_03.10.72_15.08) as I would the 4.x kernel
      •   I had to use older gcc since the one with the curren't processor sdk's won't compile the 3.x kernel (used linaro 4.7-2013.03-20130313)
    •   Using u-boot 2016.05 (modified to init DDR3B) from processor-sdk 03.03.00.04
    •   Using boot-monitor 4.0 from processor-sdk 03.03.00.04
    •   The older kernel won't let the processor-sdk filesystem (arago 2016.12) run (I'm assuming it needs a 4.x kernel), so I modified args_all to pass init=/bin/sh to the kernel
    •   I booted both the old and new kernel with the init=/bin/sh arg


    From the 3.10.72-rt77 kernel I am able to map to DDR3B using /dev/mem and view it as expected (I see the same thing i see in u-boot).
    From the 4.4.41-rt50 kernel I am NOT able to map to DDR3B using /dev/mem (I see all 0s).

    I'm looking at the kernel, but since the major rev changed (3.x to 4.x) there are many architecture changes that make comparing the two difficult.

  • Hi, Anthony,

    We are on the same page. I went down that path also, and we are checking internally.

    Rex
  • Have you had any luck?
  • No. No one including developers can explain why it is not accessible.