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.

OMAP-L137 Problems with loading Linux kernel

Other Parts Discussed in Thread: OMAP-L137

Hi,

I am a newbie having problems with loading the linux kernal onto the OMAP. It gets to the stage of loading and displays a # and then turns it into a T and continues attempting.

I think that the TFTP server address is incorrect just before it starts trying to load. Where is this picking it up from ??

Tftp server is running & Linux host is on 192.168.2.3.

The router/dhcp is 192.168.2.1

OMAP is 192.168.2.4

 

When boot:

BOOTP broadcast 1

DHCP client bound to address 192.168.2.4

TFTP from server 192.168.2.1; our IP address is 192.168.2.4

Filename ‘uImage’

Load address: 0xc0700000

Loading : T T T T  etc

(abort at this stage)

 

Printenv as follows:

 

bootdelay=3

baudrate=115200

ethaddr=00:0e:99:02:f4:68

rootpath=/home/Daniel/workdir/filesys

nfshost=192.168.2.3

bootcmd=dhcp

serverip=192.168.2.3

netmask=255.255.255.0

bootargs=console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=192.168.2.3:/home/Daniel/workdir/filesys,nolock mem=32M

ipaddr=192.168.2.4

stdin=serial

stdout=serial

stderr=serial

ver=U-Boot 1.3.3 (Nov 14 2008 - 15:07:10)

dnsip=192.168.0.1

bootfile=uImage

