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.

Hangs after Uncompressing the kernel

Hi ,

I am trying to boot linux on our custom board based on DM-368 which uses the ubl, uboot, kernel and filesystem provided in ti dvsdk 4.02.00.06. For evaluation purpose we were using the leopard board and it was booting on the leopard board with a SD card.

But once we started trying with our board, it hangs after the kernel is being uncompressed. The UBL used by default configures the system clock to 340 Mhz. So we tried reducing the clock frequency to 277 Mhz as in other configuration for the UBL. Surprisingly the linux is booting at that frequency. But for our application we need to run the system at 340 Mhz. Can anyone please help on this

Thanks and Regards

Avinash James

Here is the boot up log at full speed of 340 Mhz

DM36x initialization passed!
TI UBL Version: 1.50
Booting Catalog Boot Loader
BootMode = SD/MMC
Starting SDMMC Copy...
   DONE
Jumping to entry point at 0x81080000.


U-Boot 2010.12-rc2 (Mar 24 2011 - 16:49:26)

Cores: ARM 432 MHz
DDR:   340 MHz
I2C:   ready
DRAM:  128 MiB
NAND:  512 MiB
MMC:   davinci: 0, davinci: 1
Bad block table found at page 131008, version 0x01
Bad block table found at page 262080, version 0x01
Bad block table found at page 130944, version 0x01
Bad block table found at page 262016, version 0x01
*** Warning - bad CRC, using default environment

Net:   No ETH PHY detected!!!
DaVinci-EMAC
Hit any key to stop autoboot:  0
reading boot.scr

388 bytes read
## Executing script at 80600000
reading uImage

1873052 bytes read
## Booting kernel from Legacy Image at 80700000 ...
   Image Name:   Linux-2.6.18_pro500-davinci_IPNC
   Created:      2012-08-07  10:02:12 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1872988 Bytes = 1.8 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux............................................................................................................................. done, booting the kernel.

 

After this the system hangs.

  • Avinash,

    When I experienced this problem it was becuase my linux kernel image was too large and it was was overwriting the U-Boot section of code before U-Boot was able to jump to the linux kernel.

    You could double check that the size of your kernel image is not overwriting into U-Boot.  I have to change the start address that I was loading too so that it did not overwrite the U-Boot.

    Brandy

  • Hi Brandy,

    Thanks for your reply. But if the uncompression of kernel is corrupting the u-boot, then why is it not being corrupted for lower frequency configuration of the UBL. Both the cases the kernel uImage is same. For reduced frequency it is wroking perfectly fine but at higher frequency it is not.

    One more thing, i tried with different sizes of kernels. All are giving the same results. Could it be anything in the hardware?

    Best Regards

    Avinash

  • Can you post your bootargs? sometimes it's not the system hang, just not outputting to the right console.

  • Changing the System clock frequency might change the UART clock frequency. I assume that in your case, the UART clock frequency is independent of the System clock or that U-Boot and Linux as been adjusted appropriately. Assuming the UART clock is good, I would guess that the DDR timing config not quite right. I believe Linux uses the DDR with DMA which is more demanding of timing. I think U-Boot does not use DMA.

    Try adding earlyprintk to your bootargs.

  • Hi Hongfeng,

           Here are the bootargs

    baudrate=115200
    bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off
    bootcmd=if mmc rescan 0; then if fatload mmc 0 0x80600000 boot.scr; then source 0x80600000; else fatload mmc 0 0x80700000 uImage; bootm 80700000; fi; fi
    bootdelay=3
    bootfile="uImage"
    ethact=DaVinci-EMAC
    stderr=serial
    stdin=serial
    stdout=serial
    ver=U-Boot 2010.12-rc2 (Mar 24 2011 - 16:49:26)

     
    Environment size: 400/262140 bytes
    But my concern is bootargs is same for UBL frequencies of 277 and 340 Mhz but it only works for 277 Mhz not for 340 Mhz
  • Hi Norman,

       As u said the DDR uses DMA and for this the timing is critical, we believe it could be something with the hardware.Earlier we were testing the same thing on leopard board for DM-368 and it was booting completely. Now once we have got our custom board, it is not. We have included a resistor pack between the DDR and processor which we thought would be better after simulating it using hyper linx for high speed signals. We will try changing the resistors as it could give some timing issues like RC delay for the signasl.

    Thanks for your reply.

    Best Regards

    Avinash