The issues are for designing own board.

SDRAM CFG means the BCT file, also means the dvfs table in code. It is like below format, and the number of SDRAM should be same as your RAM_CODE straps setting.

[i]# CFG Version 01

Do not edit. Generated by TK1_emc_reg_toolV5.0.18 V5.0.18. Command:

TK1_emc_reg_toolV5.0.18 -i …\param_files\ddr3_256Mx16x4_H5TC4G63AFR_RDA.par 1.262626

-dram_board_cfg 14 -s emc_reg_swz.txt -is_mid_package 1 -round_trip_dly_ps 560.13

-o CFG_792MHz.cfg -b tBKV_RESULT\792MHz_emc_reg.txt -temp_derating 0

Parameter file: …\param_files\ddr3_256Mx16x4_H5TC4G63AFR_RDA.par, tck = 1.26 ns (792.00 MHz)

bkv file: tBKV_RESULT\792MHz_emc_reg.txt

swz file: emc_reg_swz.txt

SDRAM[0].MemoryType = NvBootMemoryType_Ddr3;
SDRAM[0].PllMInputDivider = 0x00000001;
SDRAM[0].PllMFeedbackDivider = 0x00000042;
SDRAM[0].PllMStableTime = 0x0000012c;[/i]

Hi Trumany,

Because TK1’s RAM_CODE is 0011. If our RAM_CODE is 1011, which item do we need change in BCT file ?
Thanks.

Regards,
Wesley

You mean your previous RAM_CODE is 1011, after changing to 0011 then it worked?

Can you tell how you modified it?

Hi Trumany,

Yes, we change the hardware design to 0011. Because we would like to know if we don’t change hardware side, is it possible to modify software side to let board can boot up.

OK, got it…
RAM_CODE=1011 means you chose the secondary boot device that is why you can’t boot, which has nothing with sdram config.

You can see the note as below in schematic, page24

RAM_CODE[1:0]:SELECTS SDRAM CONFIGURATION FROM BCT
RAM_CODE[3:2]:SELECTS SECONDARY BOOT DEVICE FROM BCT

Hi Trumany,

Yes, I had seen it.
And I have other questions,

  1. If RAM_CODE[3:0] = 0001 or 0010, 0011, does it mean “SELECTS SDRAM CONFIGURATION FROM BCT” ?
    If RAM_CODE[3:0] = 01XX or 10XX or 11XX (X is don’t care ), does it mean “SELECT SECONDARY BOOT DEVICE FROM BCT” ?

  2. Does “SELECT SECONDARY BOOT DEVICE FROM BCT” mean we need to put BCT file into SPI ?

Thanks
Regards,
Wesley

  1. If RAM_CODE[3:0] = 0001 or 0010, 0011, does it mean “SELECTS SDRAM CONFIGURATION FROM BCT” ?
    If RAM_CODE[3:0] = 01XX or 10XX or 11XX (X is don’t care ), does it mean “SELECT SECONDARY BOOT DEVICE FROM BCT” ?

Yes.

  1. Does “SELECT SECONDARY BOOT DEVICE FROM BCT” mean we need to put BCT file into SPI ?

No, this only needs be set when there are two or more eMMC on your board.

Hi Trumany,

Which hardware component can be secondary boot device ? As I know, TK1 only have one eMMC.
And I don’t really understand the “SELECT SECONDARY BOOT DEVICE FROM BCT” means. what different are between SDRAM CONFIGURATION and SECONDARY BOOT DEVICE ?

Thanks
Regards

Yes, only one eMMC on Jetson, so just leave this 2 bits no change.
“SELECT SECONDARY BOOT DEVICE FROM BCT” is for multi eMMC, if you have 2 or more eMMC on your board, you will need add options in sdram config file to choose which as boot device. Just ignore it if just one eMMC.

SDRAM CONFIGURATION is for multi sdram configurations, SW will read the strap value and then choose the related slot in sdram config file.

