<?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 Re: Understanding UPM burst mode in Other NXP Products</title>
    <link>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211099#M2365</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;It seems that my basic assumption is wrong.&lt;BR /&gt;&lt;BR /&gt;The 8536 ref manual is talking about an 'internal&lt;BR /&gt;master ... requests burst reads'. I thought that&lt;BR /&gt;the DMA controller is such an internal master&lt;BR /&gt;capable to make a burst read from local bus to&lt;BR /&gt;system memory. But this seems wrong, yes?&lt;BR /&gt;&lt;BR /&gt;The only reason for me looking at the UPM and&lt;BR /&gt;not taking the GPCM was to avoid address/data&lt;BR /&gt;multiplexing. I thought I can double the speed&lt;BR /&gt;via burst reads. E.g. on a 133 MHz local bus&lt;BR /&gt;the GPCM will be restricted to 66 MHz data&lt;BR /&gt;transfer rate but I thought I can come close&lt;BR /&gt;to 133 MHz reading large data segments via UPM&lt;BR /&gt;burst from the local bus.&lt;BR /&gt;&lt;BR /&gt;Wolfgang R.&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 Sep 2009 00:00:07 GMT</pubDate>
    <dc:creator>wrostek</dc:creator>
    <dc:date>2009-09-14T00:00:07Z</dc:date>
    <item>
      <title>Understanding UPM burst mode</title>
      <link>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211096#M2362</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi PPC specialists&lt;BR /&gt;&lt;BR /&gt;I'm on the way trying to understand the LBC UPM machine&lt;BR /&gt;of my MPC8536. After some time reading and testing I'm&lt;BR /&gt;still struggling with my first tests.&lt;BR /&gt;&lt;BR /&gt;What I'm trying to achieve is reading as fast as possible&lt;BR /&gt;data blocks from the local bus to e.g. SATA disk. The burst&lt;BR /&gt;mode of the UPM seems to be suitable as it avoids an address/&lt;BR /&gt;data multiplexing for each read.&lt;BR /&gt;&lt;BR /&gt;For initial tests I hooked into u-boot code to see what's&lt;BR /&gt;going on. To verify my program I use an oscilloscope and&lt;BR /&gt;look at LCLK, LALE and LCS1.&lt;BR /&gt;&lt;BR /&gt;Here the extracted code setting up the LBC&lt;BR /&gt;&lt;PRE&gt;
