<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX Processorsのトピックimx7d using dma to transfer eim data</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1076686#M158053</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone&lt;BR /&gt;my development board is IMX7DSABRE. Linux kernel version is 4.9.88.&lt;BR /&gt;When I use dma to transmit EIM data to FPGA on imx7d, when I write data to EIM bus, some problems occur. My EIM bus data width is configured to 16bit, I write 16 bytes of data to the bus each time:&lt;BR /&gt;0x1234 0x1235 0x12346 0x1237 0x1238 0x1239 0x123a 0x123b&lt;BR /&gt;My FPGA can receive these 16 bytes of data, but it also receives an additional 16 bytes of 0 data. The 0 data was received because the EIM bus generated 8 more write signals.&lt;BR /&gt;Normally, according to the configuration of my data line width, when 16 bytes occur, only 8 write signals need to be generated, but actually 16 write signals are generated. The waveform diagram is as follows:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="em4_snapshot_1594192757733.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/114951i9E373E742387F222/image-size/large?v=v2&amp;amp;px=999" role="button" title="em4_snapshot_1594192757733.png" alt="em4_snapshot_1594192757733.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;My dma code configuration is as follows:&lt;BR /&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;BR /&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;BR /&gt;dma_m2m_config.src_maxburst = EIM_WRITE_SIZE/2;&lt;BR /&gt;dma_m2m_config.dst_maxburst = EIM_WRITE_SIZE/2;&lt;BR /&gt;dmaengine_slave_config(dma_m2m_chan, &amp;amp;dma_m2m_config);&lt;BR /&gt;dma_m2m_desc = dma_m2m_chan-&amp;gt;device-&amp;gt;device_prep_dma_memcpy(dma_m2m_chan, dma_dst, dma_src, length, DMA_MEM_TO_MEM);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to know why there are 16 write signals？&lt;/P&gt;&lt;P&gt;At the same time I tried to configure different values for dst_addr_width and src_addr_width, but no matter how I configure it, there will always be redundant write signals. How should I solve this problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At the same time I tried dst_addr_width and src_addr_width to configure different values, such as:&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;But no matter how I configure it, there will always be redundant write signals. How should I solve this problem?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Jul 2020 07:38:36 GMT</pubDate>
    <dc:creator>864535720</dc:creator>
    <dc:date>2020-07-08T07:38:36Z</dc:date>
    <item>
      <title>imx7d using dma to transfer eim data</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1076686#M158053</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone&lt;BR /&gt;my development board is IMX7DSABRE. Linux kernel version is 4.9.88.&lt;BR /&gt;When I use dma to transmit EIM data to FPGA on imx7d, when I write data to EIM bus, some problems occur. My EIM bus data width is configured to 16bit, I write 16 bytes of data to the bus each time:&lt;BR /&gt;0x1234 0x1235 0x12346 0x1237 0x1238 0x1239 0x123a 0x123b&lt;BR /&gt;My FPGA can receive these 16 bytes of data, but it also receives an additional 16 bytes of 0 data. The 0 data was received because the EIM bus generated 8 more write signals.&lt;BR /&gt;Normally, according to the configuration of my data line width, when 16 bytes occur, only 8 write signals need to be generated, but actually 16 write signals are generated. The waveform diagram is as follows:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="em4_snapshot_1594192757733.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/114951i9E373E742387F222/image-size/large?v=v2&amp;amp;px=999" role="button" title="em4_snapshot_1594192757733.png" alt="em4_snapshot_1594192757733.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;My dma code configuration is as follows:&lt;BR /&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;BR /&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;BR /&gt;dma_m2m_config.src_maxburst = EIM_WRITE_SIZE/2;&lt;BR /&gt;dma_m2m_config.dst_maxburst = EIM_WRITE_SIZE/2;&lt;BR /&gt;dmaengine_slave_config(dma_m2m_chan, &amp;amp;dma_m2m_config);&lt;BR /&gt;dma_m2m_desc = dma_m2m_chan-&amp;gt;device-&amp;gt;device_prep_dma_memcpy(dma_m2m_chan, dma_dst, dma_src, length, DMA_MEM_TO_MEM);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to know why there are 16 write signals？&lt;/P&gt;&lt;P&gt;At the same time I tried to configure different values for dst_addr_width and src_addr_width, but no matter how I configure it, there will always be redundant write signals. How should I solve this problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At the same time I tried dst_addr_width and src_addr_width to configure different values, such as:&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dma_m2m_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;&lt;/SPAN&gt;&lt;BR /&gt;But no matter how I configure it, there will always be redundant write signals. How should I solve this problem?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2020 07:38:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1076686#M158053</guid>
      <dc:creator>864535720</dc:creator>
      <dc:date>2020-07-08T07:38:36Z</dc:date>
    </item>
    <item>
      <title>Re: imx7d using dma to transfer eim data</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1076687#M158054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &amp;nbsp;其东 刘&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for eim burst with dma cases may be useful to look at&lt;/P&gt;&lt;P&gt;sect.9.7.5.4 Burst Clock Divisor (BCD), sect.9.7.5.8 AXI (Master) Bus Cycles Support&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.nxp.com/webapp/Download?colCode=IMX7DRM" target="_blank"&gt;&lt;STRONG&gt;i.MX 7Dual Applications Processor Reference Manual&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For example sdma source memory address was aligned according to burst size,&lt;/P&gt;&lt;P&gt;PSZ, BL settings in EIM_CSnGCR1 register. First may be useful to test configuration&lt;/P&gt;&lt;P&gt;with barmetal sdk:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://github.com/RT-Thread/rt-thread/blob/master/bsp/imx6sx/iMX6_Platform_SDK/sdk/drivers/eim/test/eim_test.c" title="https://github.com/RT-Thread/rt-thread/blob/master/bsp/imx6sx/iMX6_Platform_SDK/sdk/drivers/eim/test/eim_test.c"&gt;rt-thread/eim_test.c at master · RT-Thread/rt-thread · GitHub&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;BR /&gt;igor&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2020 11:25:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1076687#M158054</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2020-07-08T11:25:57Z</dc:date>
    </item>
    <item>
      <title>Re: imx7d using dma to transfer eim data</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1612317#M202516</link>
      <description>&lt;P&gt;HI,&amp;nbsp; did you solve the problem, now I have the same problem, could you tell me the solution. my email: nx5216@163.com&lt;/P&gt;</description>
      <pubDate>Thu, 09 Mar 2023 09:26:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx7d-using-dma-to-transfer-eim-data/m-p/1612317#M202516</guid>
      <dc:creator>nx5216</dc:creator>
      <dc:date>2023-03-09T09:26:21Z</dc:date>
    </item>
  </channel>
</rss>

