Hi,
Current design
I have an application and a driver that read and write the words(16 bit) to the FPGA. Implementation is simple, I am simply writing to the address that falls in the WEIM CS0 at addresses that have specific meaning for both the iMX and the FPGA.
Everything is working fine except the throughput. I referenced few previous discussions and it has been attributed to bus latency within the SoC.
I have also been suggested that using Synchronous Burst mode would yield a better throughput.
But I have no idea how to make use of Synchronous Burst Mode from the software programmer's perspective. I can figure out the CS0 configuration registers, that is known to me.
But how do I write code in C for triggering the synchronous burst mode is what I do not know how to get it to work.
Any clues, guidance, suggestions, pointers are very welcome.
Thanks in advance.
PS: ( I know iMX51 is an old device to be used in new designs, but we already have working boards with these, and once this works in concept we would be upgrading to iMX7 based boards)
Just for the sake of anyone trying to do this in the future.
The bus throughput increased significantly by using memcpy() C library function. (I am using Windows CE 7).
Here are the details for my setup
The throughput can be increased further by reducing the WWSC value.
We are working on the Burst mode writes, but not through with it yet and we are expecting a much more increase in throughput based on Yuri and Igor's inputs. We are trying to achieve a throughput of around 350 to 400 Mbps.
Conclusion is, in windows CE 7 the memcpy can help increase your throughput on the WEIM bus, maybe before going into assembly you could give it a try.
Hi Deepak
please look at example provided on
https://community.nxp.com/message/426437?commentID=426437#comment-426437
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
Thanks for directing us to the relevant discussion.
Assuming that I have configured the WEIM CS0 registers properly for Burst Mode access..
Can you please help with following questions?
Thanks
Hi Deepak
yes for generating bursts sdma or arm code using LDM and STM instruction should be used.
Neon also may be used:
;/* void transfer_eight_words_vld(int* dst, const int *src) */
vld1.64 {d0,d1,d2,d3}, [r1]
vst1.64 {d0,d1,d2,d3}, [r0]
Best regards
igor
Thanks a lot Igor, you have been a great help .. Regards