• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Digital Signal Processors (DSP) » DaVinci™ Video Processors » DM816x, C6A816x and AM389x Processors Forum » Syslink and Video Firmware Conflict
Share
DaVinci™ Video Processors
  • Forums
  • Announcements
Options
  • Subscribe via RSS

Syslink and Video Firmware Conflict

Syslink and Video Firmware Conflict

This question is answered
Ben9619
Posted by Ben9619
on Aug 08 2012 09:29 AM
Intellectual280 points

I am trying to setup a simple shared memory space between the DSP and ARM to pass video frames from the DSP over to the ARM for display.

So far I have been able to create an application that can either run the shared memory space OR run the video displays. According to the DM816x EZ Software Developer's Guide, the syslink examples cannot be run at the same time as the video firmware. Is there a guide somewhere as to what changes are necessary to allow both Syslink and the video firmware to operate concurrently?

Thanks in advance.

syslink VPSS Memory Map Video
Report Abuse
  • Reply
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
All Replies
  • Ben9619
    Posted by Ben9619
    on Aug 13 2012 07:50 AM
    Intellectual280 points

    I am still running into issues with running this program. I modified my DSP platform as follows to match up with the prescribed EzSDK memory map but my program still crashes when video firmware is loaded. In searching the forum it seems the memory config for firmware_loader also needs to be modified? Is that the only other place where changes need to be made to run video firmware and the DSP? If not what other components need to be updated?


    metaonly module Platform inherits xdc.platform.IPlatform
    {
        config ti.platforms.generic.Platform.Instance plat =
            ti.platforms.generic.Platform.create("plat",
            {
                clockRate:      800.0,
                catalogName:    "ti.catalog.c6000",
                deviceName:     "TMS320TI816X",
                
                externalMemoryMap:
                [
                    ["EXT_RAM",
                        {
                            name: "EXT_RAM",
                            base: 0x80000000,
                            len: 0x0A600000,
                            space: "code/data",
                            access: "RWX"
                        }
                    ],
                    ["DDR2",
                        {
                            name: "DDR2",
                            //base: 0x8B000000,
                            //len: 0x01F00000,
                            base: 0x99500000,
                            len: 0x00C00000,
                            space: "code/data",
                            access: "RWX"
                        }
                    ],
                    /*["HOST_DSP_NOTIFYMEM",
                        {
                            name: "HOST_DSP_NOTIFYMEM",
                            base: 0x8CF00000,
                            len: 0x00100000,
                            //base: 0x98000000,
                            //len: 0x01400000,
                            space: "code/data",
                            access: "RWX"
                        }
                    ],*/
                    ["SR0",
                        {
                            name: "SR0",
                            //base: 0x8E000000,
                            //len: 0x01000000,
                            base: 0x99400000,
                            len: 0x00100000,
                            space: "code/data",
                            access: "RWX"
                        }
                    ],
                    ["SR1",
                        {
                            name: "SR1",
                            //base: 0x8D000000,
                            //len: 0x00C00000,
                            base: 0x9F700000,
                            len: 0x00200000,
                            space: "code/data",
                            access: "RWX"
                           }
                    ],
                ],
                
                l1DMode:"32k",
                l1PMode:"32k",
                l2Mode:"256k",
            });

    instance :

        override config string codeMemory  = "DDR2";
        override config string dataMemory  = "DDR2";
        override config string stackMemory = "DDR2";
    }

    ezsdk memory map firmware loader
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Lee Holeva
    Posted by Lee Holeva
    on Aug 13 2012 09:09 AM
    Verified Answer
    Verified by Ben9619
    Genius4615 points

    I'm doing much what you're trying to do, with shared memory regions for images using Syslink, and it works fine. I never changed anything concerning the display firmware.  The problem may be the memory space that your app is using, you may have a conflict.  I'm also using the low level fbdev driver to display stuff on the screen.  Here is my Platform.xdc file:

    metaonly module Platform inherits xdc.platform.IPlatform {

        config ti.platforms.generic.Platform.Instance plat =
            ti.platforms.generic.Platform.create("plat", {
                clockRate:      800.0,
            
       catalogName:    "ti.catalog.c6000",
                deviceName:     "TMS320TI816X",
                externalMemoryMap: [
                    ["EXT_RAM",
                        {name: "EXT_RAM",     base: 0x80000000, len: 0x10000000, space: "code/data",access: "RWX"}],
                    ["DDR2",
                        {name: "DDR2",        base: 0x98000000, len: 0x02100000, space: "code/data",access: "RWX"}],
                    ["SR0",
                        {name: "SR0",         base: 0x9F700000, len: 0x00200000, space: "code/data",access: "RWX"}],
      ["SR1",
                        {name: "SR1",         base: 0x9F900000, len: 0x14400000, space: "code/data",access: "RWX"}],
                ],
                l1DMode:"16k",
                l1PMode:"32k",
                l2Mode:"256k",
        });

    instance :

        override config string codeMemory  = "DDR2";
        override config string dataMemory  = "DDR2";
        override config string stackMemory = "DDR2";

    }

    EXT_RAM is Linux ARM memory

    DDR2 is DSP memory

    SR0 and SR1 are shared regions for Syslink

     

    Lee

     

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ben9619
    Posted by Ben9619
    on Aug 13 2012 09:16 AM
    Intellectual280 points

    Thanks Lee, I will try these memory settings.

    Are you using this definition with the 5.04 EzSDK?

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Lee Holeva
    Posted by Lee Holeva
    on Aug 13 2012 09:18 AM
    Genius4615 points

    Ben9619

    Are you using this definition with the 5.04 EzSDK?

    Yes, but I found that I needed to use the xdc and bios libraries from 5.03.  I'm using Syslink and Ipc from 5.04.

     

     

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ben9619
    Posted by Ben9619
    on Aug 13 2012 10:27 AM
    Intellectual280 points

    I made the changes and my app now runs with video firmware loaded, however when I quit the program and clean up I get these errors and have to reset the board in order to run my app again. Is this what drove you to 5.03 on XDC and BIOS?

    VPSS_FVID2: contrl event 0x6 timeout
    ti81xxfb ti81xxfb: failed to stop.
    VPSS_FVID2: contrl event 0x6 timeout
    ti81xxfb ti81xxfb: failed to stop.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Lee Holeva
    Posted by Lee Holeva
    on Aug 13 2012 10:39 AM
    Genius4615 points

    Ben9619

    I made the changes and my app now runs with video firmware loaded, however when I quit the program and clean up I get these errors and have to reset the board in order to run my app again. Is this what drove you to 5.03 on XDC and BIOS?

    No, my code will not build using the 5.04 xdc and bios libraries.  I haven't seen these errors before, I'm guessing that you are not correctly terminating Syslink.

     

    Lee

     

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ben9619
    Posted by Ben9619
    on Aug 15 2012 10:05 AM
    Intellectual280 points

    I changed the area where I was putting my shared buffers to the area above 0x9F900000 and it seems to be behaving.

    Thanks for the help.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • hitesh manwar
    Posted by hitesh manwar
    on Aug 17 2012 06:56 AM
    Intellectual280 points

    hi ben, 

    I am stuck in the similar issue here. Can you tell me, what changes you made in the platform.xdc. I believe you have a stand alone syslink application running, My platform points to the "ti.sdo.ipc.examples.paltforms.evmTI816X.dsp'

    and here is the content of the file:

    metaonly module Platform inherits xdc.platform.IPlatform {

    config ti.platforms.generic.Platform.Instance plat =
    ti.platforms.generic.Platform.create("plat", {
    clockRate: 800.0, 
    catalogName: "ti.catalog.c6000",
    deviceName: "TMS320TI816X",
    externalMemoryMap: [ 
    ["DDR_DSP", {name: "DDR_DSP", base: 0x8C000000, len: 0x02000000, space: "code/data",access: "RWX"}],
    ["DDR_SR0", {name: "DDR_SR0", base: 0x8E000000, len: 0x01000000, space: "code/data",access: "RWX"}],
    ],
    l1DMode:"32k",
    l1PMode:"32k",
    l2Mode:"256k",
    });

    instance :

    override config string codeMemory = "DDR_DSP"; 
    override config string dataMemory = "DDR_DSP"; 
    override config string stackMemory = "DDR_DSP";

    }

    Any help is appreciated.

    Thanks 

    best regards

    hitesh

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ben9619
    Posted by Ben9619
    on Aug 17 2012 12:19 PM
    Intellectual280 points

    Here is the platform definition I used. Make sure you put the items you are passing from DSP to ARM somwhere in the SR1 region. At first I put them in the SR0 region and I got that vpss error I mentioned above.

    metaonly module Platform inherits xdc.platform.IPlatform
    {
        config ti.platforms.generic.Platform.Instance plat =
            ti.platforms.generic.Platform.create("plat",
            {
                clockRate:      800.0,
                catalogName:    "ti.catalog.c6000",
                deviceName:     "TMS320TI816X",
                
                externalMemoryMap:
                [
                    ["EXT_RAM",
                        {
                            name: "EXT_RAM",
                            base: 0x80000000,
                            len: 0x0A600000,
                            space: "code/data",
                            access: "RWX"
                        }
                    ],
                    ["DDR2",
                        {
                            name: "DDR2",
                            base: 0x98000000,
                            len: 0x02100000,
                            space: "code/data",
                            access: "RWX"
                        }
                    ],
                    ["SR0",
                        {
                            name: "SR0",
                            base: 0x9F700000,
                            len: 0x00200000,
                            space: "code/data",
                            access: "RWX"
                         }
                    ],
                    ["SR1",
                        {
                            name: "SR1",
                            base: 0x9F900000,
                            len: 0x00A00000,
                            space: "data",
                            access: "RW"
                         }
                    ],
                ],
                
                l1DMode:"32k",
                l1PMode:"32k",
                l2Mode:"256k",
            });

    instance :

        override config string codeMemory  = "DDR2";
        override config string dataMemory  = "DDR2";
        override config string stackMemory = "DDR2";
    }

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • hitesh manwar
    Posted by hitesh manwar
    on Aug 21 2012 03:27 AM
    Intellectual280 points

    hi ben!

    Thanks a lot, it works fine.. and i am able to run my application now..

    best regards

    hitesh

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
TI E2E™ Community
  • Support Forums
  • Blogs
  • Videos
  • Groups
  • Site Support & Feedback
  • Settings
TI E2E™ Community Groups
  • TI University Program
  • Make the Switch
  • Microcontroller Projects
  • Motor Drive & Control
Other Communities
  • Deyisupport
  • Designsomething.org
  • beagleboard.org
  • TI on Element 14
  • TI on TechXchangeSM
Other Technical & Support Resources
  • WEBENCH® Design Center
  • Product Information Centers
  • Technical Documents
  • TI Design Network
  • TI Technical Articles
  • TI Training

All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
embedded processors, along with software, tools and the industry’s largest sales/support staff.

© Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy Policy | Terms of Use