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 to AM1808

Other Parts Discussed in Thread: OMAP-L138, AM1808

Hi,

I'm running Linux Davinci on a custum hardware based on OMAP L138 EVM. I got two cards, one with OMAP-L138 and an other with AM1808. The only difference between the two cards is the CPU, all others peripherals are same.

I compiled the kernel from DaVinci-PSP-SDK-03.20.00.12.tgz.

The first board with OMAP-L138 boot correctly.

With the same kernel image, the second board with AM1808 freeze at boot time.

Here is the boot log:


 

Loading: #################################################################

         #################################################################

         ################

done

Bytes transferred = 2142892 (20b2ac hex)

## Booting kernel from Legacy Image at c0007fc0 ...

   Image Name:   Linux-2.6.33-rc4

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    2142828 Bytes =  2 MB

   Load Address: c0008000

   Entry Point:  c0008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel. <= Freezes here !

 

 

I configured the kernel to use 300 Mhz clock, I also tried 456 Mhz but same behaviour. I thought that those CPU was pin to pin compatible. Any ideas of what could cause this problem?

Regards,

Nicolas

  • Nicolas,

    I would not expect any differences in your boot behavior between the L138 and AM1808.

    Can you execute this debug GEL on the devices and report back the results?

    http://processors.wiki.ti.com/index.php/OMAP-L1x_Debug_Gel_Files

    -Tommy

  • ARM9_0: Output:  --------------------------------------------- 

    ARM9_0: Output: |             Device Information            | 

    ARM9_0: Output: --------------------------------------------- 

    ARM9_0: Output: DEV_INFO_00 = 0x1B7D102F 

    ARM9_0: Output: DEV_INFO_01 = 0x00000000 

    ARM9_0: Output: DEV_INFO_02 = 0x0000001E 

    ARM9_0: Output: DEV_INFO_03 = 0x00000012 

    ARM9_0: Output: DEV_INFO_04 = 0x00000000 

    ARM9_0: Output: DEV_INFO_05 = 0x000003E0 

    ARM9_0: Output: DEV_INFO_06 = 0x08080080 

    ARM9_0: Output: DEV_INFO_07-DEV_INFO_08-DEV_INFO_09-DEV_INFO_10-DEV_INFO_11-DEV_INFO_12 = 0-0-5116568-11-50-26 

    ARM9_0: Output: DEV_INFO_13,DEV_INFO_14,DEV_INFO_15,DEV_INFO_16 = 2,0,0,13725 

    ARM9_0: Output: ----- 

    ARM9_0: Output: DEV_INFO_17 = 0x00030003 

    ARM9_0: Output: DEV_INFO_18 = 0x00000000 

    ARM9_0: Output: DEV_INFO_19 =

    ARM9_0: Output: 0

    ARM9_0: Output: 0

    ARM9_0: Output: 0

    ARM9_0: Output: 0

    ARM9_0: Output: 0

    ARM9_0: Output:  

    ARM9_0: Output: ----- 

    ARM9_0: Output: DEV_INFO_20 = 0x00000000 

    ARM9_0: Output: DEV_INFO_21 = 0x00000000 

    ARM9_0: Output: DEV_INFO_22 = 0x30303864 

    ARM9_0: Output: DEV_INFO_23 = 0x3630306B 

    ARM9_0: Output: ----- 

    ARM9_0: Output: DEV_INFO_24 = 0x0B01A032 

    ARM9_0: Output: DEV_INFO_25 = 0x004E1298 

    ARM9_0: Output: DEV_INFO_06 = 0x08080080 

    ARM9_0: Output: DEV_INFO_26 = 0x6B3A0002 

    ARM9_0: Output:   

    ARM9_0: Output: --------------------------------------------- 

    ARM9_0: Output: |               BOOTROM Info                | 

    ARM9_0: Output: --------------------------------------------- 

    ARM9_0: Output: ROM ID: d800k006  

    ARM9_0: Output: Silicon Revision 2.0 

    ARM9_0: Output: Boot Mode: Emulation Debug 

    ARM9_0: Output:  ROM Status Code: 0x00000000  Description:

    ARM9_0: Output: No error 

    ARM9_0: Output:  Program Counter (PC) = 0x800010F0 

  • I don't see anything wrong from a hardware standpoint.  I moved this to the Linux forum in case someone here has software debug ideas.

  • Nicolas,

    The same kernel should boot on AM1808 and OMAP-L138.

    Can you share the bootargs on AM1808 board?

    Thanks,

    Sekhar

  • Sekhar,

    setenv bootargs 'console=tty,115200n8 noinitrd rw root=/dev/nfs nfsroot=192.168.10.44:/home/workdir/final_FS,nolock mem=128M ip=192.168.10.201'

    setenv bootcmd 'tftp 0xC0007FC0 uImage; bootm 0xC0007FC0'


  • You are missing "ttyS2" console setting in bootargs. Use the below bootargs:

    setenv bootargs 'console=ttyS2,115200n8 noinitrd ................................."

    Thanks

    Brijesh

  • Brijesh,

    Thank you for the advice, but still same behaviour....

    I'm trying to find a way to check where the code freeze, but it's very difficulte to trace.

    Any other thing that I could try?

    Regards,

    Nicolas

  • Hi.

     

    It seems to be a bad access to memory. Is there any access to DSP memory map in the linux kernel?

    Also, I tried to turn on a LED before the kernel freeze. Can anybody tell me where is the linux entry point in the code. I tried to add a raw_write into "da850_evm_map_io" and in "da850_evm_init" to turn on the LED and it doesn't work.

     

    Thank you.

    Regards,

    Nicolas 

  • Hi,

    I found the problem. Tommy, yes there is something wrong from hardware standpoint.

    This is the problem: ARM9_0: Output: DEV_INFO_00 = 0x1B7D102F.

    From the datasheet, it should be 0x0B7D102F.

    This is the JTAG ID, I changed it into the kernel code to use 0x1B7D102F and now it works.

     

    Nicolas

  • Nicolas,

    Thanks for sharing the root problem.  Please note that the most significant nibble of the device ID that you are reading may change with major silicon revisions in the future.

    -Tommy

  • Tommy,

    Why is it not documented into the datasheet? Maybe an update could be useful... and will avoid losing time with such a basic problem.

    Regards,

    Nicolas

  • Nicolas,

    I apologize for the trouble.  This was a documentation mistake and is in the process of being corrected.

    -Tommy

  • For future reference...

    The JTAG ID can be changed in the da850.c file within the kernel source code (<PSP install dir>src/kernel/linux-xx.xx.xx.xx/arch/arm/mach-davinci/).  The new ID can be included by adding the following lines to the da850.c file:

    /* 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",

    },

    };

  • Hi All,

    I am using AM1808 and booting the Kernel and Application via SD-Card. I am using RTC for time stamp.

    AM1808 has internal RTC which we have given the CMOS battery for RTC backup. i.e CR2032 battery one.

    But I am worried about battery back is not coming for 1 year. it is coming for just 4-5 months.

    And also, If the CMOS battery get drain, the kernel gets hang. it shows the message:

    OK

    Starting kernel ...

    Uncompressing Linux... done,  booting the kernel.

    After  that it is not extracting the kernel. Is there any way to resolve my issue in

    Kernel level, Even if the battery get drain, still i need to run my system.

    If the CMOS battery is full the system is working fine. The problem is without battery

    Please solve my issue.

    Regards,

    Francis