VPSS Video Driver User Guide

I am having a hard time getting the video input capture and display (using the VPSS Video Driver User Guide) to work. I have not been able to get all the pre-requistoes to work. For example,  there is no ti816x_hdvpss.xem3...I did find the following xem3 files:


Also, there is no slaveloader but I did find slaveloader_release and slaveloader_debug in multiple directories:


and all the modules specified are in multiple locations:







PLEASE help: I have customer demo I have to down by the end of January.....

ALL I need to do is Video Capture from TVP7002 (from a Video Camera) and Display it on the Composite Video and HDMI display.....


  • Hi,

    Please follow following steps to get V4L2 capture + display working on DM8168.

    1. Download all binaries at http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/psp/LinuxPSP/DM816x_04_00/04_00_02_14/index_FDS.html

    2. Flash u-boot from pre-compiled binary.

    3. Remember to set notifyk.vpssm3_sva=0xA0000000 in bootargs.

    4. Load kernel

    5. insmod syslink.ko

    6. ./slaveloader startup VPSS-M3 ti816x_hdvpss.xem3

    7. insmod vpss.ko

    8. insmod ti81xxfb.ko vram=0:40M,1:1M,2:1M

    9. insmod ti81xxvo.ko

    10 insmod tvp7002.ko

    11 insmod ti81xxvin.ko

    12 Set resolution of component in to 1080P60 or 720P60 or 1080P30.

    13 ./saLoopBack.


    Hardik Shah

  • In reply to HardikShah:

    Thanks for your answer but I am a bit confused. I have ti-ezsdk_dm816x-evm_5_03_01_15 on my host machine however, the user guide for the link suggest that a whole new directory will be used to run linux. I am confused becuase I followed DM816x AM389x Video Driver User Guide PSP which seem to reference ti-ezsdk_dm816x-evm_5_03_01_15 from EZSDK but the link references a folder TI816x-LINUX-PSP-MM.mm.pp.bb.

    It looks like you have multiple build environments and paths that work towards the same goals. This is confusing for me because there are tons of information on the wiki pages and they do not seem to be organized properly.

  • In reply to HardikShah:

    Do I put the all the .ko files and slaveloader in my targetfs folder?

  • In reply to Cary Smith90750:

    I flashed the u-boou.noxip.bin and uImage files into the NAND...I get this far then it stops:

    NAND read: device 0 offset 0x280000, size 0x260000
     2490368 bytes read: OK
    ## Booting kernel from Legacy Image at 81000000 ...
       Image Name:   Linux-2.6.37+
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2430828 Bytes = 2.3 MiB
       Load Address: 80008000
       Entry Point:  80008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.
    Linux version 2.6.37+ (x0029463@psplinux050) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 Fri Dec 2 02:27:47 IST 2011
    CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f
    CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine: ti8168evm
    bootconsole [earlycon0] enabled
    vram size = 0 at 0x0
    reserved size = 52428800 at 0x0
    FB: Reserving 52428800 bytes SDRAM for VRAM
    Memory policy: ECC disabled, Data cache writeback
    OMAP chip is TI8168 1.1
    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 52224
    Kernel command line: console=ttyUSB0,115200n8 root=/dev/nfs nfsroot=,nolock rw mem=256M earlyprintk notifyk.vpssm3_sva=0xA
    0000000 vram=0:16M,1:16M,2:16M ip=dhcp
    PID hash table entries: 1024 (order: 0, 4096 bytes)
    Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    Memory: 206MB = 206MB total
    Memory: 203412k/203412k available, 58732k reserved, 0K highmem
    Virtual kernel memory layout:
        vector  : 0xffff0000 - 0xffff1000   (   4 kB)
        fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
        DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
        vmalloc : 0xd0800000 - 0xf8000000   ( 632 MB)
        lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
        pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
        modules : 0xbf000000 - 0xbfe00000   (  14 MB)
          .init : 0xc0008000 - 0xc003a000   ( 200 kB)
          .text : 0xc003a000 - 0xc049d000   (4492 kB)
          .data : 0xc049e000 - 0xc04e59c0   ( 287 kB)
    SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    Total of 128 interrupts on 1 active controller
    GPMC revision 6.0
    Trying to install interrupt handler for IRQ400
    Trying to install interrupt handler for IRQ401
    Trying to install interrupt handler for IRQ402
    Trying to install interrupt handler for IRQ403
    Trying to install interrupt handler for IRQ404
    Trying to install interrupt handler for IRQ405
    Trying to install interrupt handler for IRQ406
    Trying to install type control for IRQ407
    Trying to set irq flags for IRQ407
    OMAP clockevent source: GPTIMER1 at 27000000 Hz
    Console: colour dummy device 80x30
    Calibrating delay loop... 986.31 BogoMIPS (lpj=4931584)
    pid_max: default: 32768 minimum: 301
    Security Framework initialized
    Mount-cache hash table entries: 512
    CPU: Testing write buffer coherency: ok
    devtmpfs: initialized
    omap_voltage_early_init: voltage driver support not added
    regulator: core version 0.5
    regulator: dummy:
    NET: Registered protocol family 16
    omap_voltage_domain_lookup: Voltage driver init not yet happened.Faulting!
    omap_voltage_add_dev: VDD specified does not exist!
    OMAP GPIO hardware version 0.1
    OMAP GPIO hardware version 0.1
    omap_mux_init: Add partition: #1: core, flags: 0
    _omap_mux_get_by_name: Could not find signal i2c2_scl.i2c2_scl
    _omap_mux_get_by_name: Could not find signal i2c2_sda.i2c2_sda
    NOR: Can't request GPMC CS
    registered ti816x_vpss device
    registered ti816x_gpio_vr device
    registered TI816x on-chip HDMI device
    registered ti816x_sr device
    registered ti81xx_vidout device
    pm_dbg_init: only OMAP3 supported
    ti81xx_pcie: Invoking PCI BIOS...
    ti81xx_pcie: Setting up Host Controller...
    ti81xx_pcie: Register base mapped @0xd0820000
    ti81xx_pcie: Starting PCI scan...
    PCI: bus0: Fast back to back transfers enabled
    bio: create slab <bio-0> at 0
    regulator: VFB: 800 <--> 1025 mV at 1010 mV
    vgaarb: loaded
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    registerd cppi-dma Intr @ IRQ 17
    Cppi41 Init Done
    omap_i2c omap_i2c.1: bus 1 rev4.0 at 100 kHz
    omap_i2c omap_i2c.2: bus 2 rev4.0 at 100 kHz
    Advanced Linux Sound Architecture Driver Version 1.0.23.
    Switching to clocksource gp timer
    musb-hdrc: version 6.0, host, debug=0
    musb-hdrc musb-hdrc.0: dma type: dma-cppi41
    musb-hdrc: kernel must blacklist external hubs
    musb-hdrc musb-hdrc.0: MUSB HDRC host driver
    musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
    usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    usb usb1: Product: MUSB HDRC host driver
    usb usb1: Manufacturer: Linux 2.6.37+ musb-hcd
    usb usb1: SerialNumber: musb-hdrc.0
    hub 1-0:1.0: USB hub found
    /�/��Hc����K�V���!����.�օ2M%b%N IK�I)��*b)W�-���Ms��&Hz/L/��/2�+�9(�K�6��V0��4ȃ��`�����.�� -�H�+#��%h�H�� �*r4h���K��+�?{,-:���+�ʥ4�/��* IK�I�

  • In reply to Cary Smith90750:


    Yes you have to copy .kos and .xem3s to your target fs. Regarding kernel dump, can you please try uart console instead of usb console and try to load all .kos and binaries.


    Hardik Shah

  • In reply to HardikShah:


      my development laptop does not a serial port so I have to use a usb to serial converter. However, I dont see how that would affect the kernel on the target since the usb to serial converter is on the host machine and works fine. Here are my environment variables

    loadbootscript=fatload mmc 1 ${script_addr} boot.scr
    bootscript= echo Running bootscript from MMC/SD to set the ENV...; source ${script_addr}
    ethact=DaVinci EMAC
    bootcmd=nand read 0x81000000 0x280000 0x260000;bootm 0x81000000
    bootargs=console=ttyUSB0,115200n8 root=/dev/nfs nfsroot=,nolock rw mem=256M earlyprintk notifyk.vpssm3_sva=0xA0000000 vram
    =0:16M,1:16M,2:16M ip=dhcp
    ver=U-Boot 2010.06 (Dec 02 2011 - 02:13:03)


    I used u-boot.noxip.bin and uImage for the kernel Image of course. These were the image files included in the TI816X-LINUX-PSP-

    Do you have a tutorial: Getting the DM816x Eval board with all the peripherals up and running for DUMMIES

  • In reply to Cary Smith90750:


    Can you please use your USB to serial converted to first solve the problem of kernel booting. You need to change bootargs=console=ttyUSB0ttyO2,115200n8 root=/dev/nfs nfsroot=,nolock rw mem=256M earlyprintk notifyk.vpssm3_sva=0xA0000000 vram
    =0:16M,1:16M,2:16M ip=dhcp  Once console boots up we can review further for getting all peripherals up.


    Hardik Shah

  • In reply to HardikShah:


       I am able to boot the EVM using the images thats come with the ti-ezsdk_dm816x-evm_5_03_01_15 but I had to make a change to the bootargs you recommended. I changed notifyk.vpssm3_sva=0xA0000000 to notifyk.vpssm3_sva=0xBF900000 becuase I was getting the following error:

    notify_shm_drv_sendevent failed! status = 0xfffffff0

    notify_send_event failed! status = 0xfffffff0

    I also, had to reload the uboot and kernel images into the nand.

    The problem now is: when I try to insert the .ko files I get the error messages below:

    root@dm816x-evm:~/dm816x-evm/ndi-rs# insmod syslink.ko
    syslink: version magic '2.6.37+ mod_unload modversions ARMv7 p2v8 ' should be '2.6.37 mod_unload modversions ARMv7 '
    insmod: error inserting 'syslink.ko': -1 Invalid module format
    root@dm816x-evm:~/dm816x-evm/ndi-rs# ./slaveloader VPSS-M3 ti816x_hdvpss.xem3
    -sh: ./slaveloader: Permission denied
    root@dm816x-evm:~/dm816x-evm/ndi-rs# insmod vpss.ko
    vpss: version magic '2.6.37+ mod_unload modversions ARMv7 p2v8 ' should be '2.6.37 mod_unload modversions ARMv7 '
    insmod: error inserting 'vpss.ko': -1 Invalid module format

    You should note that a made a folder ndi-rs in the dm816x-evm folder of the targetfs file system and that is where all the binaries and slaveloader are found.

    I noticed that when I run lsmod some of the binaries already seem to be loaded:

    root@dm816x-evm:~/dm816x-evm/ndi-rs# lsmod
    Module                  Size  Used by
    bufferclass_ti          4946  0
    omaplfb                10794  0
    pvrsrvkm              155450  2 bufferclass_ti,omaplfb
    ti81xxhdmi             14478  0
    ti81xxfb               21771  3
    vpss                   72346  3 omaplfb,ti81xxhdmi,ti81xxfb
    syslink              1113011  0
    ipv6                  209855  12

  • In reply to Cary Smith90750:

    I haven't tried to go through these specific steps, but just from experience it appears that kernel and the modules you are trying to load are mismatched.  Did you happen to load these from the same SDK as prebuilt binaries?  If so, one would 'think' that they should work together.

  • In reply to jaydubya:


    this error typically comes when you insert a module which is compiled with the different kernel configuration than the uImage. Can you with the default uImage?


    Brijesh Jadav