For example, as below one setting in sdram config file showing, the ‘0’ could be ‘1’, ‘2’, ‘3’ too, it should be same as the strap value
SDRAM[0].MemoryType = NvBootMemoryType_Ddr3;

That is to say, Tegra K1 can support 4 eMMC at most, and it corresponds to RAM_CODE[3:2], if we have two eMMCs and I use secondary eMMC, then RAM_CODE[3:2] is 01 ; If we have three eMMCs and I use third eMMC, then RAM_CODE[3:2] is 10 ; If we have four eMMCs and I use fourth eMMC, then RAM_CODE[3:2] is 11, right ?
Can you please give me some example for two eMMCs setting in sdram config ?

And Tegra K1 also supports 4 SDRAM configurations in BCT file at most, right ?
One more thing I wanted to ask. Why does K1 support multi sdram ? Does it mean we can use multi SDRAM at the same time ?

Thanks.

TK1 supports multi sdram configuration not multi sdram, that means there are up to 4 slots in config file, so different kinds of DDR can be used on same board which just need to change straps value to be same as corresponding slot number.

For secondary boot device, the setting in config is removed as it is almost never used before. So just ignore it.

Got it.
Thanks for your support.

Hi Trumany,

I found out the another issue on our designed board, that is, usb3.0 cannot use. I use usb 2.0 (usb_port_owner_info=0) at first, then I enable usb 3.0 ( usb_port_owner_info=2), however, the system cannot find out device while I plug it (USB drive, usb camera…etc), only the device can be use is mouse & keyboard.
Thus, I disable the usb 3.0, the USB drive and camera can be recognized normally.
Can you please help me to solve the issue ?

Thanks a lot

I don’t know if this is related to this particular issue or not, but the u-boot boot loader uses USB2 mode. Any device in use by u-boot under USB2 will be temporarily lost (requiring new enumeration) if the kernel takes over and goes to USB3. This could be an issue for example when booting to a USB external hard drive. The long term solution would be to support USB3 in u-boot; the short term workaround would be to only use USB2 via kernel command line option for USB boot devices.

Hi linuxdev,

Thanks for your reply, maybe my explanation is not clear. I don’t want to use usb3 in u-boot, I just use usb3 in kernel. My issue is when USB3 enabled, the devices ( external hard drive, camera…) cannot use.

So you do not require the USB devices to work during u-boot stage, only later when the Linux operating system runs, that none of the USB devices are boot devices…is this correct? But it sounds like the devices function while in USB2 mode, but not during USB3 mode, on the same physical connector. Can you give the output of “lsusb -t” under both circumstances?

Hi linuxdev,

Here is “lsusb -t” output in both mode.

USB 2.0
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=tegra-ehci/1p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-ehci/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 1: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-ehci/1p, 480M

USB3.0
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=tegra-ehci/1p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/2p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xhci/6p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 1: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M

In the above tree view there is a mass storage device which is what disappears from the tree under USB3…can I verify that this mass storage device is what disappears?

  • The HUB never goes into USB3 mode. Is the HUB USB3-capable?
  • Is the HUB connected to the full-size port (the USB3-capable port)?
  • Is the HUB itself externally powered or bus powered?
  • Is the mass storage device externally powered or bus powered?
  • Is the mass storage device USB3 capable?

Hi linuxdev,

Please see my answer as blew,

The HUB never goes into USB3 mode. Is the HUB USB3-capable?
=>Yes, it is usb3-capable.

Is the HUB connected to the full-size port (the USB3-capable port)?
=>Yes, HUB connects to usb3 port.

Is the HUB itself externally powered or bus powered?
=>Yes, I test in under both circumstances, but it still cannot recognize devices.

Is the mass storage device externally powered or bus powered?
=>No, it doesn’t need externally powered.

Is the mass storage device USB3 capable?
=>Yes, mass storage devices is usb3 capable.

Thanks.