...
const uint sdram_table[] =
{
        /*  single read. (offset 0 in upm RAM) */
        0x1F07D004, 0xEEAEE004, 0x11ADD004, 0xEFBBA000,    // generates 3 LCS1
        //0x1F07D004, 0xEEAEE004, 0xE1ADD004, 0xEFBBA000,  // generates 5 LCS1
        0x1FF75447, 0x1FF77C34, 0xEFEABC34, 0x1FB57C35,    // generates 3 LCS1
        //0xEFF75447, 0xEFF77C34, 0xEFEABC34, 0x1FB57C35,  // generates 5 LCS1

        /* burst read. (Offset 8 in upm RAM)   */
        0x1F07D004, 0xEEAEE004, 0x00ADC004, 0x00AFC000,
        0x00AFC000, 0x01AFC000, 0x0FBB8000, 0x1FF75447,
        0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
        0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,

        /* single write. (Offset 0x18 in upm RAM) */
        0x1F27D004, 0xEEAEA000, 0x01B90004, 0x1FF75447,
        0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,

        /*  burst write. (Offset 0x20 in upm RAM) */
        0x1F07D004, 0xEEAEA000, 0x00AD4000, 0x00AFC000,
        0x00AFC000, 0x01BB8004, 0x1FF75447, 0xFFFFFFFF,
        0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
        0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,

        /* Refresh cycle, offset 0x30 */
        0x1FF5DC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
        0xFFFFFC84, 0xFFFFFC07, 0xFFFFFFFF, 0xFFFFFFFF,
        0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,

        /* Exception, 0ffset 0x3C */
        0x7FFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
};
static void _init_upm(void)
{
        volatile ccsr_lbc_t *lbc = (void *)(CONFIG_SYS_MPC85xx_LBC_ADDR);
        uint lcrr = 0x80000002;

        /* set to 133 MHz (max. for this board) */
        out_be32 (&amp;amp;lbc-&amp;gt;lcrr, lcrr);
        asm ("sync;isync;msync");

        out_be32 (&amp;amp;lbc-&amp;gt;br1, 0xe00018a1);  /* address 0xe000_0000, 32bit, UPMB, enabled */
        out_be32 (&amp;amp;lbc-&amp;gt;or1, 0xffff0000);
        asm ("sync;isync;msync");

        out_be32 (&amp;amp;lbc-&amp;gt;ltesr, 0xffffffff);     /* Clear LBC error interrupts */
        out_be32 (&amp;amp;lbc-&amp;gt;lteir, 0xffffffff);     /* Enable LBC error interrupts */

        out_be32 (&amp;amp;lbc-&amp;gt;mbmr, 0x0);
        upmconfig(UPMB, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
}
...&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;BR /&gt;Using the u-boot command for reading from memory&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;=&amp;gt; md.l e0000000 10&lt;/FONT&gt;&lt;BR /&gt;I see a single LALE and 3 LCS1 signals. The command is asking&lt;BR /&gt;for and displaying 0x10 data words. Seems not to be ok.&lt;BR /&gt;&lt;BR /&gt;Changing the single read RAM pattern (see the two commented out lines above)&lt;BR /&gt;I now see 5 LCS1 signals instead of 3. Means this pattern is found at least.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;To force the burst read I give the SATA driver access to this memory.&lt;BR /&gt;In my understanding its DMA should ask for one 512 byte block and&lt;BR /&gt;find the burst mode.&lt;BR /&gt;&lt;BR /&gt;The first command reads from standard memory and works fine.&lt;BR /&gt;The second command reads from UPM address range and responds after a long timeout&lt;BR /&gt;with that error.&lt;BR /&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;=&amp;gt; sata write 1000000 70baf7d 1&lt;BR /&gt;SATA write: device 0 block # 118206333, count 1 ... 1 blocks written: OK&lt;BR /&gt;=&amp;gt; sata write e0000000 70baf7d 1&lt;BR /&gt;SATA write: device 0 block # 118206333, count 1 ... Non-NCQ command time out&lt;BR /&gt;Wait no active time out&lt;BR /&gt;Non-NCQ command time out&lt;BR /&gt;1 blocks written: OK&lt;BR /&gt;=&amp;gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;I appreciate any advice how to setup a working example.&lt;BR /&gt;&lt;BR /&gt;Thanks in advance&lt;BR /&gt;Wolfgang R.&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Aug 2009 20:15:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211096#M2362</guid>
      <dc:creator>wrostek</dc:creator>
      <dc:date>2009-08-27T20:15:47Z</dc:date>
    </item>
    <item>
      <title>Re: Understanding UPM burst mode</title>
      <link>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211097#M2363</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is the chip select marked as cacheable? For this sort of processor, burst requests are only made to the memory controller by cacheable core accesses. And the burst size would then typically be a cache line.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;... Paul&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Sep 2009 01:06:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211097#M2363</guid>
      <dc:creator>genuap</dc:creator>
      <dc:date>2009-09-09T01:06:54Z</dc:date>
    </item>
    <item>
      <title>Re: Understanding UPM burst mode</title>
      <link>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211098#M2364</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Paul for your feedback.&lt;/P&gt;&lt;P&gt;I'm on holdays but will take a look at it next week.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;Wolfgang R.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Sep 2009 20:50:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211098#M2364</guid>
      <dc:creator>wrostek</dc:creator>
      <dc:date>2009-09-09T20:50:21Z</dc:date>
    </item>
    <item>
      <title>Re: Understanding UPM burst mode</title>
      <link>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211099#M2365</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;It seems that my basic assumption is wrong.&lt;BR /&gt;&lt;BR /&gt;The 8536 ref manual is talking about an 'internal&lt;BR /&gt;master ... requests burst reads'. I thought that&lt;BR /&gt;the DMA controller is such an internal master&lt;BR /&gt;capable to make a burst read from local bus to&lt;BR /&gt;system memory. But this seems wrong, yes?&lt;BR /&gt;&lt;BR /&gt;The only reason for me looking at the UPM and&lt;BR /&gt;not taking the GPCM was to avoid address/data&lt;BR /&gt;multiplexing. I thought I can double the speed&lt;BR /&gt;via burst reads. E.g. on a 133 MHz local bus&lt;BR /&gt;the GPCM will be restricted to 66 MHz data&lt;BR /&gt;transfer rate but I thought I can come close&lt;BR /&gt;to 133 MHz reading large data segments via UPM&lt;BR /&gt;burst from the local bus.&lt;BR /&gt;&lt;BR /&gt;Wolfgang R.&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Sep 2009 00:00:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Other-NXP-Products/Understanding-UPM-burst-mode/m-p/211099#M2365</guid>
      <dc:creator>wrostek</dc:creator>
      <dc:date>2009-09-14T00:00:07Z</dc:date>
    </item>
  </channel>
</rss>

