MPC5644 Multi-Layer AHB Crossbar Switch (XBAR) setting

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MPC5644 Multi-Layer AHB Crossbar Switch (XBAR) setting

1,251 Views
miroslav_pesta
Contributor I

Hello

We have in project some issue with DMA and EQADC, first i describe situation:

We are cyclicaly reading one ADC queue of channels (command fifo…), conversion is triggered by EMIOS timer and commands and results are transfered to and from ADC via DMA. Results are saved in cyclical buffer in RAM with 100 samples per channel stored (for some filterin purpouses…).

Now the problem is that in some situations, it looks like one or two channels are skiped during saving results, so value from channel 6 ends up in place of channel 5, ch. 5 in place of ch. 4 etc.

Situations where this happend are with heavy trafic on internal bus (complicated rewriting of some big structures in RAM, stress tests when cache is cyclicaly invalidated…) so i belive it is caused by some prioritization on internal bus.

Originaly we had following setting of XBAR (for slaves RAM and PBRIDGE):

E200z4 (Instruction) M0 : 0

E200z4 (Data/Nexus) M1 : 1

eDMA M4 : 2

When i set DMA to be highest priority and shift acordingly priorities of core (instructions and data..) it solved our problem.

 

Now, my question is: Is this new setting OK for HW? Can there be some unexpected consequences of this setting?

Thanks for your help

0 Kudos
3 Replies

909 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

Hi, EQADC result swap may have different reason. See following document, I have prepared:
https://community.nxp.com/docs/DOC-329779 

One yet note that result swap can also be caused by abort feature (ICEAn=1) - I can give you further details if needed.

0 Kudos

909 Views
miroslav_pesta
Contributor I

Hello

In our problematic case, in the command queue only ADC0 is used and we have ICEAn set to 0. Also, when i reconfigured the XBAR priorities, problem is gone.

Additionaly, situations when this issue will happen are wery bus usage heavy - cyclic invalidation of chache cause lot of data reading, the rewriting of complicated datastructures also need bus a lot (and i think it is not much optimized, unfortunately that is out of my hands).

Overall it realy looks like bus prioriti problem (espetialy because priority change fix it) so my main concern is, if this new setting of bus priorities can cause some other issues I can´t think of.

Again, thanks for your help.

0 Kudos

909 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

That's interesting. Having highest for DMA is correct configuration of XBAR, typically it is being configured this way. But I am not sure if this can cause result swap. Actually in your case apparently it is not swap, but loosing of some data.

It would be nice to eQADC registers in the error situation whether underflow/overflow does not happen. If yes, you are right and the issue can be solved by proper XBAR priority setting.

0 Kudos