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.

TI code vs, RidgeRun code, evm vs Leopardboard

Other Parts Discussed in Thread: TVP7002, PCA9543A, THS7303, TVP5146, THS7353

I find I don't quite understand the differences/advantages of the various platforms and code builds.  Could some one sort this out for me? 

 

I have a leopard board.  I know it needs an OS and kernel and gstreamer and drivers, modules and other such stuff.

 

Is the Ti build (kernel, DVDSK, gstreamer(?), PSP, etc.) meant only for the EVM.  It runs on Leopard but when it boots I see lots of errors and warnings about unneeded stuff, many tvp7002 retries, disabled clocks and modprobes that fail.

Should that happen?  Or do I have compile errors that I need to figure out?

 

Is the RR code available for the Leopard?  Does it differ from RR EVM code?

 

The long and short of this is that my management really does not want to touch RR code since there are all those fees and royalties involved.  Is that reasonable?  Are there other code development teams/projects that are GPL or best LGPL or Berkley/MIT/CPL?

 

Thanks,

 

Wes

  • Wesley Miller said:

    Is the Ti build (kernel, DVDSK, gstreamer(?), PSP, etc.) meant only for the EVM.  It runs on Leopard but when it boots I see lots of errors and warnings about unneeded stuff, many tvp7002 retries, disabled clocks and modprobes that fail.

    Should that happen?  Or do I have compile errors that I need to figure out?

    Can you attach the boot log containing the errors that you notice?

    I am not too familiar with Leopard board, but here are few top level comments:

    1) If the kernel for EVM boots on Leopard, then the 2 boards should be quite similar

    2) Since you see many errors during boot, they could be due to differences in the on-board devices or just their connectivity with the processor e.g. using different GPIO for reset, ...

    3) Is there a kernel configuration defied for Leopard board? If so you may want to build kernel against this configuration.

    4) Else, you can start with the configuration for the EVM and use "make menuconfig" to customize it for leopard. This customization can help you exclude the devices that don't exist on Leopard - and reduce the errors you would be noticing during boot.

    5) Changes would be required in other layers (e.g. u-boot) as well.

    BTW, which EVM platform are you referring here?

    Wesley Miller said:

    The long and short of this is that my management really does not want to touch RR code since there are all those fees and royalties involved.  Is that reasonable?  Are there other code development teams/projects that are GPL or best LGPL or Berkley/MIT/CPL?

    This should be best addressed by the legal team of your company. You shouldn't be making decisions on public opinions.

    Just to let you know Linux is GPLv2 and different software components on the user-side are licensed differently. The license information is included in corresponding packages.

  • Wes,

    You would have to follow the steps as documented in the Leopard EVM documentation/website.

    As I understand RR did the basic port for the TI platform and used TI EVM to validate it.  Leopard would have used the RR port as the base (and modified it to suite Leopard EVM) to test the kernel and other products on top of it.

    Linux Kernel is GPL and hence there are no royalties as I understand it.  You can modify it and share the modification with others.

    There would be a leopard EVM config as part of Linux kernel config you would have to compile the kernel using that if you are using Leopard EVM.

    regards

    swami

  • Sanjeev,

    There are no files in /var/log on the LeopardBoaard i.e. in the NFS dir on the host PC).  Why?

     

    Here is the output from the console:  (sorry for the long post)




    U-Boot 1.3.4-svn3 (Feb 14 2010 - 00:32:43)

    I2C:   ready
    DRAM:  128 MB
    NAND:  NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)
    Bad block table not found for chip 0
    Bad block table not found for chip 0
    nand_bbt: Error while writing bad block table -5
    256 MiB
    In:    serial
    Out:   serial
    Err:   serial
    Ethernet PHY: GENERIC @ 0x00
    Hit any key to stop autoboot:  4  3  2  1  0
    BOOTP broadcast 1
    DHCP client bound to address 10.253.5.158
    TFTP from server 10.253.5.214; our IP address is 10.253.5.158
    Filename 'uImage'.
    Load address: 0x80700000
    Loading: *#################################################################
         #################################################################
         #################
    done
    Bytes transferred = 2146024 (20bee8 hex)
    ## Booting kernel from Legacy Image at 80700000 ...
       Image Name:   Linux-2.6.32.17-davinci1
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2145960 Bytes =  2 MB
       Load Address: 80008000
       Entry Point:  80008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK
    OK

    Starting kernel ...

    Uncompressing Linux............................................................................................................................................ done, booting the kernel.
    Linux version 2.6.32.17-davinci1 (wmiller@Torchwood) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 PREEMPT Tue Oct 5 07:42:10 EDT 2010
    CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
    CPU: VIVT data cache, VIVT instruction cache
    Machine: DaVinci DM365 EVM
    Memory policy: ECC disabled, Data cache writeback
    DaVinci dm365_rev1.2 variant 0x8
    Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 15240
    Kernel command line: mem=60M console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=10.253.5.214:/home/wmiller/workdir/filesys,nolock ip=dhcp video=davincifb:vid0=OFF:vid1=OFF:osd0=720x576x16,2025K dm365_imp.oper_mode=0
    PID hash table entries: 256 (order: -2, 1024 bytes)
    Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
    Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
    Memory: 60MB = 60MB total
    Memory: 56220KB available (4020K code, 393K data, 144K init, 0K highmem)
    SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    Hierarchical RCU implementation.
    NR_IRQS:245
    Console: colour dummy device 80x30
    Calibrating delay loop... 147.86 BogoMIPS (lpj=739328)
    Mount-cache hash table entries: 512
    CPU: Testing write buffer coherency: ok
    DaVinci: 8 gpio irqs
    NET: Registered protocol family 16
    davinci_serial_init:97: failed to get UART2 clock
    EVM: HD imager video input
    bio: create slab <bio-0> at 0
    DM365 IPIPE initialized in Continuous mode
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    pca9543a_probe
    vpss vpss: dm365_vpss vpss probed
    vpss vpss: dm365_vpss vpss probe success
    dm365_afew_hw_init
    ch0 default output "COMPOSITE", mode "NTSC"
    VPBE Encoder Initialized
    cfg80211: Using static regulatory domain info
    cfg80211: Regulatory domain: US
        (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
        (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
        (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
        (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
    cfg80211: Calling CRDA for country: US
    LogicPD encoder initialized
    Switching to clocksource timer0_1
    musb_hdrc: version 6.0, cppi-dma, host, debug=0
    musb_hdrc: USB Host mode controller at fec64000 using DMA, IRQ 12
    musb_hdrc musb_hdrc: MUSB HDRC host driver
    musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
    usb usb1: configuration #1 chosen from 1 choice
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    NET: Registered protocol family 2
    IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
    TCP established hash table entries: 2048 (order: 2, 16384 bytes)
    TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
    TCP: Hash tables configured (established 2048 bind 2048)
    TCP reno registered
    NET: Registered protocol family 1
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 109
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler anticipatory registered (default)
    davincifb davincifb.0: dm_osd0_fb: Initial window configuration is invalid.
    Console: switching to colour frame buffer device 90x36
    davincifb davincifb.0: dm_osd0_fb: 720x576x16@0,0 with framebuffer size 2025KB
    davincifb davincifb.0: dm_vid0_fb: 0x0x16@0,0 with framebuffer size 1020KB
    davincifb davincifb.0: dm_osd1_fb: 720x480x4@0,0 with framebuffer size 675KB
    davincifb davincifb.0: dm_vid1_fb: 0x0x16@0,0 with framebuffer size 1020KB
    DM365 IPIPEIF probed
    imp serializer initialized
    davinci_previewer initialized
    davinci_resizer initialized
    Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
    serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A
    console [ttyS0] enabled
    brd: module loaded
    at24 1-0050: 32768 byte 24c256 EEPROM (writable)
    NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)
    2 NAND chips detected
    Creating 5 MTD partitions on "davinci_nand.0":
    0x000000000000-0x000000f00000 : "bootloader"
    0x000000f00000-0x000001000000 : "params"
    0x000001000000-0x000001400000 : "kernel"
    0x000001400000-0x000021400000 : "filesystem1"
    mtd: partition "filesystem1" extends beyond the end of device "davinci_nand.0" -- size truncated to 0x1ec00000
    0x000020000000-0x000020000000 : "filesystem2"
    mtd: partition "filesystem2" is out of reach -- disabled
    davinci_nand davinci_nand.0: controller rev. 2.3
    spi_davinci spi_davinci.0: DaVinci SPI driver in EDMA mode
    Using RX channel = 17 , TX channel = 16 and event queue = 3
    at25 spi0.0: 8 KByte at25640 eeprom, pagesize 32
    spi_davinci spi_davinci.0: Controller at 0xfec66000
    console [netcon0] enabled
    netconsole: network logging started
    Initializing USB Mass Storage driver...
    usbcore: registered new interface driver usb-storage
    USB Mass Storage support registered.
    usbcore: registered new interface driver usbtest
    mice: PS/2 mouse device common for all mice
    input: DM365 EVM Controls as /devices/platform/i2c_davinci.1/i2c-1/1-0025/input/input0
    i2c /dev entries driver
    Linux video capture interface: v2.00
    ths7303 1-002c: chip found @ 0x58 (DaVinci I2C adapter)
    vpfe_init
    vpfe-capture: vpss clock vpss_master enabled
    vpfe-capture vpfe-capture: v4l2 device registered
    vpfe-capture vpfe-capture: video device registered
    EVM: switch to tvp5146 SD video input
    tvp514x 1-005d: tvp514x 1-005d decoder driver registered !!
    vpfe-capture vpfe-capture: v4l2 sub device tvp5146 registered
    EVM: switch to tvp7002 HD video input
    tvp7002 1-005c: Write: retry ... 0
    tvp7002 1-005c: Write: retry ... 1
    tvp7002 1-005c: Write: retry ... 2
    tvp7002 1-005c: Write: retry ... 3
    tvp7002 1-005c: Write: retry ... 4
    tvp7002 1-005c: Write: retry ... 5
    tvp7002 1-005c: Write: retry ... 0
    tvp7002 1-005c: Write: retry ... 1


     ... snip...snip...snip...snip...snip...snip...snip...snip...snip...   <fuplicate lines removed>


    tvp7002 1-005c: Write: retry ... 5
    tvp7002 1-005c: Write: retry ... 0
    tvp7002 1-005c: Write: retry ... 1
    tvp7002 1-005c: Write: retry ... 2
    tvp7002 1-005c: Write: retry ... 3
    tvp7002 1-005c: Write: retry ... 4
    tvp7002 1-005c: Write: retry ... 5
    tvp7002: probe of 1-005c failed with error -22
    vpfe-capture vpfe-capture: v4l2 sub device tvp7002 register fails
    EVM: switch to tvp7002 HD video input
    ths7353 1-002e: chip found @ 0x5c (DaVinci I2C adapter)
    ths7353 1-002e: No platform data!!
    ths7353 1-002e: ths7353 write failed
    ths7353: probe of 1-002e failed with error -121
    vpfe-capture vpfe-capture: v4l2 sub device ths7353 register fails
    vpfe_register_ccdc_device: DM365 ISIF
    DM365 ISIF is registered with vpfe.
    af major#: 252, minor# 0
    AF Driver initialized
    aew major#: 251, minor# 0
    AEW Driver initialized
    Trying to register davinci display video device.
    layer=c20d9800,layer->video_dev=c20d9970
    Trying to register davinci display video device.
    layer=c20d9c00,layer->video_dev=c20d9d70
    davinci_init:DaVinci V4L2 Display Driver V1.0 loaded
    watchdog watchdog: heartbeat 60 sec
    davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode
    usbcore: registered new interface driver usbhid
    usbhid: v2.6:USB HID core driver
    Advanced Linux Sound Architecture Driver Version 1.0.21.
    No device for DAI tlv320aic3x
    No device for DAI davinci-i2s
    asoc: tlv320aic3x <-> davinci-i2s mapping ok
    ALSA device list:
      #0: DaVinci EVM (tlv320aic3x)
    TCP cubic registered
    NET: Registered protocol family 17
    lib80211: common routines for IEEE802.11 drivers
    Clocks: disable unused mmcsd1
    Clocks: disable unused spi1
    Clocks: disable unused spi2
    Clocks: disable unused spi3
    Clocks: disable unused spi4
    Clocks: disable unused pwm0
    Clocks: disable unused pwm1
    Clocks: disable unused pwm2
    Clocks: disable unused pwm3
    Clocks: disable unused timer1
    Clocks: disable unused timer3
    Clocks: disable unused emac
    Clocks: disable unused voice_codec
    Clocks: disable unused rto
    Clocks: disable unused mjcp
    davinci_emac_probe: using random MAC addr: be:99:03:c7:49:98
    emac-mii: probed
    eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=1:01, id=221613)
    Sending DHCP requests .
    PHY: 1:01 - Link is Up - 100/Full
    ., OK
    IP-Config: Got DHCP answer from 0.0.0.0, my address is 10.253.5.201
    IP-Config: Complete:
         device=eth0, addr=10.253.5.201, mask=255.255.254.0, gw=10.253.4.1,
         host=10.253.5.201, domain=sdr.charlotte.Lsix.us, nis-domain=(none),
         bootserver=0.0.0.0, rootserver=10.253.5.214, rootpath=
    Looking up port of RPC 100003/2 on 10.253.5.214
    Looking up port of RPC 100005/1 on 10.253.5.214
    VFS: Mounted root (nfs filesystem) on device 0:14.
    Freeing init memory: 144K
    INIT: version 2.86 booting
    Please wait: booting...
    Starting udev
    udev: starting version 141
    udevd[1042]: inotify_add_watch(3, (null), 10) failed: Bad address

    Remounting root file system...
    WARNING: Couldn't open directory /lib/modules/2.6.32.17-davinci1: No such file or directory
    FATAL: Could not open /lib/modules/2.6.32.17-davinci1/modules.dep.temp for writing: No such file or directory
    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory

    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory

    root: mount: mounting rootfs on / failed: No such file or directory
    ALSA: Restoring mixer settings...
    Setting up IP spoofing protection: rp_filter.
    Configuring network interfaces... udhcpc (v1.13.2) started
    Sending discover...
    Sending select for 10.253.5.201...
    Lease of 10.253.5.201 obtained, lease time 518400
    adding dns 10.253.4.12
    adding dns 10.253.4.11
    done.
    Mon Jun 21 20:58:00 UTC 2010
    INIT: Entering runlevel: 5
    Starting telnet daemon.
    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory

    Starting syslogd/klogd: done
    Starting thttpd.

     _____                    _____           _         _
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
                  |___|                    |___|

    Arago Project http://arago-project.org dm365-evm ttyS0

    Arago 2009.11 dm365-evm ttyS0

    dm365-evm login: root

     


    Many, many thanks!

    Wes

     

     

  • Wesley Miller said:

    There are no files in /var/log on the LeopardBoaard i.e. in the NFS dir on the host PC).  Why?


    Appears the either corresponding service/daemon is not started OR the log level is set too high.
    Wesley Miller said:

    Here is the output from the console:  (sorry for the long post)

    You should be able to attach the file instead of pasting it here. See the icon that says "Insert media"
    Below, i will try to explain some of the messages that i believe you referred in your original message. I am not very familiar with DM365 and associated codebase, but i will be able to point you to relevant places where you could look for change(s) on way to resolution:
    Wesley Miller said:

    Linux video capture interface: v2.00
    ths7303 1-002c: chip found @ 0x58 (DaVinci I2C adapter)
    vpfe_init
    vpfe-capture: vpss clock vpss_master enabled
    vpfe-capture vpfe-capture: v4l2 device registered
    vpfe-capture vpfe-capture: video device registered
    EVM: switch to tvp5146 SD video input
    tvp514x 1-005d: tvp514x 1-005d decoder driver registered !!
    vpfe-capture vpfe-capture: v4l2 sub device tvp5146 registered
    EVM: switch to tvp7002 HD video input
    tvp7002 1-005c: Write: retry ... 0
    tvp7002 1-005c: Write: retry ... 1
    ... snip...snip...snip...snip...snip...snip...snip...snip...snip...   <fuplicate lines removed>
    tvp7002: probe of 1-005c failed with error -22
    vpfe-capture vpfe-capture: v4l2 sub device tvp7002 register fails

    It appears that device tvp7002 wasn't found. If your board doesn't have this device, you should remove from your kernel configuration.
    Wesley Miller said:

    EVM: switch to tvp7002 HD video input
    ths7353 1-002e: chip found @ 0x5c (DaVinci I2C adapter)
    ths7353 1-002e: No platform data!!
    ths7353 1-002e: ths7353 write failed
    ths7353: probe of 1-002e failed with error -121
    vpfe-capture vpfe-capture: v4l2 sub device ths7353 register fails
    vpfe_register_ccdc_device: DM365 ISIF
    DM365 ISIF is registered with vpfe.

    The driver seems to be missing the platform data? Did you add the driver for this device? if so, it is expecting platform specific information to be passed from the board file.
    Else, you may want to see if you've inadvertently removed some code corresponding to this device.
    Wesley Miller said:

    Clocks: disable unused mmcsd1
    Clocks: disable unused spi1
    Clocks: disable unused spi2
    Clocks: disable unused spi3
    Clocks: disable unused spi4
    Clocks: disable unused pwm0
    Clocks: disable unused pwm1
    Clocks: disable unused pwm2
    Clocks: disable unused pwm3
    Clocks: disable unused timer1
    Clocks: disable unused timer3
    Clocks: disable unused emac
    Clocks: disable unused voice_codec
    Clocks: disable unused rtoClocks: disable unused mjcp

    These are debug statements are result of pr_info() statement in arch/arm/mach-davinci/clock.c. You can remove this statement to prevent them from appearing on the console.
    Wesley Miller said:

    Starting udev
    udev: starting version 141
    udevd[1042]: inotify_add_watch(3, (null), 10) failed: Bad address

    I don't have much idea about this error. May be due to an earlier 'unclean' unmount of the system.
    Wesley Miller said:

    WARNING: Couldn't open directory /lib/modules/2.6.32.17-davinci1: No such file or directory
    FATAL: Could not open /lib/modules/2.6.32.17-davinci1/modules.dep.temp for writing: No such file or directory
    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory
    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory
    root: mount: mounting rootfs on / failed: No such file or directory


    There seems to be difference between the filesystem and the kernel version you are using...  You need to create the directory /lib/modules/2.6.32.17-davinci1 in your filesystem and ensure that modules corresponding to the kernel version you are using are added to this location. If you aren't using any modules, you should be able to safely ignore these warnings.

  • Sanjeev Premi said:


    WARNING: Couldn't open directory /lib/modules/2.6.32.17-davinci1: No such file or directory
    FATAL: Could not open /lib/modules/2.6.32.17-davinci1/modules.dep.temp for writing: No such file or directory
    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory
    modprobe: FATAL: Could not load /lib/modules/2.6.32.17-davinci1/modules.dep: No such file or directory
    root: mount: mounting rootfs on / failed: No such file or directory



    There seems to be difference between the filesystem and the kernel version you are using...  You need to create the directory /lib/modules/2.6.32.17-davinci1 in your filesystem and ensure that modules corresponding to the kernel version you are using are added to this location. If you aren't using any modules, you should be able to safely ignore these warnings.

    [/quote]

     

    I still don't quite know why, but i fixed these by just creating the directory /lib/modules/2.6.32.17-davinci1.  On the next boot, several files were created there and I got a completely different set of happy messages (at this point, anyway).  I did not have to put any .ko's there!

     

    One down!

    Thanks,


    Wes

     

  • Hi Wes,

    I'm Diego Dompe, head of embedded software development at RidgeRun.

    TI provides ports of the Linux kernels validated against the official EVMs for the platform, along with DVSDKs (meaning the software stack to use the HW accel codecs or the DSP). Most of that code is open source or royalty free (check the licenses, I'm not a lawyer). TI only provides software for their EVMs, other third-party boards like Leopard or Beagle rely on the community support.

    RidgeRun is third party to TI and creates a product (RidgeRun SDK) that integrates the software components provided by TI into a coherent, structured and proved solution for developing products. You can achieve the same results that the RidgeRun SDK by putting together all the open source components yourself or using other tools like Arago/OE. Depending on your level of Linux expertise may find that is cheaper and easier to just buy a RidgeRun SDK instead of wasting your time focus on your tools instead of creating the value-add of your embedded product.

    RidgeRun specially supports the LeopardBoard and has adapted TI software stack for the LeopardBoard itself (with sponsor from TI). RidgeRun offers an evaluation SDK that allow you to use the RidgeRun software included on the SDK for non-commercial proposes on the LeopardBoard hardware.

    Since RidgeRun SDK uses open source software, these software is ruled by their respective licenses. This means that if you download a RidgeRun SDK for evaluation and you want to use the patches to the kernel that you found there, you are welcome to do so. RidgeRun SDK also includes software that belongs to RidgeRun and is licensed on different terms.

    RidgeRun SDK is a product that you buy with a single upfront payment and have no hidden costs. I wonder where do you get the idea that RidgeRun SDK has any royalty associated with it?

    Hopes it clears a bit the panorama. Let me know if you have any question.

    Regards,

    Diego