Kernel execution stops at decompress function

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

Kernel execution stops at decompress function

4,427 Views
Balaji_ng
Contributor III

Hi,

    I am trying to bring up my I.MX28 based board with MT47H32M16:HR -3 DDR2 SDRAM. I am trying to put the custom built kernel into RAM using the MfgTool. It is executing the bootlets and stops at Uncompressing Linux... It is not printing "done, booting the kernel."

FYI: I am able execute U-BOOT and able to get prompt. When I try to load kernel from U-BOOT, it stops exactly at the same location.

Any ideas/pointers/solutions welcome.

Balaji.V

Labels (1)
16 Replies

2,291 Views
Rt1z
Contributor I

Thanks very much for help, will dig some more.

 

BR,

Rt

0 Kudos

2,291 Views
Balaji_ng
Contributor III

Hi Rt,

Extremely sorry. I had to give up i.MX28 as I didnt had time and bandwidth to continue my experiments on this RAM and Processor combo.  It may take some more time to continue my experiments on that board.

To help you, take a look at the following link. It will lead you to an xlsx file that will do the register settings when you enter your RAM configuration.

www.imxdev.org/wiki/index.php?title=Board_bring-up_and_DDR_initialization_tools

Hope this helps. Request you to post the timing configuration, if it works, so that it would be of much help to others.

Regards,
Balaji


Rt said:

Hi All,

We have build a custom board with i.mx280 and ddr2 from micron 64mb.Looks like its memory timing issue, we are using default bootlet setting , with obvious change , bank size to 4 banks and SDRAM_SIZE .

Issue we see : when writer to DDR2 ( DDR base to max size), its fails after some writer ( random ) , so if we add delay write and read and then write , work well.

 

So , this looks like memory timing issue. 

Will appreciate any one have experience dealing this issue , point me in right direction !!!!

Any help appreciated !!!

 

Thanks ,

 

RA    

 

 

2,291 Views
Rt1z
Contributor I

Hi All,

We have build a custom board with i.mx280 and ddr2 from micron 64mb.Looks like its memory timing issue, we are using default bootlet setting , with obvious change , bank size to 4 banks and SDRAM_SIZE .

Issue we see : when writer to DDR2 ( DDR base to max size), its fails after some writer ( random ) , so if we add delay write and read and then write , work well.

 

So , this looks like memory timing issue. 

Will appreciate any one have experience dealing this issue , point me in right direction !!!!

Any help appreciated !!!

 

Thanks ,

 

RA    

0 Kudos

2,291 Views
Rt1z
Contributor I

Hi Balaji,

 

Will appreciate if you share your expreance solving , your board bring up, we have same issue , Kernel stops after  Uncompressing Linux... ,

 

BR,

RT

0 Kudos

2,291 Views
Jean_Yves
Contributor I

Hi all,

We understood our problem some weeks ago but we missed to inform the community.

In fact , we modified the file " init-MX28.c" in the uboot source, but we took time to understand that the same kind of tables exist in the the kernel source and need to be modifed in the convenient file : mach-mx28/emi_setting.c => table "void DDR2EmiController_EDE1116_200MHz(void)" , 166MHz and 133MHz  => DRAM_REG[31] value changed for "0x00000101" , for 4 banks 512Mbits setting) .

 

An other modification was the DRAM size deifinition in the Uboot sources "imx-bootlet_xxx/linux_prep/include/mx28/platform.h :

#define SDRAM_SIZE 0x08000000 //1Gb

changed for

#define SDRAM_SIZE 0x04000000 //512Mb

I think there are no other required changes.

 

Now kernel boots fine with our board, and I could check that EMI supports change from 200MHz to 166MHz parameters , but there is still a freeze problem with 133MHz parameter table.

 

To test that, I use the command lines as described in the "MX28_linux_BSP_RM.pdf" CPU Frequency Scaling (CPUFREQ) Driver p55. I have changed the DDR freq in file  "bus_freq.c",  struct profile profiles[] = {} associated  to 360MHz cpu freq :

{ 454736, 151570, 205710, 0, 1550000,
 1450000, 355000, 3300000, 1750000, 24000, 0 },
 { 360000, 120000, 166000, 0, 1350000,     // DDR 166000 instead of default 130910
 1250000, 200000, 3300000, 1750000, 24000, 0 },
 { 261818, 130910, 130910, 0, 1350000,
 1250000, 173000, 3300000, 1750000, 24000, 0 },
 {  64000,  64000, 130910, 3, 1350000,
 1250000, 150000, 3300000, 1750000, 24000, 0 },
 {  0,  0,  0, 0, 0,
 0, 0, 0, 0, 0, 0 },

 

"cpu 454.736MHz/DDR 205.710MHz" setting and "cpu 360MHz/DDR 166MHz" setting are working fine but  Cpu 261.818 / DDR 130.910 setting is not working.

 

regards

jy

0 Kudos

2,291 Views
RichardXiao
Contributor I
Use this DDR2: W971G08JB-25,it will work OK, This DDR2 is as same as MX28EVK .
0 Kudos

2,291 Views
BryanJI
Contributor I
Yep, I do the same thing, and it works

Jean-Yves CASTETS said:

Hi,


I have designed my own i.MX28 board and  I use the Micron DDR2 "MT47H32M16HR-3:F".

