This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Some problem of PCIE inbound address translation of C6678

Hello

      We use CPU to access the DSP through the PCIE.The driver code is generated by Windriver 10.20.And we set 2 BAR:BAR0 and BAR1,the size of BAR1 is 32MB.there is several address spaces: core0-core7 L2 SRAM, MSMC,DDR,device registers.

     The access code is like that:

    temp = space base addr;

    WriteDword(m_hPD, BAR0, IB_OFFSET0,temp);    //write new base addr to IB_OFFSET

    for(i=0;i<num_words;i++)

         WriteDword(m_hPD,BAR1,  offset+i*4, *(data+i);   //write data stream to BAR1 memory

    But then we change the addr space frequently,we found that some error will happen in large acount of datas.If we change inbound map each dword of data,there will be about 100 errors in 1MB data. Then we insert a delay between writing  IB_OFFSET and writing datas to memory,the error disappers.

    So can you tell us why it happens?Does DSP need some time to finish the Inbound map configuration?Do we have other way to solve this?If we must delay,then how much time is appropriate?

    Looking forward to your reply,thank you

  • It might be due to the Relaxed Ordering feature enabled in PCIe RC host (CPU), that some writes (data writing) could be completed before the previous write (IB offset write). 

    You can try to locate the Relaxed Ordering related register in RC (such as TLP Configuration register, Device Control register) to disable this feature.

    Or you can try to write to IB_OFFSET first and then add Read-back of this register, before you start the data stream writing.

    In this way, you can make sure the IB_OFFSET register has been configured correctly before writing data to the new region. And hope in this way,  you do not need to guess and trial for the delay timing. 

  • Hello

           Our CPU is running in Windows XP,does it provide any mechnicm to disable Relaxed Ordering feature?If it does,what should I do to accomplish it?Thank you.

  • I am not sure if you have the control of PCIe configuration in WinXP. In this case, you may try the second option (adding read-back) to see if it is working for your case.

  • Thank you very much.The cause of the error is just the same as what you tell,We have solved this problem,now we can access and load the C6678 by PCIE without any error and block.

  • Dear Mr. Wang,

    we want to use the TMDSEVM6678LE with the AMC-PCIe Adapter for education and research at our university.

    Did I understand it correctly? You have build a driver fpr Windows for this DSP card? If yes, I would be very, very grateful, if you can share your experience or code with us.

    I hope to get an answer from you.

    Best Regards,

    Jörg Thiem

  • Hello there
    i am working on C6657 PCIe and windows 7. i want to use Widriver generated code from PC side as a root complex and DSP as Endpoint. can you help me specially how to use Windrive generated code as a root complex. i am new to PCIe interfacing thing and i really need your help .please.

    best regard,
    Rediet