<?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: How to boot OBDS via USB in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234992#M18463</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yuri,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for the application. If i compile the example with my toolchain (gcc version 4.8.3 20131129, newlib), i get some strange messages, but it seems to work:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Heap and stack collision&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Heap and stack collision&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pause&lt;BR /&gt;start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What toolchain should i use for the example?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jan 2014 18:27:56 GMT</pubDate>
    <dc:creator>lategoodbye</dc:creator>
    <dc:date>2014-01-15T18:27:56Z</dc:date>
    <item>
      <title>How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234989#M18460</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i've modified i.MX28 On-Board Diagnostics Suite (OBDS) 1.0 to run on a custom hardware (still i.MX28 + USB but without SD card slot).&lt;/P&gt;&lt;P&gt;After that i generated the &lt;SPAN style="font-family: courier new,courier;"&gt;mx28-obds.sb&lt;/SPAN&gt; file with&lt;SPAN style="font-family: courier new,courier;"&gt; tools/linux/build_mx28.sh&lt;/SPAN&gt; and modified the XML of the Mfgtool:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="xml" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13897194998029273" jivemacro_uid="_13897194998029273"&gt;
&lt;P&gt;&amp;lt;UCL&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;lt;CFG&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;STATE name="Recovery" dev="IMX28"/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;STATE name="Updater" dev="Updater" /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DEV name="IMX28" vid="15A2" pid="004F"/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DEV name="Updater" vid="066F" pid="37FF" /&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;lt;/CFG&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;lt;LIST name="Custom img" desc="Start OBDS"&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CMD type="boot" body="Recovery" file="mx28-obds.sb" &amp;gt;Start OBDS&amp;lt;/CMD&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;lt;/LIST&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/UCL&amp;gt;&lt;/P&gt;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If i run the MfgTool, the custom hardware only prints&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;HTLLCL&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;But if i try the original &lt;SPAN style="font-family: courier new,courier;"&gt;updater_ivt.sb&lt;/SPAN&gt; with MfgTool, everything is fine. So i think the &lt;SPAN style="font-family: courier new,courier;"&gt;mx28-obds.sb&lt;/SPAN&gt; has the wrong format.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the content of the bd file:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro _jivemacro_uid_13897195835994346 jive_macro_code" jivemacro_uid="_13897195835994346"&gt;
&lt;P&gt;options {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; driveTag = 0x00;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flags = 0x01;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;constants {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IVT_ADDR = 0x70;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD_ADDR&amp;nbsp; = 0x100;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENTRY_ADDR = 0x40800000;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;sources {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ipl = "../../output/mx28/bin/ipl";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obds = "../../output/mx28/bin/diag-obds-mx28evk.bin";&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;section (0) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; load ipl &amp;gt; LOAD_ADDR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; load ivt (entry=LOAD_ADDR) &amp;gt; IVT_ADDR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hab call IVT_ADDR;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; load obds &amp;gt; ENTRY_ADDR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; load ivt (entry=ENTRY_ADDR) &amp;gt; IVT_ADDR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hab jump IVT_ADDR;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can i generate a sb file which works like a bare metal application in internal i.MX28 RAM?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do i need to change the bd file?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jan 2014 15:23:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234989#M18460</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-14T15:23:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234990#M18461</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You may look at very simple enclosed (led) example. &lt;BR /&gt;sb-loader is used to load and run the led example via i.MX28 USB in recovery mode.&lt;/P&gt;&lt;P&gt;The MFG uses the same approach. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jan 2014 02:30:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234990#M18461</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-01-15T02:30:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234991#M18462</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Stefan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Both the link file mx28.ld and bd file show the diag-obds-mx28evk.bin is loaded to address 0x40800000 which is SDRAM. &lt;/P&gt;&lt;P&gt;If you want to load to IRAM, you need modify mx28.ld and bd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Grace&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jan 2014 02:34:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234991#M18462</guid>
      <dc:creator>GraceH</dc:creator>
      <dc:date>2014-01-15T02:34:00Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234992#M18463</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yuri,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for the application. If i compile the example with my toolchain (gcc version 4.8.3 20131129, newlib), i get some strange messages, but it seems to work:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Heap and stack collision&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Heap and stack collision&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pause&lt;BR /&gt;start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What toolchain should i use for the example?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jan 2014 18:27:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234992#M18463</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-15T18:27:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234993#M18464</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The message is from syscall.c (C-function _sbrk) .&lt;/P&gt;&lt;P&gt;Perhaps memory layout is not correct (to get enough amount of memory for heap)&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jan 2014 07:05:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234993#M18464</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-01-16T07:05:19Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234994#M18465</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yuri,&lt;/P&gt;&lt;P&gt;I tried your standalone LED program to test the board is working or not using internal SRAM. When using the sb_loader to send the test&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;sb&lt;/SPAN&gt; file to board there is &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;error&lt;/SPAN&gt; during download but &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;in board&lt;/SPAN&gt;, &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; can see the blinking of LED and print message in Hyperterminal. The log information for your reference.&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;D:\sharelinux\LED&amp;gt;sb_loader.exe -f test.sb&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Downloading test&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;sb&lt;/SPAN&gt; to &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;device&lt;/SPAN&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp; .. &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;CStHidDevice&lt;/SPAN&gt;:&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;:&lt;/SPAN&gt;Download&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;)&amp;nbsp; Error&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;258) during read.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Quitting.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp; Error&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;258) during download.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Quitting.&lt;/EM&gt;&lt;/P&gt;

&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you give me an idea to test the SDRAM. I modified your code and cross compiled to test the SDRAM but it ends with error as follows&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pause&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;DDR2 Test Starting&lt;/P&gt;
&lt;P&gt;Writing&lt;/P&gt;
&lt;P&gt;Bank Selection done&lt;/P&gt;
&lt;P&gt;Writing 0&lt;/P&gt;
&lt;P&gt;0x8020a014&lt;/P&gt;

&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;Test program&lt;/SPAN&gt; to test DDR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;!&lt;/P&gt;&lt;P&gt;#include "&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;stdio&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;h"&lt;/P&gt;&lt;P&gt;#include "hardware&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;h"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* note, this is where the &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;SoC&lt;/SPAN&gt; specific header file &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;is included&lt;/SPAN&gt; */&lt;/P&gt;&lt;P&gt;#define TXFE 0x0080&lt;/P&gt;&lt;P&gt;#define R32&amp;nbsp;&amp;nbsp; volatile unsigned long *&lt;/P&gt;&lt;P&gt;#define R16&amp;nbsp;&amp;nbsp; volatile unsigned short *&lt;/P&gt;&lt;P&gt;#define R8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile unsigned char *&lt;/P&gt;&lt;P&gt;#define PARAM_DDR_TEST_DENSITY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (128 * 1024 * 1024)&lt;/P&gt;&lt;P&gt;#define PARAM_DDR_TEST_CS_NR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;#define HW_UARTDBG_FR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark" style="font-size: 10pt; line-height: 1.5em;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;R32&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark" style="font-size: 10pt; line-height: 1.5em;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;(0x80074018))&amp;nbsp; // UART Flag Register&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#define HW_UARTDBG_DR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80074000)) // UART Data Register&lt;/P&gt;&lt;P&gt;#define HW_PWM_CTRL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80064000))&lt;/P&gt;&lt;P&gt;#define HW_PWM_ACTIVE0&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(HW_PWM_CTRL + 0x10))&lt;/P&gt;&lt;P&gt;#define HW_PWM_PERIOD0&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(HW_PWM_CTRL + 0x20))&lt;/P&gt;&lt;P&gt;#define HW_PWM_ACTIVE1&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(HW_PWM_CTRL + 0x30))&lt;/P&gt;&lt;P&gt;#define HW_PWM_PERIOD1&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(HW_PWM_CTRL + 0x40))&lt;/P&gt;&lt;P&gt;#define PINCTRL_MUXSEL6&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80018160))&lt;/P&gt;&lt;P&gt;#define PINCTRL_MUXSEL7&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80018170))&lt;/P&gt;&lt;P&gt;#define PINCTRL_MUXSEL7_SET&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80018174))&lt;/P&gt;&lt;P&gt;#define PINCTRL_DOE3&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80018B30))&lt;/P&gt;&lt;P&gt;#define PINCTRL_DOUT3&amp;nbsp;&amp;nbsp; (*&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;R32&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(0x80018730))&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;void&lt;/SPAN&gt; pwm1_init&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;U32 bright)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HW_PWM_CTRL = 0&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pwm&lt;/SPAN&gt; 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HW_PWM_ACTIVE1 = (bright&amp;lt;&amp;lt;16) &amp;amp; 0x01FF0000&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt; // set &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pwm&lt;/SPAN&gt; 1&amp;nbsp; 0&amp;lt;bright&amp;lt;0x200&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HW_PWM_PERIOD1 = 0x5B0200; // set &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pwm&lt;/SPAN&gt; 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HW_PWM_CTRL = 0x2&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt; //enable &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pwm&lt;/SPAN&gt; 1&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;void&lt;/SPAN&gt; pause&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;int time)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;volatile&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;while&lt;/SPAN&gt; (time--) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = time&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;void&lt;/SPAN&gt; outbyte&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; c)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;while&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; !&lt;/SPAN&gt;(HW_UARTDBG_FR &amp;amp; TXFE)&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;&amp;nbsp; )&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HW_UARTDBG_DR = c&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; ddr_test&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;u32 density, u32 number_of_cs)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;failCount&lt;/SPAN&gt; = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; mem_src;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *ps;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; bank_size = density / 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data bus, walking ones test */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Looking for shorts on the board, so no need to test both &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;chip&lt;/SPAN&gt; selects */&lt;/P&gt;&lt;P&gt;&amp;nbsp; printf("\n\rWriting \n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* First, write walking ones to DDR memory */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(CSD0_BASE_ADDR + bank_size * 4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; printf("\n\r Bank Selection done \n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt;= 31; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printf("\n\r Writing %d \n\r",i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ps = 0x1 &amp;lt;&amp;lt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; printf("\n\r Reading \n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Now, read-verify the memory */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(CSD0_BASE_ADDR + bank_size * 4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt;= 31; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (*ps&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; !&lt;/SPAN&gt;= (0x1 &amp;lt;&amp;lt; i)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failCount++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* BANK ADDRESS test */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* CS0 bank address test - &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;note since&lt;/SPAN&gt; code is stored in &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;first part&lt;/SPAN&gt; of DDR in CSD0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;do&lt;/SPAN&gt; not write data to the first bank to avoid overwriting code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hence variable "&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;" starts at 1 not 0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* First, write data to each bank */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 1; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt;= 7; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(CSD0_BASE_ADDR + bank_size * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ps = 0x11111111 * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Second, read back data from each bank to verify */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 1; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt;= 7; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(CSD0_BASE_ADDR + bank_size * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (*ps&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; !&lt;/SPAN&gt;= 0x11111111 * i) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failCount++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (number_of_cs == 2) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* CS1 bank address test */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* First, write data to each bank */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt;= 7; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(CSD1_BASE_ADDR + bank_size * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ps = 0x88888888 + 0x11111111 * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Second, read back data from each bank to verify */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt;= 7; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(CSD1_BASE_ADDR + bank_size * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (*ps&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; !&lt;/SPAN&gt;= (0x88888888 + 0x11111111 * i)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failCount++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DDR ADDRESS test, test the last two banks for each chip select */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* CS0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* First, write data to each row */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_src = CSD0_BASE_ADDR + bank_size * 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt; bank_size * 2; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; + 512) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(mem_src + &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ps = 0x12345678 + 0x11111111 * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Second, read back data from each row to verify */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_src = CSD0_BASE_ADDR + bank_size * 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt; bank_size * 2; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; + 512) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(mem_src + &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (*ps&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; !&lt;/SPAN&gt;= (0x12345678 + 0x11111111 * i)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failCount++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (number_of_cs == 2) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* CS1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* First, write data to each row */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_src = CSD1_BASE_ADDR + bank_size * 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt; bank_size * 2; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; + 512) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(mem_src + &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ps = 0x87654321 + 0x11111111 * &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Second, read back data from each row to verify */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem_src = CSD1_BASE_ADDR + bank_size * 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = 0; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; &amp;lt; bank_size * 2; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; = &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt; + 512) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ps&lt;/SPAN&gt; = (unsigned &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; *&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;)&lt;/SPAN&gt;(mem_src + &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;i&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (*ps&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; !&lt;/SPAN&gt;= (0x87654321 + 0x11111111 * i)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failCount++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;if&lt;/SPAN&gt; (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;failCount&lt;/SPAN&gt; == 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;" DDR test passed \n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;return&lt;/SPAN&gt; 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;" DDR test failed \n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;return&lt;/SPAN&gt; 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;int&lt;/SPAN&gt; main ()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"pause \n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pause&lt;/SPAN&gt; (100);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"DDR2 Test Starting\n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pause&lt;/SPAN&gt; (100);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ddr_test&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;PARAM_DDR_TEST_DENSITY, PARAM_DDR_TEST_CS_NR);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"DDR Test Finished\n\r");&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; PINCTRL_DOE3 = 0x30&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark" style="font-size: 10pt; line-height: 1.5em;"&gt;while&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt; (1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pause&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;2000000);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PINCTRL_DOUT3 = 0x10&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"RAM 1\n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pause&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;2000000);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PINCTRL_DOUT3 = 0&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"test 0\n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp; PINCTRL_DOUT3 = 0x20&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"test 1\n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;pause&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;2000000);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PINCTRL_DOUT3 = 0&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;printf&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;"test 0\n\r");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;!&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;RAM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 15:58:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234994#M18465</guid>
      <dc:creator>Ramtry</dc:creator>
      <dc:date>2014-01-17T15:58:19Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234995#M18466</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Grace,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you are right. I thought the obds runs completly in OCRAM, but that's impossible because the binary is too big.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First i reduced the size of the binary to 67 kb by removing all unnecessary drivers. After that i tried many settings ( ENTRY_ADDR = 0, 0x200, 0x4000 or 0x8000) but the results are worse. I got the message "Pref" or "Undefined Ins" without any errorcode.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 19:29:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234995#M18466</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-17T19:29:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234996#M18467</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yuri,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i changed many settings in the crt.s and MX28_ocram.ld, but i always get "Heap and stack collision" also with original LED example. Because i didn't get this message with the precompiled binary test.sb from the ZIP file, i thought the problem has something to do with my toolchain.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you know for which toolchain the LED example was designed for?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 19:40:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234996#M18467</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-17T19:40:51Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234997#M18468</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ram,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i see you need the same program :smileygrin:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you also copied the startup code (Assembler in plat_startup.h) from obds into your project? Without the SDRAM isn't initialized and accessable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which toolchain and version do you use?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 19:56:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234997#M18468</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-17T19:56:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234998#M18469</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;arm-none-eabi-gcc is from CodeSourcery (Mentor).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/" title="http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/"&gt;Sourcery CodeBench Lite Edition including ARM GCC IDE - Mentor Graphics&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jan 2014 11:14:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234998#M18469</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-01-20T11:14:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234999#M18470</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Stefan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using GCC 4.3.2 from Mentor graphics.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jan 2014 11:59:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/234999#M18470</guid>
      <dc:creator>Ramtry</dc:creator>
      <dc:date>2014-01-20T11:59:25Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235000#M18471</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Stefan,&lt;/P&gt;&lt;P&gt;I haven't included the SDRAM init code from plat_startup.h. Basically what am doing is just modifying the OBDS project to test only DDR. My main aim is to test the DDR using &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;standalone program&lt;/SPAN&gt; using internal RAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Steps followed :&lt;/P&gt;&lt;P&gt;1)&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;untar&lt;/SPAN&gt; "imx_28_obds_release_v1_0&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;tar&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;gz&lt;/SPAN&gt;"&lt;/P&gt;&lt;P&gt;2) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;cd&lt;/SPAN&gt; \imx_28_obds_release_v1_0\201040_mx28_evk_release\src\mx28&lt;/P&gt;&lt;P&gt;3) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;vi&lt;/SPAN&gt; mx28&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ld&lt;/SPAN&gt; &lt;/P&gt;&lt;P&gt;4) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;changed&lt;/SPAN&gt; this line&lt;/P&gt;&lt;P&gt;--&amp;gt;&lt;/P&gt;&lt;P&gt;RAM (&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;rwx&lt;/SPAN&gt;)&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; :&lt;/SPAN&gt; ORIGIN = 0x0, LENGTH = 120K&lt;/P&gt;&lt;P&gt;--&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;vectors&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __vectors_start =&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; .&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *o&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;(&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;vectors)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __vectors_end =&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; .&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;gt;RAM&lt;/P&gt;&lt;P&gt;5) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;save&lt;/SPAN&gt; and exit&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;6) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;vi&lt;/SPAN&gt; mx28evk_mmcsd&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;bd&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;7) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;changed&lt;/SPAN&gt; this line&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IVT_ADDR = 0x8000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD_ADDR&amp;nbsp; = 0x100;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENTRY_ADDR = 0x0;&lt;/P&gt;&lt;P&gt;8) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;save&lt;/SPAN&gt; and exit&lt;/P&gt;&lt;P&gt;9) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;cd&lt;/SPAN&gt;&lt;/SPAN&gt; \imx_28_obds_release_v1_0\201040_mx28_evk_release\src\drivers&lt;/P&gt;&lt;P&gt;10) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;vi&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;makefile&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;11) To decrease the size of SB file, modify this line "SUB_DIRS&lt;SPAN class="GINGER_SOFTWARE_mark"&gt; :&lt;/SPAN&gt;= &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ddr&lt;/SPAN&gt; timer &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;uart&lt;/SPAN&gt; &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;dma&lt;/SPAN&gt;"&lt;/P&gt;&lt;P&gt;12) Delete the sub folder except &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;ddr&lt;/SPAN&gt;, timer, &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;uart&lt;/SPAN&gt;, &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;dma&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;13) &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;cd&lt;/SPAN&gt; \imx_28_obds_release_v1_0\201040_mx28_evk_release&lt;/P&gt;&lt;P&gt;14) ./&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;tools&lt;/SPAN&gt;/&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;linux&lt;/SPAN&gt;/build_mx28&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;sh&lt;/P&gt;&lt;P&gt;15) flash the \imx_28_obds_release_v1_0\201040_mx28_evk_release\output\mx28\bin\mx28-obds.sb file using sb_loader through USB. &lt;/P&gt;&lt;P&gt;16) But flashing it &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;showing&lt;/SPAN&gt; an error &lt;SPAN class="GINGER_SOFTWARE_mark"&gt;of&lt;/SPAN&gt; &lt;/P&gt;&lt;P&gt;LCLLJ&lt;/P&gt;&lt;P&gt;LLCLLJ&lt;/P&gt;&lt;P&gt;UndefiîHTLLCLLJ&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;Undefin&lt;/SPAN&gt; HTLLCLLJ&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;Undefin&lt;/SPAN&gt; HTLLCLLJ&lt;/P&gt;&lt;P&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;UndefineHTLLCLLJ&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;HTLLCLLJ&lt;/P&gt;&lt;P&gt;HTLLCLLJ&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't know the what am missing here, please suggest me to fix this issue or give some other idea to test DDR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;RAM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Jan 2014 16:05:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235000#M18471</guid>
      <dc:creator>Ramtry</dc:creator>
      <dc:date>2014-01-21T16:05:00Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235001#M18472</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ram,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;okay if you modify obds and not led example you don't need plat_startup.h.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My changes on obds are very close to yours, except:&lt;/P&gt;&lt;P&gt;- i removed the C file for the application uart&lt;/P&gt;&lt;P&gt;- i removed the static structures for test cases&lt;/P&gt;&lt;P&gt;- i placed the call for run_ddr_test() direct into platform_init()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But finally i get the same results as you (see reply to GraceSi). So i decided to implement the DDR test in the led example. But than comes the problem with the collision.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here are my assumptions why it won't work with obds:&lt;/P&gt;&lt;P&gt;- the binary of obds is still too big and there are not enough memory for variables and stack&lt;/P&gt;&lt;P&gt;- the settings in mx28.ld are wrong (try to reduce LENGTH to a smaller value than 120k)&lt;/P&gt;&lt;P&gt;- the settings in mx28evk_mmcsd&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;.&lt;/SPAN&gt;&lt;SPAN class="GINGER_SOFTWARE_mark"&gt;bd are wrong (may be the ipl image overlaps obds)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Stefan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Jan 2014 17:37:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235001#M18472</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-21T17:37:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235002#M18473</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please look at attached example, hope this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Jan 2014 06:15:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235002#M18473</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2014-01-23T06:15:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235003#M18474</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Stefan,&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I got the same error as you when I compile the LED example in my linux toolchain (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://launchpad.net/gcc-arm-embedded/+download"&gt;https://launchpad.net/gcc-arm-embedded/+download&lt;/A&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;If I compile with the windows version of the &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;arm-none-eabi-gcc from CodeSourcery (Mentor) I don't get this error using these flags: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CXXFLAGS =&lt;/TD&gt;&lt;TD&gt;-Os -Wall -mcpu=arm926ej-s -march=armv5te -mfloat-abi=soft&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The -s flag don't let the code run on my board and I only get an error code on the UART: 0x8050100f. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Jan 2014 10:50:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235003#M18474</guid>
      <dc:creator>fernandolopes</dc:creator>
      <dc:date>2014-01-28T10:50:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235004#M18475</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Stefan,&lt;/P&gt;&lt;P&gt;since you want to make a memory test, take a look on the mem_test that Yuri posted on my thread &lt;A href="https://community.nxp.com/thread/318291"&gt;i.MX28 DDR stress test&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;The .sb file on the mem_test loaded on my board, but the processor freezes after power initialization.&lt;/P&gt;&lt;P&gt;I changed the power initialization code to (kind of) match the power_prep bootlet with NO_DCDC_BATT_SOURCE defined (my board is running from an external power supply with no battery). Now the code runs on my board and catches some errors if I increase the EMI frequency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can apply the patch attached to the mem_test code that Yuri posted and try it if you want.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You will need windows with the &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;arm-none-eabi-gcc from CodeSourcery (Mentor) and make to compile the code&lt;/SPAN&gt;. I use Windows XP 32 bits on VirtualBox to do it.&lt;/P&gt;&lt;P&gt;It should be as simple as that:&lt;/P&gt;&lt;P&gt;&amp;gt;make&lt;/P&gt;&lt;P&gt;&amp;gt;usb_load.bat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may change the DDR2 memory parameters on the main file to match the PN you're using.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jan 2014 11:27:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235004#M18475</guid>
      <dc:creator>fernandolopes</dc:creator>
      <dc:date>2014-01-29T11:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235005#M18476</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Fernando,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thank you very much. I'll try it, if i've got more time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR Stefan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jan 2014 12:43:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235005#M18476</guid>
      <dc:creator>lategoodbye</dc:creator>
      <dc:date>2014-01-29T12:43:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to boot OBDS via USB</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235006#M18477</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Fernando!&lt;/P&gt;&lt;P&gt;Please, can you give DDR memory test, &lt;SPAN class="short_text" lang="en"&gt;&lt;SPAN class="hps"&gt;with modification (mem_test+power_init.patch) like .sb file? &lt;SPAN class="short_text" lang="en"&gt;&lt;SPAN class="hps"&gt;I do not have&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;a compiler to&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;build .sb file.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="short_text" lang="en"&gt;&lt;SPAN class="hps"&gt;&lt;SPAN class="short_text" lang="en"&gt;&lt;SPAN class="hps"&gt; Thank you!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Mar 2014 12:04:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-boot-OBDS-via-USB/m-p/235006#M18477</guid>
      <dc:creator>fear_nada</dc:creator>
      <dc:date>2014-03-07T12:04:16Z</dc:date>
    </item>
  </channel>
</rss>