U-boot correctly starts , but I face an other issue during linux boot process with a freeze after message :
mxs_cpu_init: cpufreq init finished.

We have tried to track the following functions and they are related to "cpu power management" module.

(cpu freq governor).

My assumption is this freeze issue can be related to SDRAM controller or power management problems.

Regarding the SDRAM controller adaptation  for this 64Mbytes memory (default parameters are for 128MBytes one) ,
I have only changed the "number of bank" parameter from 8 banks to 4 banks.

file "init-MX28.c" line 759
table : void DDR2EmiController_EDE1116_200MHz(void)

DRAM_REG[31] = 0x00010101; // 8 banks 1Gbit
replaced with
DRAM_REG[31] = 0x00000101; // 4 banks 512Mbits


Did you note other parameters that need to be changed?

 

regards
jy

0 Kudos

2,291 Views
BryanJI
Contributor I

oops, I got the same problem.

I can use uboot to download uImage and then boot up successfully.

But, when I flash imx28_ivt_linux.sb to SD card.

It stops at uncompressing linux.....done, booting the kernel.

0 Kudos

2,291 Views
BryanJI
Contributor I

I have similar problem days before.

1. Check your EMI configuration. Then test all memory space.

2. Check power supply for SDRAM

3. Make sure your kernel download to correct address.

 

I flash my uboot to SD card and boot kernel using uboot. Don't know how to use Mfgtool to download my kernel to SDRAM,

 

http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux

0 Kudos

2,291 Views
RichardXiao
Contributor I

MX28, MFGtool:Nand Linux update  failed,

debug port output info:

..............................

..............................

UTP: sending Success

UTP: received command 'mknod class/ubi,ubi0,/dev/ubi0'

class = 'class/ubi'

item = 'ubi0'

node = /dev/ubi0

type = (null)

UTP: running utp_mk_devnode(class/ubi,ubi0,/dev/ubi0,0x2000)

utp_mk_devnode: creating node '/dev/ubi0' with 252+0

UTP: sending Success

UTP: received command '$ ubimkvol /dev/ubi0 -n 0 -N rootfs0 -s 256MiB'

UTP: sending Busy

UTP: executing "ubimkvol /dev/ubi0 -n 0 -N rootfs0 -s 256MiB"

UBI error: ubi_create_volume: cannot create volume 0, error -28

ubimkvol: error!: cannot UBI create volume

          error 28 (No space left on device)

UTP: sending Non-success

utp_poll: exit with status 65280

0 Kudos

2,291 Views
Wlad
Contributor II

There are many things which can stop output after "done, booting the kernel." In my case it was because the name of the serial port was changed from ttyAM0 to ttyAMA0. Try using printascii() to debug; if this works consider putting a printascii() in the definition of printk() (kernel/printk.c).

2,291 Views
Jean_Yves
Contributor I

Hi,


I have designed my own i.MX28 board and  I use the Micron DDR2 "MT47H32M16HR-3:F".

U-boot correctly starts , but I face an other issue during linux boot process with a freeze after message :
mxs_cpu_init: cpufreq init finished.

We have tried to track the following functions and they are related to "cpu power management" module.

(cpu freq governor).

My assumption is this freeze issue can be related to SDRAM controller or power management problems.

Regarding the SDRAM controller adaptation  for this 64Mbytes memory (default parameters are for 128MBytes one) ,
I have only changed the "number of bank" parameter from 8 banks to 4 banks.

file "init-MX28.c" line 759
table : void DDR2EmiController_EDE1116_200MHz(void)

DRAM_REG[31] = 0x00010101; // 8 banks 1Gbit
replaced with
DRAM_REG[31] = 0x00000101; // 4 banks 512Mbits


Did you note other parameters that need to be changed?

 

regards
jy

0 Kudos

2,291 Views
VladanJovanovic
NXP Employee
NXP Employee

Most often this is due to memory timing/signal integrity issue. Go through the memory controller setup done in the bootlets and see if anything needs changing for the memory that you are using.

 

Vladan

0 Kudos

2,291 Views
Balaji_ng
Contributor III

Nothing Yet. For me, I am not able to boot with even MX-supplied kernel on my custom board. So I came to the conclusion that it is the problem with memory timing. Is there anybody who has the timing configuration for MT47H32M16:HR -3. I have followed the excel sheet that came with OBDS suite. But nothing works out.

I am still missing out something.

Signal Integrity could also be an issue. How important is adding 22E series resistance on DDR2 DataLine Path?


Regards,

Balaji.V

 

Zbikowski said:

Bump. Any progress? I boot fine with the MX-supplied kernel but halt at the same place trying to boot a custom one. Try enabling KERNEL_DEBUG and KERNEL_DEBUG_LL in your .config.

 

0 Kudos

2,291 Views
Wlad
Contributor II

Bump. Any progress? I boot fine with the MX-supplied kernel but halt at the same place trying to boot a custom one. Try enabling KERNEL_DEBUG and KERNEL_DEBUG_LL in your .config.

0 Kudos

2,291 Views
Balaji_ng
Contributor III

Hi,

I could trace the point till where it is executing. it is not returning from zlib_inflate() function.

Kindly let me know is it the problem with the Kernel misconfiguration or memory timing.

Regards,

Balaji.V

0 Kudos