• 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) » MSI interrupt works, but only once.
Share
C6000 Multicore DSP
  • Forums
  • Announcements
Options
  • Subscribe via RSS
Resources
  • KeyStone Multicore DSP + ARM Product Folder
  • Keystone II MCSDK Download
  • Keystone II MCSDK User's Guide

  • KeyStone Multicore DSP Product Folder
  • Keystone I BIOS-MCSDK Download
  • Keystone I BIOS-MCSDK User's Guide

  • Keystone I & II Training

  • C6000 Multicore DSP Product Folder
  • C6000 Multicore Devices

  • DESKTOP-LINUX-SDK 01_00_00_07 Download
  • MCSDK-VIDEO 02_01_00_08 Download

  • C6472 and C6474 Online Training
  • Check out
    Multicore Mix blog
    • $core_v2_blog.Current.Name

      Wireless base stations – why monitor the backup battery?

      Posted 4 days ago
      by Raj Radjassamy
      2G, 3G and 4G LTE base stations use lead-acid batteries as the...
    • $core_v2_blog.Current.Name

      Innovation through smart integration – achieving lower power, high performing small cells

      Posted 5 days ago
      by Debbie Greenstreet
      Wireless small cell market activity is accelerating lately and...
    • $core_v2_blog.Current.Name

      Four for Friday: What’s up at the Small Cells World Summit?

      Posted 19 days ago
      by Debbie Greenstreet
      If you are a follower of the wireless technology, you have probably...

    Forums

    MSI interrupt works, but only once.

    This question is answered
    Mark Swick
    Posted by Mark Swick
    on Apr 10 2012 16:03 PM
    Intellectual560 points

     I have generated MSI interrupts across the PCIe interface and by calling PCIeTestMsiIrq from within clk0Fxn. Both work but only the first time sending more MSI interrupts across the interface does not result in the interrupt.

    7028.PCIe_test1.zip

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • Steven Ji
      Posted by Steven Ji
      on Apr 12 2012 11:28 AM
      Expert8905 points

      Mark,

      To re-trigger the same interrupt may involve several modules, such as CPU interrupt controller, chip level interrupt controller and PCIe module itself.

      I assume you already take care of the interrupt controller for CPU and chip level to clear the flag of that interrupt and it could be re-triggered.

      For PCIe itself, we need to clear the status of that MSI vector and write indication to IRQ_EOI register.

      For example, if we want to re-trigger MSI_0, after the first time of interrupt, in the ISR, we should

      • write 0x1 to MSI0_IRQ_STATUS (offset 0x104) to clear the status of MSI_0 and
      • write 0x4 to IRQ_EOI (offset 0x50) to indicate the end of interrupt of MSI vector 0(8,16,24)

      Then we should be able to re-trigger the MSI_0 after exiting the ISR.

      Please note that in the current PCIe user guide, there is one typo in MSIx_IRQ_STATUS register that saying writing 0 to clear the status, but it should be writing 1 to clear. This typo will be corrected in the next release.

      Please let us know if it is working for you. Thanks.

      Sincerely,

      Steven

      Sincerely,

      Steven

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

      Please click the Verify Answer button on this post if it answers your question.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Mark Swick
      Posted by Mark Swick
      on Apr 13 2012 06:46 AM
      Intellectual560 points

      You metioned I need to 0x4 to the IRQ_EOI register for MSI operation where is this documented and what do I write for the other MSI interrupt groups (1,9,17,25...7,15,23,31))?

       I did not see this in the sprug6a document. I did try it however and it worked tahks alot.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Steven Ji
      Posted by Steven Ji
      on Apr 13 2012 10:14 AM
      Verified Answer
      Verified by Mark Swick
      Expert8905 points

      Mark,

      Section 1.4.5 in PCIe user guide mentioned that the user software needs to write to EOI register  (IRQ_EOI) to notify the end of interrupt.

      And in the IRQ_EOI register description, it mentioned that the vector written to the register should be referred in the interrupt event table, which is Table 2-10.

      So if you want to use it for other MSI interrupts, you can refer to this table, such as write 5 for (1,9,17,25) and 11 for (7,15,23,31).

      Hope it helps.

      Sincerely,

      Steven

      Sincerely,

      Steven

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

      Please click the Verify Answer button on this post if it answers your question.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Mark Swick
      Posted by Mark Swick
      on Apr 16 2012 07:32 AM
      Intellectual560 points

      Yes it does thank you very much. I never made the connection between tis table and the EOI operation.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Raya Ngu
      Posted by Raya Ngu
      on Apr 17 2012 08:21 AM
      Prodigy10 points

      Hi,

      could you please let me see your datasheep.

      I am working on Implementing a driver for PCIe but I haven't yet understood how MSI can be implemented

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Steven Ji
      Posted by Steven Ji
      on Apr 18 2012 10:38 AM
      Expert8905 points

      Raya,

      The PCIe user guide talks about the MSI interrupt for PCIe and the C6678 data manual has the interrupt event table for all the interrupts.

      Basically the MSI should be enabled first in C66x and then the remote device could write to the MSI_IRQ register in the C66x PCIe module to generate the MSI interrupt in the C66x device. The interrupt is connected to the DSP CorePac interrupt controller directly. The interrupt status can be cleared by writing to MSIn_IRQ_STATUS and IRQ_EOI registers.

      Sincerely,

      Steven

      Sincerely,

      Steven

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

      Please click the Verify Answer button on this post if it answers your question.

      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