<?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>topic Strange problem with multiple frame buffer in i.MX RT Crossover MCUs</title>
    <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1242381#M13082</link>
    <description>&lt;P&gt;We are using the MCUXpresso IDE (V 11.2., SDK 2.8.2, emwin library 6.1) for an IMXRT1062 project (Embedded Artists iMX RT1062 OEM IT module).&lt;/P&gt;&lt;P&gt;When using multiple frame buffers for the display driver, the program abort sometimes the normal processing and runs only in the this routine (in core_cm7.h) which cleans the buffer cache. This could happen after seconds up to many minutes after program start.&lt;/P&gt;&lt;P&gt;With a single frame buffer the program runs fine, but there are some disturbance in the display.&lt;/P&gt;&lt;P&gt;/**&lt;BR /&gt;\brief Clean &amp;amp; Invalidate D-Cache&lt;BR /&gt;\details Cleans and Invalidates D-Cache&lt;BR /&gt;*/&lt;BR /&gt;__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void)&lt;BR /&gt;{&lt;BR /&gt;#if defined (__DCACHE_PRESENT) &amp;amp;&amp;amp; (__DCACHE_PRESENT == 1U)&lt;BR /&gt;uint32_t ccsidr;&lt;BR /&gt;uint32_t sets;&lt;BR /&gt;uint32_t ways;&lt;/P&gt;&lt;P&gt;SCB-&amp;gt;CSSELR = 0U; /* select Level 1 data cache */&lt;BR /&gt;__DSB();&lt;/P&gt;&lt;P&gt;ccsidr = SCB-&amp;gt;CCSIDR;&lt;/P&gt;&lt;P&gt;/* clean &amp;amp; invalidate D-Cache */&lt;BR /&gt;sets = (uint32_t)(CCSIDR_SETS(ccsidr));&lt;BR /&gt;do {&lt;BR /&gt;ways = (uint32_t)(CCSIDR_WAYS(ccsidr));&lt;BR /&gt;do {&lt;BR /&gt;SCB-&amp;gt;DCCISW = (((sets &amp;lt;&amp;lt; SCB_DCCISW_SET_Pos) &amp;amp; SCB_DCCISW_SET_Msk) |&lt;BR /&gt;((ways &amp;lt;&amp;lt; SCB_DCCISW_WAY_Pos) &amp;amp; SCB_DCCISW_WAY_Msk) );&lt;BR /&gt;#if defined ( __CC_ARM )&lt;BR /&gt;__schedule_barrier();&lt;BR /&gt;#endif&lt;BR /&gt;} while (ways-- != 0U);&lt;BR /&gt;} while(sets-- != 0U);&lt;/P&gt;&lt;P&gt;__DSB();&lt;BR /&gt;__ISB();&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;The frame buffer is located in the SDRAM:&lt;/P&gt;&lt;P&gt;Memory region Used Size Region Size %age Used&lt;BR /&gt;BOARD_FLASH: 480560 B 4 MB 11.46%&lt;BR /&gt;BOARD_SDRAM: 5603656 B 30 MB 17.81%&lt;BR /&gt;NCACHE_REGION: 16440 B 2 MB 0.78%&lt;BR /&gt;SRAM_DTC: 0 GB 128 KB 0.00%&lt;BR /&gt;SRAM_ITC: 0 GB 128 KB 0.00%&lt;BR /&gt;SRAM_OC: 0 GB 768 KB 0.00%&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best regards,&lt;/P&gt;&lt;P&gt;Reiner&lt;/P&gt;</description>
    <pubDate>Tue, 09 Mar 2021 09:05:39 GMT</pubDate>
    <dc:creator>mail10</dc:creator>
    <dc:date>2021-03-09T09:05:39Z</dc:date>
    <item>
      <title>Strange problem with multiple frame buffer</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1242381#M13082</link>
      <description>&lt;P&gt;We are using the MCUXpresso IDE (V 11.2., SDK 2.8.2, emwin library 6.1) for an IMXRT1062 project (Embedded Artists iMX RT1062 OEM IT module).&lt;/P&gt;&lt;P&gt;When using multiple frame buffers for the display driver, the program abort sometimes the normal processing and runs only in the this routine (in core_cm7.h) which cleans the buffer cache. This could happen after seconds up to many minutes after program start.&lt;/P&gt;&lt;P&gt;With a single frame buffer the program runs fine, but there are some disturbance in the display.&lt;/P&gt;&lt;P&gt;/**&lt;BR /&gt;\brief Clean &amp;amp; Invalidate D-Cache&lt;BR /&gt;\details Cleans and Invalidates D-Cache&lt;BR /&gt;*/&lt;BR /&gt;__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void)&lt;BR /&gt;{&lt;BR /&gt;#if defined (__DCACHE_PRESENT) &amp;amp;&amp;amp; (__DCACHE_PRESENT == 1U)&lt;BR /&gt;uint32_t ccsidr;&lt;BR /&gt;uint32_t sets;&lt;BR /&gt;uint32_t ways;&lt;/P&gt;&lt;P&gt;SCB-&amp;gt;CSSELR = 0U; /* select Level 1 data cache */&lt;BR /&gt;__DSB();&lt;/P&gt;&lt;P&gt;ccsidr = SCB-&amp;gt;CCSIDR;&lt;/P&gt;&lt;P&gt;/* clean &amp;amp; invalidate D-Cache */&lt;BR /&gt;sets = (uint32_t)(CCSIDR_SETS(ccsidr));&lt;BR /&gt;do {&lt;BR /&gt;ways = (uint32_t)(CCSIDR_WAYS(ccsidr));&lt;BR /&gt;do {&lt;BR /&gt;SCB-&amp;gt;DCCISW = (((sets &amp;lt;&amp;lt; SCB_DCCISW_SET_Pos) &amp;amp; SCB_DCCISW_SET_Msk) |&lt;BR /&gt;((ways &amp;lt;&amp;lt; SCB_DCCISW_WAY_Pos) &amp;amp; SCB_DCCISW_WAY_Msk) );&lt;BR /&gt;#if defined ( __CC_ARM )&lt;BR /&gt;__schedule_barrier();&lt;BR /&gt;#endif&lt;BR /&gt;} while (ways-- != 0U);&lt;BR /&gt;} while(sets-- != 0U);&lt;/P&gt;&lt;P&gt;__DSB();&lt;BR /&gt;__ISB();&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;The frame buffer is located in the SDRAM:&lt;/P&gt;&lt;P&gt;Memory region Used Size Region Size %age Used&lt;BR /&gt;BOARD_FLASH: 480560 B 4 MB 11.46%&lt;BR /&gt;BOARD_SDRAM: 5603656 B 30 MB 17.81%&lt;BR /&gt;NCACHE_REGION: 16440 B 2 MB 0.78%&lt;BR /&gt;SRAM_DTC: 0 GB 128 KB 0.00%&lt;BR /&gt;SRAM_ITC: 0 GB 128 KB 0.00%&lt;BR /&gt;SRAM_OC: 0 GB 768 KB 0.00%&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best regards,&lt;/P&gt;&lt;P&gt;Reiner&lt;/P&gt;</description>
      <pubDate>Tue, 09 Mar 2021 09:05:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1242381#M13082</guid>
      <dc:creator>mail10</dc:creator>
      <dc:date>2021-03-09T09:05:39Z</dc:date>
    </item>
    <item>
      <title>Re: Strange problem with multiple frame buffer</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1244331#M13157</link>
      <description>&lt;P&gt;Hi Reiner,&lt;/P&gt;
&lt;P&gt;We have identified some issues when placing buffers in a cacheable region like OCRAM or SDRAM. To use SDRAM for this you will need to split a non-cacheable region to place the buffers.&lt;/P&gt;
&lt;P&gt;Please check the below community document written by a colleague that explains this behavior in detail.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/Using-NonCached-Memory-on-i-MXRT/ta-p/1183369" target="_blank"&gt;Using NonCached Memory on i.MXRT - NXP Community&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Felipe&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;Note:&lt;/P&gt;
&lt;P&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;
&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored. Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;/P&gt;
&lt;P&gt;------------------------------------------------------------------------------&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Mar 2021 18:44:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1244331#M13157</guid>
      <dc:creator>FelipeGarcia</dc:creator>
      <dc:date>2021-03-11T18:44:22Z</dc:date>
    </item>
    <item>
      <title>Re: Strange problem with multiple frame buffer</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1246492#M13259</link>
      <description>&lt;P&gt;Thank you, now the program is running fine.&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Reiner&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 14:33:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Strange-problem-with-multiple-frame-buffer/m-p/1246492#M13259</guid>
      <dc:creator>mail10</dc:creator>
      <dc:date>2021-03-16T14:33:03Z</dc:date>
    </item>
  </channel>
</rss>

