• 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) » C6000 Multicore DSP » Keystone Multicore Forum (C66, 66A, AM5) » Reset c6678 when used as PCIe EP
Share
C6000 Multicore DSP
  • Forums
  • Announcements
Options
  • Subscribe via RSS
Training Available
TI provides self-paced online training that introduces the primary components of the KeyStone II family of SoC devices.

  • KeyStone II SoC Overview >
  • KeyStone II Software Overview >
  • KeyStone II ARM Cortex-A15 Corepac Overview >
  • More Information >
  • Check out
    Multicore Mix blog
    • $core_v2_blog.Current.Name

      A look back: Two years of Multicore Mix

      Posted 3 hours ago
      by Lauren Reed1
      A big thank you to everyone who participated in our contest last...
    • $core_v2_blog.Current.Name

      It’s our second anniversary, but you get the present!

      Posted 7 days ago
      by Lindsey Bare
      It’s hard to believe it’s already been two years...
    • $core_v2_blog.Current.Name

      Limited time offer: Save $100 on Keystone-based EVM!

      Posted 19 days ago
      by tscheck
      Have you been thinking about ordering a TI Keystone-based EVM...

    Forums

    Reset c6678 when used as PCIe EP

    This question is not answered
    Joel Keller
    Posted by Joel Keller
    on Apr 03 2012 11:17 AM
    Expert1150 points

    Hi,

    In our board design, the c6678 DSP acts as a 'number-crunching' pcie peripheral controlled by a TI DM8148 SOC RC running linux.  PCIe memory mapping and pcie-based booting are working fine for me.  Occasionally, however I need to 'restart/reload' the DSP.  Basically I either need to run different firmware, reload the PCIe driver, or perhaps the device has gotten itself in to a bad state, and needs to be reset.  I'm trying to figure out the best way of doing this.  I have written device drivers for other hw, and i have always had a register that I could write to tell the device to reset itself.  I'm looking for that, but running in to some problems.

    Initially I tried doing a soft-reset by writing the necessary registers in the PLL controller via PCIe.  Like others have found out, this doesn't work until you set the MST_PRIV bit in the PRIORITY register.  When I do that, I can successfully initiate a soft-reset.  The problem is that even if I wait for a long time, something seems to have gone wrong on the PCIe bus.  The DSP reruns the I2C IBL, but it gets stuck at the PCIeWorkaround bit, and never starts polling the MAGIC address again.  Also, on the host (DM8148), something has gone wrong, as running lspci -vv reveals:

    00:00.0 Class 0604: Device 104c:8888 (rev ff) (prog-if ff)
    !!! Unknown header type 7f
    root@dm816x-evm:/# ./lspci -vv
    00:00.0 Class 0604: Device 104c:8888 (rev ff) (prog-if ff)
    !!! Unknown header type 7f

    01:00.0 Class 0480: Device 104c:b005 (rev ff) (prog-if ff)
    !!! Unknown header type 7f
    Kernel driver in use: mio_vpu_pcie_driver
    
    
    Before the 'reset', lspci -vv shows me all the normal PCI header information, BAR sizes, etc...  If i try to load my driver and do a read/write to the device, I get a external abort...
    
    
    Questions:
    
    
    1) Does anyone know what is going wrong here, and how I can make this work?
    
    
    2)  Is there a better way of doing the 'reset' of the device from the RC?
    
    
    
    
    Thanks,
    
    
    Joel
    C6678 PCIe 6678 PCI Express PCIe
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • Joel Keller
      Posted by Joel Keller
      on Apr 16 2012 12:52 PM
      Expert1150 points

      <<What is the difference between all of those memory regions? I'm pretty sure the app registers is for changing board registers (and thus configuration). Local L2...that's memory that is specific to a core? MSMC....don't know what that is, but comments seem to indicate "shared L2". So, L2 memory all cores can access? and DDR....also seems shared. So what's the difference then between MSMC and DDR?

      >>

      Yes, the application registers (regVirt), are the DSP's PCIE peripheral application registers.  They allow 'remote' configuration of the DSP's PCIE subsystem.  Local L2 is memory specific to each core (can be configured to act as cache or internal ram).  MSMC is just a section of shared memory, which is faster than DDR to access.

      <<

      2) So, in the code executing on the core itself (say, core 4), then for me to access DDR, I'd just read/write to address 0x80000000? So in theory, if I use core 4 to write 0xFAFAFAFA to 0x80000000, and then use the Linux driver to read from ddrVirt + 0, I should get that value? Seems like something worth trying... Thanks for the help. I knew I was close, but had mental hurdles to get over.

      >>

      Yes, that will work.  Make sure that your DSP program is not using that section of DDR for anything else (check where the linker is placing your program sections).

      -Joel

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Rob G.
      Posted by Rob G.
      on Apr 16 2012 15:14 PM
      Intellectual390 points
      Great, thanks Joel. I now have rudimentary communication back and forth, which for my purposes is all I need.
      ==============================================================
      TMSC320C6678 with Blackhawk XDS560v2 USB mezzanine on a TMDXEVMPCI, openSuse 12.1
      DM8168x/C6A816x/AM389x Evaluation Module (TMDXEVM8168)
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    12
    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