AnsweredAssumed Answered

Upgrade memory size from 1G to 2G make linux kernel stall(uboot 2014.04)

Question asked by huijie shen on Jul 8, 2016
Latest reply on Jul 19, 2016 by huijie shen

Current I replace our imx6q board 1G memory with 2G memory, but the linux kernel freezed.

Environment:

 

1.  uboot 2014.04

2.  linux kernel  3.10.53

3. design from sabreSD

 

My step:

   1.  Do memory calibration and merge to uboot

   2.  replace DDR_MB=1024 with DDR_MB=2048 in boards.cfg for mx6qsabresdandroid board

   3.  burn the uboot and test the memory (OK)

   4.  run linux and linux stalled.

 

1. Memory Test Result

U-Boot 2014.04-00006-g41a0d81-dirty (Jul 08 2016 - 11:04:09)

 

 

CPU:   Freescale i.MX6Q rev1.5 at 792 MHz

CPU:   Temperature 28 C, calibration data: 0x5a251669

Reset cause: POR

Board: MX6-SabreSD

I2C:   ready

DRAM:  2 GiB

MMC:   FSL_SDHC: 0, FSL_SDHC: 1

*** Warning - bad CRC, using default environment

 

 

No panel detected: default to Hannstar-XGA

Display: Hannstar-XGA (1024x768)

In:    serial

Out:   serial

Err:   serial

force_idle_bus: sda=0 scl=0 sda.gp=0x6d scl.gp=0x6c

force_idle_bus: failed to clear bus, sda=0 scl=0

wait_for_sr_state: Arbitration lost sr=93 cr=80 state=2020

i2c_init_transfer: failed for chip 0x8 retry=0

force_idle_bus: sda=0 scl=0 sda.gp=0x6d scl.gp=0x6c

force_idle_bus: failed to clear bus, sda=0 scl=0

i2c_init_transfer: give up i2c_regs=021a4000

boot device [5]

check_and_clean: reg 0, flag_set 0

Fastboot: Normal

flash target is MMC:0

Net:   FEC [PRIME]

Normal Boot

Hit any key to stop autoboot:  0

=> dcache off

=> icache off

download from tftp the test software to 0x907000

=> go 0x907000

## Starting application at 0x00907000 ...

 

============================================

  DDR Stress Test (2.5.2)

  Build: Mar 31 2016, 23:45:43

  Freescale Semiconductor, Inc.

============================================

 

============================================

  Chip ID

CHIP ID = i.MX6 Dual/Quad (0x63)

Internal Revision = TO1.5

============================================

 

============================================

  Boot Configuration

SRC_SBMR1(0x020d8004) = 0x18480030

SRC_SBMR2(0x020d801c) = 0x22000001

============================================

 

What ARM core speed would you like to run?

Type 1 for 800MHz, 2 for 1GHz, 3 for 1.2GHz 

ARM Clock set to 1GHz

 

============================================

  DDR configuration

BOOT_CFG3[5-4]: 0x00, Single DDR channel.

DDR type is DDR3

Data width: 64, bank num: 8

Row size: 15, col size: 10

Chip select CSD0 is used

Density per chip select: 2048MB

============================================

 

Current Temperature: 38

============================================

 

Please select the DDR density per chip select (in bytes) on the board

Type 0 for 2GB; 1 for 1GB; 2 for 512MB; 3 for 256MB; 4 for 128MB; 5 for 64MB; 6 for 32MB 

For maximum supported density (4GB), we can only access up to 3.75GB. Type 7 to select this

  DDR density selected (MB): 512

 

 

Would do you want run DDR Calibration? Type 'y' to run and 'n' to skip

 

 

The DDR stress test can run with an incrementing frequency or at a static freq

To run at a static freq, simply set the start freq and end freq to the same value

Would do you want run DDR Stress Test? Type 'y' to run and 'n' to skip

 

Enter desired START freq (135 to 672 MHz), then hit enter.

Note: DDR3 minimum is ~333MHz, do not recommend to go too much below this.

528

  The freq you entered was: 528

 

Enter desired END freq (135 to 672 MHz), then hit enter.

Make sure this is equal to or greater than start freq

528

  The freq you entered was: 528

 

Do you want to run DDR Stress Test for simple loop or Over Night Test?

Type '0' for simple loop. Type '1' for Over Night Test

 

DDR Stress Test Iteration 1

Current Temperature: 40

 

DDR Freq: 528 MHz

t0.1: data is addr test

t0: memcpy10 SSN x64 test

t1: memcpy8 SSN x64 test

t2: byte-wise SSN x64 test

t3: memcpy11 random pattern test

t4: IRAM_to_DDRv2 test

t5: IRAM_to_DDRv1 test

t6: read noise walking ones and zeros test

 

DDR Stress Test is complete!

 

2.  bdinfo

=> bdinfo

arch_number = 0x00000F8C

boot_params = 0x10000100

DRAM bank = 0x00000000

-> start = 0x10000000

-> size = 0x80000000

eth0name = FEC

ethaddr = 00:01:02:03:04:05

current eth = FEC

ip_addr = <NULL>

baudrate = 115200 bps

TLB addr = 0x8FFF0000

relocaddr = 0x8FF4E000

reloc off = 0x7874E000

irq_sp = 0x8F54BEE0

sp start = 0x8F54BED0

FB base = 0x00000000

 

3.  Starting kernel result

=> run bootcmd

booti mmc0

kernel   @ 14008000 (6879224)

ramdisk  @ 15000000 (500799)

fdt      @ 14f00000 (42374)

kernel cmdline:

  use boot.img command line:

  console=ttymxc0,115200 init=/init androidboot.console=ttymxc0 consoleblank=0 video=mxcfb0:dev=ldb,1080P60,if=RGB24,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 androidboot.hardware=freescale cma=384M

   Loading Ramdisk to 8f4d0000, end 8f54a43f ... OK

   Loading Device Tree to 8f4c2000, end 8f4cf585 ... OK

 

 

Starting kernel ...

 

it never response again

 

 

Again, If I just the the DDR calibration data but set  CONFIG_DDR_MB = 1024 , the same kernel starts correctly.

Outcomes