• 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 » C64x Multicore DSP Forum » C6474 if i want to update buffer values after EDMA transfer completion ,and how can i do
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

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

      Posted 5 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 18 days ago
      by tscheck
      Have you been thinking about ordering a TI Keystone-based EVM...
    • $core_v2_blog.Current.Name

      Imagine the impact…TI’s KeyStone SoC + HP Moonshot

      Posted 29 days ago
      by Sanjay35057
      Last week, market leader Hewlett Packard announced a huge change...

    Forums

    C6474 if i want to update buffer values after EDMA transfer completion ,and how can i do

    This question is not answered
    zhengwen zhang
    Posted by zhengwen zhang
    on Dec 09 2009 08:02 AM
    Prodigy105 points

    Hi, I am studying EVM6474.the board consist of AIF, EDMA,FSync.

    i  have enable AIF, initialize the transmiss buffer and receive buffer, then configuration EDMA(event-trigger,not manually-trigger),  AIF, Interrupt, fsync, and setup timer for UMTS fsync.

     After EDMA transfer completion once, i want to update buffer values and start transfer again.how can i do?

    thanks.

     

    C6474
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • RandyP
      Posted by RandyP
      on Dec 09 2009 22:59 PM
      Guru59970 points

      Fill a second PARAM set with the updated buffer values for the next transfer. In the LINK field of the original/active event-triggered DMA channel's PARAM set, put the bottom 16 bits of the address of the second PARAM set.

      When the original transfer has completed, the link operation will occur and will copy the 8 words from the second PARAM set to the active PARAM set. This will leave the DMA channel ready for the next event with the new, updated buffer values.

      Search for answers, Ask a question, click  Verify  when complete, Help others, Learn more.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • zhengwen zhang
      Posted by zhengwen zhang
      on Dec 10 2009 04:03 AM
      Prodigy105 points

      My EDMA is triggered by fsync event continuously. I just want to update buffer values not buffer address when everytime the transfer is completed.

      I have known that I should fill a second PARAM set with the updated buffer values for the next transfer.

      When the original transfer has completed, the link operation will occur and will copy the 8 words from the second PARAM set to the active PARAM set.

      But I want to know that the whether the second  PARAM set is filled  next to the  original/active event-triggered DMA channel's PARAM set or filled after original transfer completion?

      you know, my fsync module is connected to the timer and the fsync event is continuous, after the original transfer has completed, the link operation will occur.  when my action of update

      buffer values is occur? I have do some tries, but only the first receive data is correct, the other times the received data is still the first transfered data. In other words , my updated data is

      not reloaded to the buffer.

      how can i do? and what sequences should i do?for example , start /stop timer, start/stop event,update buffer values...

      thanks,specially for RandyP!

       

       

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • RandyP
      Posted by RandyP
      on Dec 10 2009 08:41 AM
      Guru59970 points

      zhengwen zhang

      When the original transfer has completed, the link operation will occur and will copy the 8 words from the second PARAM set to the active PARAM set.

      But I want to know that the whether the second  PARAM set is filled  next to the  original/active event-triggered DMA channel's PARAM set or filled after original transfer completion?

      I do not understand "is filled next to", but I think the meaning is clear enough. Before starting the original transfer, the CPU must write to the active PARAM set and to the second PARAM set. When the transfer is triggered by the event, the parameters in the active PARAM set will be used to implement the transfer. When the original transfer has completed, the second PARAM set will be copied into the active PARAM set. Then, the active PARAM is is ready for another event that will use the new parameters copied into the active PARAM set.

      zhengwen zhang

      you know, my fsync module is connected to the timer and the fsync event is continuous, after the original transfer has completed, the link operation will occur.  when my action of update

      buffer values is occur? I have do some tries, but only the first receive data is correct, the other times the received data is still the first transfered data. In other words , my updated data is

      not reloaded to the buffer.

      how can i do? and what sequences should i do?for example , start /stop timer, start/stop event,update buffer values...

      You can observe the active PARAM set within a memory window or a watch window. After the transfer has completed, Address and count values will have changed or will be replaced by the LINK operation, but at least this change will indicate that a transfer has occurred. And you may get an interrupt indicating that the transfer has completed. These observations will help you to kn ow that the EDMA has at least tried to copy data.

      If the EDMA did try to copy data, and still your buffer has the old values, then I can think of some possible problems:

      1. Local L1/L2 addresses cannot be used by the EDMA. 0x00800000 is a local L2 address (cannot be used for EDMA) and 0x11800000 is a global address which can be used for EDMA.
      2. DDR2 memory that is being cached may not be re-read by the CPU even though the EDMA has written new values. The CCS Memory Window has color indicators about the contents of memory being in cache or not.
      3. Some address paths and Transfer Controllers are not compatible. See the SCR Connection Matrix in the datasheet to confirm. This is not likely the problem for the AIF, but something to consider in general.
      4. The AIF is not receiving new data, so the second copy is of the old data in the AIF.

      Since you are using the EVM, I will recommend you try the IACLIB for Interprocessor Communication over the AIF. This will be a useful working example for you to figure out how to configure and use the AIF. You can find information on the IACLIB in the TI Wiki tiexpressdsp.com here .

      Search for answers, Ask a question, click  Verify  when complete, Help others, Learn more.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • zhengwen zhang
      Posted by zhengwen zhang
      on Dec 11 2009 10:21 AM
      Prodigy105 points

       thanks for your patience, RandyP.

      What you say I have understand. In the process of initialize the EDMA, I setup two PARAM set, one is active PARAM set (links to reload PARAM set),the other is reload PARAM set(links to reload PARAM set itself). I set a breakpoint in the ISR of transfer completion, but I find that the two PARAM set's values is "identifier not found: hActiveParam"  and "identifier not found: hReloadParam" showed by watch window. WHY?

      And, my trigger event to EDMA's transfer is event 4 (up-link, carry data from AIF inbound RAM to DSP ULbuffer)and event 5 (down-link, carry data from DSP DLbuffer to AIF outbound RAM), generated by fsync . two events is continuous and periodic, In the ISR of transfer completion, Should I disable the two event  (maybe disable the two event interrupt ?)and then update ULbuffer date and DLbuffer date ,at last, enable these events again? Maybe ,should I must do other things ? if  I need not to do anything about  the two PARAM set  in the ISR?

      At last , i found my received date in ULbuffer are all 0x0000FFFF,only correct in the first time, why ?

      thank you very much again !

      best  wishes...

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • RandyP
      Posted by RandyP
      on Dec 11 2009 12:49 PM
      Guru59970 points

      zhengwen zhang

      I set a breakpoint in the ISR of transfer completion, but I find that the two PARAM set's values is "identifier not found: hActiveParam"  and "identifier not found: hReloadParam" showed by watch window. WHY?

      The identifiers are not found because they are not available in the scope of the ISR. If all you want to do is use them in the watch window, then you just need to move the declarations to global (outside a function) rather than local (within a function).

      zhengwen zhang

      In the ISR of transfer completion, Should I disable the two event  (maybe disable the two event interrupt ?)and then update ULbuffer date and DLbuffer date ,at last, enable these events again? Maybe ,should I must do other things ? if  I need not to do anything about  the two PARAM set  in the ISR?

      Please forgive me for this friendly suggestion: "date" means July 9th for example, and "data" means information in a variable or buffer.

      Normally, you should not disable any events in the ISR. If you have continuous data flow and need to service all the periodic events from fsync, you should not disable these events at any time.

      It is not clear to me what you want to do with the AIF data. For example, what does "update ULbuffer data and DLbuffer data" mean? From guessing, it would appear that you want the AIF inbound RAM to be copied to the DSP ULbuffer by the EDMA, then in the ISR copy that data to another location, and let the EDMA copy the next AIF inbound RAM data to the same DSP ULbuffer as before.

      Please briefly describe how you intend to move the data, and please include the regions of memory the data will be located (L1/L2/DDR2) and the size of the buffers and data transfers.

      Search for answers, Ask a question, click  Verify  when complete, Help others, Learn more.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • zhengwen zhang
      Posted by zhengwen zhang
      on Dec 13 2009 07:03 AM
      Prodigy105 points

      Thank you very much and I am very sorry for my clerical error!

      Now, I will describe to you about what I want to do

      I want to do a project about AIF loopback. I define two array .each array  have 15360 elements. one is for receiving data called ULbuffer[15360], the other is for sending data called DLbuffer[15360]. Both are allocated in SDRAM which origin is 0x80000000 and length is 0x00800000. AIF inbound RAM is for  data received by serdes, and AIF outbound RAM is for data which is going to send by serdes. In the down-link, I want to move datas from DLbuffer[15360] to AIF outbound RAM  by EDMA ,and prepareing  to send them. After loopback , in the up-link , the received data stored in AIF inbound RAM . I want to move datas from AIF inbound RAM to ULbuffer[15360] by EDMA . AIF  inbound RAM 's address is 0xA0400000,and AIF outbound is 0xA2400000. both length is enough. At last, I will decide whether  it is equal in the ISR of transfer completion (aif inbound RAM-->ULbuffer)after compare the values between ULbuffer and DLbuffer.

      I setup two PARAM set (active PARAM set which is link to reload param set , reload PARAM set which is link to reload PARAM set itself )for down-link and two (active PARAM set which link to reload param set , reload PARAM set which is link to reload PARAM set itself )for up-link.

      After compartion in the ISR of transfer completion(aif inbound RAM-->ULbuffer),  no matter whether it is equal, I want to update the DLbuffer[15360],  move them to AIF outbound , and prepareing to send them again. then after loopback, I move data from AIF inbound RAM to ULbuffer, and compare again. just like this , I hope to do the way continuously.

      Question:

      1. In the first time, it is equal after compartion. After update the ULbuffer data when enter into transer completion interrupt , but in the second time ,and more, I find every element is not equal between DLbuffer and ULbuffer. and in the ULbuffer, its value is all 0x0000ffff or 0x0000ff3f.  what's wrong ?

      2. whether should i disable the trigger event before compartion in order to stop EDMA? or how to disable the trigger event?  you know , after transer completion , the active PARAM set will copy contents from reload PARAM set, and wait for another trigger event.  Since the trigger event is continuous generated by frame sync, maybe after enter into ISR of transfer completion, the trigger event can trigger  another EDMA'S transfer , but at this time , my action of update DLbuffer data have not completed.

      3.when and where do my action of update DLbuffer data?

      thank you very much ,Randy.

      best wishes

      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