Best regards. Daniel.

  •  

    Hi Daniel,

    Please see:

    https://community.ti.com/forums/p/3387/12449.aspx#12449

    Either you try to modify your router configuration (that might not be easy) or use static IPs.

  • Hi,

    Finally manged to get it to try and load the Linux kernel, although now I have the 'Server returned error -5 while mounting' problem.

    The fix to get it to try and load the Linux kernel seem to ensuring of setting the static IP addresses (as seen in the link above) but with my router still allocating the IP addresses. So a little bit of manual labour everytime I restart but thats no problem for now. Also not forgetting to set 'bootcmd = tftp;bootm'.

    Many thanks for your help.

    Daniel

  • Hi, I have Daniel's same problem, but i could't solve it setting the IP static. Here is what I get:

    U-Boot > printenv
    bootdelay=3
    baudrate=115200
    ethaddr=00:0e:99:02:f4:aa
    bootfile=uImage
    rootpath=/work/filesys
    gateway=172.16.0.1
    netmask=255.255.0.0
    ipaddr=172.16.11.206
    stdin=serial
    stdout=serial
    stderr=serial
    ver=U-Boot 1.3.3 (Feb  5 2009 - 17:25:09)
    bootargs=console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=172.16
    .11.205:/work/filesys,nolock mem=32M
    bootcmd=dhcp:tftp
    nfshost=172.16.11.208
    serverip=172.16.11.208
    bootcmd=dhcp;tftp

    Environment size: 480/16380 bytes
    U-Boot > boot
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10

    Retry count exceeded; starting again
    BOOTP broadcast 1

    Abort
    TFTP from server 172.16.11.208; our IP address is 172.16.11.206
    Filename 'uImage'.
    Load address: 0xc0700000
    Loading: T T T T T T T...

    and so on... I tryed also setting bootcmd = tftp;bootm, but it didn't work either (except the BOOTP broadcast line the result is the same).

    As you can see the server IP is right in my case. I don't know what's wrong honestly, the only strange thing is that when I launch the mtest i get this:

     U-Boot > mtest
    Pattern 00000000  Writing...  Reading...
    Mem error @ 0xC0F6FDF8: found C10A004A, expected 003DBF7E

    Mem error @ 0xC0F6FDFC: found C1087D70, expected 003DBF7F

    Mem error @ 0xC0F6FE00: found C10A004C, expected 003DBF80

    Mem error @ 0xC0F6FE04: found C0F6FE00, expected 003DBF81

    Mem error @ 0xC0F6FE08: found C0F6FE00, expected 003DBF82

    Mem error @ 0xC0F6FE0C: found 003DBF82, expected 003DBF83
    Pattern FFFFFFFF  Writing...

    and the system get stucked. Can anybody help me?

  • This is what I get when i set bootcmd = 'tftp;bootm':

    U-Boot > boot
    TFTP from server 172.16.11.208; our IP address is 172.16.11.206
    Filename 'uImage'.
    Load address: 0xc0700000
    Loading: T T T
    Abort
    Wrong Image Format for bootm command
    ERROR: can't get kernel image!
    U-Boot >

     

  • Gianluca,

    With regards to bootm, typically you use 'tftp' option to transfer uImage to flash and then load from flash via 'bootm'; if this is what you are after, your command should be much longer as you need to specify the memory location where uImage can be found in flash; for example

      EVM # bootcmd 'tftp 0xc0700000 uImage; bootm 0xc0700000'

    A simpler way to do this is to boot uImage via 'dhcp' option.  This will still transfer uImage from host via tftp protocol, but will avoid the need to specify a flash address, hence the request would look simpler as follows

      EVM # setenv bootcmd 'dhcp;bootm'  

    This is what is typically recommended (see http://tiexpressdsp.com/index.php?title=Setting_up_OMAP-L137_Target_File_System ).

  • Ok Juan, thank you.

    I am working on a Linux virtual machine (Win XP host) and I'm wondering if this can cause the problem: when I try to boot via dhcp option i get the BOOTP... 1,2,3...10 strings.

  • The "T T T.." looks like uboot not accessing the tftp server.  You can do a "help" in the uboot window and see some of the network commands available like "ping", "dhcp", etc. 

    I agree with Juan and like dhcp better.  But I have seen instances on various platform uboot's where the local router (Dlink, Cisco, etc)  will not give an ip address, but then the company network will.  And vice-versa.  But if you set a static IP address, you are not sure if you are actually in the network.    

    So bottom line debugging network with the uboot commands seems like the best method (and you can switch between static or DHCP if you wish). 

    >>I am working on a Linux virtual machine (Win XP host)

    I've used VMWare on WinXP with RHEL4 vmimage with no problem if that is what you mean.  But again need to do some of the network debug in uboot to make sure everything is working. 

  • The BOOTP broadcast messages do sound like the EVMs attempt to get ip address from the dhcp server in your network.  It repeatedly tries this before it gives up.  Things to try

    1) From u-boot prompt, try pinging your Linux host (where uImage is); this will ensure that the hardware and cables are working.

    2) As Joe suggested, you can try using static IPs; the following App Note was written for DM644X but it should help for this platform as well: http://focus.ti.com/lit/an/spraaq0/spraaq0.pdf

    3) Make sure you disable the firewall on your Linux Host; this will prevent tftp from working correctly.

    I hope this helps.

  • Ok, I'll try to switch back to dhcp and try to figure out what's happening as you suggest.

    with regard to the VM, yes that's exactly what I meant: I am using VMware with CentOS 5.

    Any idea about the mtest failure?  It fails also when I specify the start and end addresses where the test should be performed. Could it be that some RAM addresses are reserved by uboot itself, and that's why it get stucked, attempting to write where is actually forbidden?

  • well, I can't ping neither the linux host nor the winXP one. The network should be working fine, because I can ping the hosts and the gateway from my PC. I have no idea on how to solve the problem for the moment, so, any help will be quite welcome...

  • Hi, I've made some progress since yesterday. Now I can ping the host from the Uboot prompt. I am trying to load the kernel with dhcp, but still...:

    U-Boot > printenv

    bootdelay=3

    baudrate=115200

    ethaddr=00:0e:99:02:f4:aa

    rootpath=/work/filesys

    gateway=172.16.0.1

    netmask=255.255.0.0

    bootargs=console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=172.16

    .255.136:/work/filesys,nolock mem=32M

    bootcmd=dhcp:tftp

    ipaddr=172.16.11.203

    stdin=serial

    stdout=serial

    stderr=serial

    ver=U-Boot 1.3.3 (Feb 5 2009 - 17:25:09)

    serverip=172.16.255.136

    nfshost=172.16.255.136

    bootcmd=dhcp;bootm

    bootfile=uImage

    Environment size: 483/16380 bytes

    U-Boot > boot

    BOOTP broadcast 1

    DHCP client bound to address 172.16.255.131

    TFTP from server 172.16.255.136; our IP address is 172.16.255.131

    Filename 'uImage'.

    Load address: 0xc0700000

    Loading: T T T T T T T T T T T T T T T T T T T T

    Retry count exceeded; starting again

    Abort

    Wrong Image Format for bootm command

    ERROR: can't get kernel image!

    U-Boot > ping 172.16.255.136

    host 172.16.255.136 is alive

    U-Boot >

    tftp on linux is on, firewall is stopped, IP address is actually 172.16.255.136. Any help or suggestion? Thanks guys.

  • I can't say I totally understand the uboot commands (and I just cut and paste from a text file after experimenting)  but below works for me (and could probably be cleaned up):

    setenv bootargs mem=120M console=ttyS2,115200n8 root=/dev/nfs nfsroot=192.168.1.101:/home/user/workdir/filesys,nolock ip=dhcp noinitrd rw;setenv autoload no;dhcp;bootcmd dhcp;setenv serverip 192.168.1.100;tftpboot;bootm

     

  • Gianluca said:
    well, I can't ping neither the Linux host nor the winXP one. The network should be working fine, because I can ping the hosts and the gateway from my PC. I have no idea on how to solve the problem for the moment, so, any help will be quite welcome...

    If you still can not ping, there is something in your network that is blocking the communication... you might need to contact someone from the IT department, but that is your clue to debug your network.

  • The network' s working now: I have internet access on the CentOS guest (VMware player on WinXP), I can ping every computer (virtual machine too) from the EVM. All the IPs are set static, but I still can't load the kernel. I am wandering if the problem could be connected with the router\gateway setting, as I read on this thread: https://community.ti.com/forums/p/3387/12449.aspx#12449. Anyway, switching to static IP didn't solve the problem. I always get the T sequence while loading the image file.

  • Now I remember that "setenv autoload no" made a big difference for me.

  • Thank you guys, I did it! Stopping autoload and setting the serverip again was very helpful. Besides this, I've had to change the uImage file permissions on my linux tftp server with: chmod 777 /tftpboot/uImage. Thanks again, problem solved. 

  • Glad to hear that!

     

  • Hello,

    I have experienced the same problem with the T time outs. The linksys router would change the server address every time a dhcp IP was assigned. I tried using boot params from one of the posts here and it worked. I struggled for about four hours with this issue. I need to make sure the boot loader is reliable. Did you find a solution?

     

  • Hi, yes I did.

    Try to:

    1) ask the router for a IP by dhcp

    2) after that, set the enviroment variable serverip (your host IP)

    3) and last boot with tftpboot;bootm

     

    This should avoid the timeout problem; if there's something else wrong the message on the terminal shuold be different, unless you have the same permits problem, like me. If so, try to chmod the /tftpboot folder on your linux host. It worked for me.

  • alternatively, if you want to do away with the router completely (and its associated issues) and use static IPs instead, the following App Note may be useful: http://focus.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=spraaq0

  • Thanks Jaun,

    I have moved onto compiling the kernel. When I try to create the ulmage I get:

    james@ebox1:~/workdir/lsp/ti-davinci/linux-2.6.18_pro500$ make ARCH=arm CROSS_COMPILE=arm_v5t_le- ulmage
    make: *** No rule to make target `ulmage'.  Stop.

    If I run the other option:

    james@ebox1:~/workdir/lsp/ti-davinci/linux-2.6.18_pro500$ make ARCH=arm CROSS_COMPILE=arm_v5t_ls- xconfig
      CHECK   qt
    *
    * Unable to find the QT installation. Please make sure that
    * the QT development package is correctly installed and
    * either install pkg-config or set the QTDIR environment
    * variable to the correct location.

    Thanks

  • where you able to run the following previous steps succesfully?

    host $ make ARCH=arm CROSS_COMPILE=arm_v5t_le- distclean
    host $ make ARCH=arm CROSS_COMPILE=arm_v5t_le- da830_omapl137_defconfig

    can you provide a listing of your linux-2.6.18_pro500 directory, just to see if it looks correct?

  • As suggested by Juan, first we need to run distclean and defconfig. Also  you need to make sure that the PATH variable settings has the path to the tool chain as well.

    You can do this by export PATH=$PATH:(path to the tool chain) on the Linux PC you are using for the build.

    Thanks,

    Prathap.

  • Hi Juan, I know this is probably not your area of expertise but perhaps you could help.

    I just got a quote from the folks at Montavista and the subscription fee for their tools is way to much money for my small startup. So what I need to know is:  As far as the tools provided in the EVM package where does TI stop and Montavista start. If I elect not to purchase the Montavista tools, what are my options? 

    So far, I am thrilled with the EVM and the support from you guys.

    By the way, my kernel build problem was a dumb typo, operator impedance :)

  • it is my understanding that you should be able to go to production with the demo MVL included with the DVSDK software; buying MV License however, will get you access to MV Zone where you can find general kernel updates, tools such as DevRocket and support...just so you know what you are giving up.  That said, we will do our best to support you in any way we can as well and you can always reconsider buying MV License at a latter time if necessary.

  •  

    Juan,
    Thanks for the info, I am very happy with that news. I will continue to use the MV tools.
    Last night I was experimenting with transferring the filesystem to an SD card. I used a disk manager tool to create an empty ext2 partition.I would like to try out the stand alone system as described in the getting started doc where the kernel is loaded in SPI flash and the root file system is on the SD card. How do I switch back and forth between standalone config and the TFTP boot config?
    One more question, I am responsible for the GPP side of this project, but I would like to try out some simple examples on the DSP side using the Code Composer IDE, can you point me to a getting started tutorial on the DSP side? 

     

  • Check12 said:

     How do I switch back and forth between standalone config and the TFTP boot config? 

    This will largely depend on your u-boot settings; the following wiki is a good source for understanding the various u-boot options you can use on OMAP-L137 EVM

    http://tiexpressdsp.com/index.php/Alternate_Boot_Methods_for_OMAP-L137

    Check12 said:

    One more question, I am responsible for the GPP side of this project, but I would like to try out some simple examples on the DSP side using the Code Composer IDE, can you point me to a getting started tutorial on the DSP side?  

    When you install CCS and go to help menu, there should be a tutorial option; this is probrably the best place to get started in learning CCS, including running code on DSP.

     

  • Also, for installing the DSP only software and run the examples, please see:

    http://tiexpressdsp.com/index.php/Getting_Started_Guide_for_C6747

  • I am building the filesystem on SD/MMC I have created a ext2 partition and copied the filesystem as instructed in the getting started guide. I have a question about loading the kernel modules:

    --------------------------

    sudo cp -Rf /home/<useracct>/workdir/filesys /media/disk
    

    All modules should be properly copied onto the target filesystem.

    • If using the default Linux kernel provided with the installation:
    sudo cp -Rf /opt/OMAPL137_arm_1_00_00_07/REL_LSP_02_20_00_05/PSP_02_20_00_05/bin/kernel_modules/* /media/disk-1
    -------------------------
    Could you please explain the difference between:
    media/disk and media/disk-1
    Thanks

  • I believe these are just directories you create, you can name them whatever you wish.

  • media/disk and media/disk-1

    They are just mount points for the file system.  You could mount them to 'ralph' if you wanted to so arbitrary (you would just have to create:  mkdir /media/ralph and do a mount command).  If there are multiple file systems on the device (formatted partitions) then it is possible the names could be reversed as well where disk could be second file system and disk-1 is the first thus good to check writing to proper one first.  To make consistant would have to put an entry in /etc/fstab.  Typically if the partition logic name is empty then Linux uses 'disk' as the name.  If set it will use that name.  Doing just the 'mount' command with no parameters will let you know where things are mounted and names used.

    Kev

     

  • Was there ever any resolution on the mtest failure? I'm seeing the *exact* same results, and the odds against that being due to chance are astronomical.

    Thanks.

    Steve
  • Dear Steve,
    Can you please create a new post for your problem ?