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.

OMAPL138 LCDK linux boot

Other Parts Discussed in Thread: OMAPL138, DA8XX, OMAP-L138, OMAP-L137

Hi,

I am trying to use c6run with this dev kit, c6run requires cmem, and cmem will not build with the linux 3.3 kernel. I therefore have been trying to compile the linux 2.6 kernel. However the image will not boot on the device. It gets to 

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

And then stops. I have followed the guide at 

http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux#Problem_.232_-_No_more_output_is_seen_on_the_console_after_.22booting_the_kernel.22

to diagnose. I followed the guides on the ti wiki to build the kernel. One idea I have is that there is no make xx_defconfig for the lcdk target. with the tools provided with the lcdk, there is a 'make da850_lcdk_defconfig' target. With the 2.6 (davinci psp) kernel, there is only a 'make da850_omapl138_defconfig' target. Which still seems appropriate but could be the cause of the errors. There are some differences between the various lcdk/omapl138 config files, but I do not have sufficient understanding to edit these myself.

Any advice appreciated

Thanks

  • Just a guess. How far back is your 2.6 kernel? The 2.6.33/03.20.00.13 kernel does not support the newer silcon revisions. Check this file and code:

    arch/arm/mach-davinci/da850.c

    static u32 da850_psc_bases[] = { DA8XX_PSC0_BASE, DA8XX_PSC1_BASE };

    /* Contents of JTAG ID register used to identify exact cpu type */
    static struct davinci_id da850_ids[] = {
        {
            .variant    = 0x0,
            .part_no    = 0xb7d1,
            .manufacturer    = 0x017,    /* 0x02f >> 1 */
            .cpu_id        = DAVINCI_CPU_ID_DA850,
            .name        = "da850/omap-l138",
        },
        {
            .variant    = 0x1,
            .part_no    = 0xb7d1,
            .manufacturer    = 0x017,    /* 0x02f >> 1 */
            .cpu_id        = DAVINCI_CPU_ID_DA850,
            .name        = "da850/omap-l138/am18x",
        },
    };

  • Thanks Norman, 

    I have 3.21.00.04 psp, and my da850.c has the exact code you posted.

  • Are you using a matching version of u-boot? The bootargs that u-boot passes down might have changed between kernel versions. The name of the serial port terminals changed to ttyO# (as in 'O' for Omap) for the last 2.6 kernels. I vaguely remember to got changed back to ttyS in the 3.x kernels. I might be wrong about that.

    Just to confirm the stuff in the Wiki. You have enabled low level debug printing in the kernel and added earlyprintk to the boot args?

  • Hi Norman, I am not sure about a matching version of u-boot, i have not fiddled with the uboot that was supplied with the delivered board. I was not aware I would have to update that in addition to linux. I have tried the ttyO change, no difference. 

    Re the low level debugging: I will have a more thorough effort to enable this info now.

    I also noticed that with my working 3.3 installation I used a different named config file for the linux kernel configuration. With 3.3 there are da850_omapl138_defconfig and tisdk_omapl138-lcdk_defconfig and da850_lcdk_defconfig available, I used the first. With 2.6 there are only da850_omapl138_defconfig. 

    http://pastebin.com/ueRmXDRQ

    http://pastebin.com/Edhtudrf

    http://pastebin.com/6bZMLTtK (diff)

  • AHA: I have managed to get low level printing going, and it is indeed the unsupported machine id

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.

    Error: unrecognized/unsupported machine ID (r1 = 0x000009bf).

    Available machine support:

    ID (hex) NAME
    0000086d DaVinci DA850/OMAP-L138/AM18x EVM

    Please check your kernel config and/or bootloader.

  • Well...stating the obvious...your u-boot and kernel have different machine ids. The id of 0x86d(2157) is for OMAP-L137 EVM. The id sent in by u-boot is 0x9bf(2495) or LCDK-L138. This id is only supported on the newer kernel. As a test, you can try setting the u-boot env variable machid to 86d and then bootm. I'd suggest using a matching version of u-boot.