<?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 How to initialize IMX6 using JLink in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429843#M65348</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using IMX6 SOLO, I'm trying to write to Spansion (S25FL512SAGBHIC10) SPI NOR Using JLink.&lt;BR /&gt;1. Which registers needed to be initialized on IMX6 before starting the process (EIM config, clocks etc...)&lt;BR /&gt;2. Which memory address should I use to copy the content to? (0x8080000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't have access to USB OTG, so the mfg tool is not relevant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'll appreciate any assistance.&lt;/P&gt;&lt;P&gt;David.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 01 Oct 2015 19:49:02 GMT</pubDate>
    <dc:creator>davidziv</dc:creator>
    <dc:date>2015-10-01T19:49:02Z</dc:date>
    <item>
      <title>How to initialize IMX6 using JLink</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429843#M65348</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using IMX6 SOLO, I'm trying to write to Spansion (S25FL512SAGBHIC10) SPI NOR Using JLink.&lt;BR /&gt;1. Which registers needed to be initialized on IMX6 before starting the process (EIM config, clocks etc...)&lt;BR /&gt;2. Which memory address should I use to copy the content to? (0x8080000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't have access to USB OTG, so the mfg tool is not relevant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'll appreciate any assistance.&lt;/P&gt;&lt;P&gt;David.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Oct 2015 19:49:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429843#M65348</guid>
      <dc:creator>davidziv</dc:creator>
      <dc:date>2015-10-01T19:49:02Z</dc:date>
    </item>
    <item>
      <title>Re: How to initialize IMX6 using JLink</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429844#M65349</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi David&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can look at&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-thread-small" data-containerid="2004" data-containertype="14" data-objectid="376786" data-objecttype="1" href="https://community.freescale.com/thread/376786"&gt;https://community.freescale.com/thread/376786&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://forum.segger.com/index.php?page=Thread&amp;amp;threadID=1550" rel="nofollow"&gt;http://forum.segger.com/index.php?page=Thread&amp;amp;threadID=1550&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://forum.segger.com/index.php?page=Thread&amp;amp;threadID=1995" rel="nofollow"&gt;http://forum.segger.com/index.php?page=Thread&amp;amp;threadID=1995&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;some jtag init scripts can be found in /tools folder of&lt;/P&gt;&lt;P&gt;"MX6_PLATFORM_SDK "&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-wiki-small" data-containerid="2004" data-containertype="14" data-objectid="94139" data-objecttype="102" href="https://community.freescale.com/docs/DOC-94139"&gt;https://community.freescale.com/docs/DOC-94139&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;igor&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Oct 2015 01:57:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429844#M65349</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-10-02T01:57:41Z</dc:date>
    </item>
    <item>
      <title>Re: How to initialize IMX6 using JLink</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429845#M65350</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have used this script to initialize IMX6&lt;/P&gt;&lt;P&gt;target remote localhost:2331&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#monitor endian little&lt;/P&gt;&lt;P&gt;#monitor device MCIMX6S5&lt;/P&gt;&lt;P&gt;#monitor speed auto&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor reset&lt;/P&gt;&lt;P&gt;monitor halt&lt;/P&gt;&lt;P&gt;monitor sleep 1000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Disable WDOG&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x020bc000 = 0x30&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Enable all clocks (they are disabled by ROM code)&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4068 = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c406c = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4070 = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4074 = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4078 = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c407c = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4080 = 0xffffffff&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4084 = 0xffffffff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# IOMUX&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;#DDR IO TYPE:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0774 = 0x000C0000 # IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0754 = 0x00000000 # IOMUXC_SW_PAD_CTL_GRP_DDRPKE &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#CLOCK:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04ac = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04b0 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#ADDRESS:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0464 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0490 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e074c = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_ADDDS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Control:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0494 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04a0 = 0x00000000 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be configured using Group Control Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04b4 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04b8 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e076c = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_CTLDS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Data Strobes:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0750 = 0x00020000 # IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04bc = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0 &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04c0 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1 &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04c4 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2 &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04c8 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Data:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0760 = 0x00020000 # IOMUXC_SW_PAD_CTL_GRP_DDRMODE&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0764 = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B0DS &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0770 = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B1DS &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0778 = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B2DS &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e077c = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B3DS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0470 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0474 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0478 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e047c = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# DDR Controller Registers&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Manufacturer: ISSI&lt;/P&gt;&lt;P&gt;# Device Part Number: IS43/46TR16256AL&lt;/P&gt;&lt;P&gt;# Clock Freq.: 400MHz&lt;/P&gt;&lt;P&gt;# Density per CS in Gb: 8&lt;/P&gt;&lt;P&gt;# Chip Selects used: 1&lt;/P&gt;&lt;P&gt;# Number of Banks: 8&lt;/P&gt;&lt;P&gt;# Row address:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15&lt;/P&gt;&lt;P&gt;# Column address: 10&lt;/P&gt;&lt;P&gt;# Data bus width 32&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Calibration setup.&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0800 = 0xA1390003 # DDR_PHY_P0_MPZQHWCTRL, enable both one-time &amp;amp; periodic HW ZQ calibration.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# For target board, may need to run write leveling calibration to fine tune these settings.&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b080c&amp;nbsp; = 0x0045004B&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0810 = 0x00240027&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;##Read DQS Gating calibration&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b083c = 0x0238023C # MPDGCTRL0 PHY0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0840 = 0x020C0214 # MPDGCTRL1 PHY0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Read calibration&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0848 = 0x44464848 # MPRDDLCTL PHY0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Write calibration&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; &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0850 = 0x38342C32 # MPWRDLCTL PHY0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#read data bit delay: (3 is the reccommended default value, although out of reset value is 0)&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b081c = 0x33333333 # DDR_PHY_P0_MPREDQBY0DL3&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0820 = 0x33333333 # DDR_PHY_P0_MPREDQBY1DL3&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0824 = 0x33333333 # DDR_PHY_P0_MPREDQBY2DL3&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0828 = 0x33333333 # DDR_PHY_P0_MPREDQBY3DL3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# Complete calibration by forced measurement:&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; &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b08b8 = 0x00000800 # DDR_PHY_P0_MPMUR0, frc_msr&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Calibration setup end&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#MMDC init:&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0004 = 0x0002002D # MMDC0_MDPDC&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0008 = 0x00333040 # MMDC0_MDOTC&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b000c = 0x676B52F3 # MMDC0_MDCFG0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0010 = 0xB66D8B63 # MMDC0_MDCFG1&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0014 = 0x01FF00DB # MMDC0_MDCFG2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#MDMISC: RALAT kept to the high level of 5.&lt;/P&gt;&lt;P&gt;#MDMISC: consider reducing RALAT if your 528MHz board design allow that. Lower RALAT benefits:&lt;/P&gt;&lt;P&gt;#a. better operation at low frequency, for LPDDR2 freq &amp;lt; 100MHz, change RALAT to 3&lt;/P&gt;&lt;P&gt;#b. Small performence improvment&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0018 = 0x00011740 # MMDC0_MDMISC&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00008000 MMDC0_MDSCR, set the Configuration request bit during MMDC set up&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b002c = 0x000026D2 # MMDC0_MDRWD&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0030 = 0x006B1023 # MMDC0_MDOR&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0040 = 0x0000001F # Chan0 CS0_END &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0000 = 0x84190000 # MMDC0_MDCTL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Mode register writes&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; &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x02008032 # MMDC0_MDSCR, MR2 write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00008033 # MMDC0_MDSCR, MR3 write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00048031 # MMDC0_MDSCR, MR1 write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x05208030 # MMDC0_MDSCR, MR0write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x04008040 # MMDC0_MDSCR, ZQ calibration command sent to device on CS0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0020 = 0x00007800 # MMDC0_MDREF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0818 = 0x00022227 # DDR_PHY_P0_MPODTCTRL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0004 = 0x0002556D # MMDC0_MDPDC now SDCTL power down enabled&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0404 = 0x00011006 # MMDC0_MAPSR ADOPT power down enabled, MMDC will enter automatically to self-refresh while the number of idle cycle reached.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00000000 # MMDC0_MDSCR, clear this register (especially the configuration bit as initialization is complete)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#UART PORT INIT &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0050 = 3 #&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e004c = 3 #&lt;/P&gt;&lt;P&gt;monitor memU32 0x020308fc = 3 # &lt;/P&gt;&lt;P&gt;--------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then I load the uboot&lt;/P&gt;&lt;P&gt;load u-boot&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For some reason it doesn't start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;David.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 04 Oct 2015 07:50:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429845#M65350</guid>
      <dc:creator>davidziv</dc:creator>
      <dc:date>2015-10-04T07:50:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to initialize IMX6 using JLink</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429846#M65351</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK, found the right configuration for running U-BOOT from RAM&lt;/P&gt;&lt;P&gt;target remote localhost:2331&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#monitor endian little&lt;/P&gt;&lt;P&gt;#monitor device MCIMX6S5&lt;/P&gt;&lt;P&gt;#monitor speed auto&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor reset&lt;/P&gt;&lt;P&gt;monitor halt&lt;/P&gt;&lt;P&gt;monitor sleep 1000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Disable WDOG&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x020bc000 = 0x30&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Enable all clocks (they are disabled by ROM code)&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4068 = 0x00C03F3F&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c406c = 0x0030FC03&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4070 = 0x0FFFC000&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4074 = 0x3FF00000&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4078 = 0x00FFF300&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c407c = 0x0F0000C3&lt;/P&gt;&lt;P&gt;monitor memU32 0x020c4080 = 0x000003FF&lt;/P&gt;&lt;P&gt;#GPU and VPU not needed for boot&lt;/P&gt;&lt;P&gt;#monitor memU32 0x020c4084 = 0xffffffff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# IOMUX&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;#DDR IO TYPE:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0774 = 0x000C0000 # IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0754 = 0x00000000 # IOMUXC_SW_PAD_CTL_GRP_DDRPKE &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#CLOCK:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04ac = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04b0 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#ADDRESS:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0464 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0490 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e074c = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_ADDDS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Control:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0494 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04a0 = 0x00000000 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be configured using Group Control Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04b4 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04b8 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e076c = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_CTLDS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Data Strobes:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0750 = 0x00020000 # IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04bc = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0 &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04c0 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1 &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04c4 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2 &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e04c8 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Data:&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0760 = 0x00020000 # IOMUXC_SW_PAD_CTL_GRP_DDRMODE&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0764 = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B0DS &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0770 = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B1DS &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0778 = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B2DS &lt;/P&gt;&lt;P&gt;monitor memU32 0x020e077c = 0x00000030 # IOMUXC_SW_PAD_CTL_GRP_B3DS &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0470 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0474 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0478 = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e047c = 0x00000030 # IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# DDR Controller Registers&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Manufacturer: ISSI&lt;/P&gt;&lt;P&gt;# Device Part Number: IS43/46TR16256AL&lt;/P&gt;&lt;P&gt;# Clock Freq.: 400MHz&lt;/P&gt;&lt;P&gt;# Density per CS in Gb: 8&lt;/P&gt;&lt;P&gt;# Chip Selects used: 1&lt;/P&gt;&lt;P&gt;# Number of Banks: 8&lt;/P&gt;&lt;P&gt;# Row address:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15&lt;/P&gt;&lt;P&gt;# Column address: 10&lt;/P&gt;&lt;P&gt;# Data bus width 32&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Calibration setup.&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0800 = 0xA1390003 # DDR_PHY_P0_MPZQHWCTRL, enable both one-time &amp;amp; periodic HW ZQ calibration.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# For target board, may need to run write leveling calibration to fine tune these settings.&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b080c&amp;nbsp; = 0x001F001F&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0810 = 0x001F001F&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;##Read DQS Gating calibration&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b083c = 0x42190219 # MPDGCTRL0 PHY0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0840 = 0x017B0177 # MPDGCTRL1 PHY0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Read calibration&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0848 = 0x4B4D4E4D # MPRDDLCTL PHY0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Write calibration&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; &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0850 = 0x3F3E2D36 # MPWRDLCTL PHY0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#read data bit delay: (3 is the reccommended default value, although out of reset value is 0)&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b081c = 0x33333333 # DDR_PHY_P0_MPREDQBY0DL3&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0820 = 0x33333333 # DDR_PHY_P0_MPREDQBY1DL3&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0824 = 0x33333333 # DDR_PHY_P0_MPREDQBY2DL3&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0828 = 0x33333333 # DDR_PHY_P0_MPREDQBY3DL3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# Complete calibration by forced measurement:&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; &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b08b8 = 0x00000800 # DDR_PHY_P0_MPMUR0, frc_msr&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Calibration setup end&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#MMDC init:&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0004 = 0x0002002D # MMDC0_MDPDC&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0008 = 0x00333030 # MMDC0_MDOTC&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b000c = 0x3F435313 # MMDC0_MDCFG0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0010 = 0xB66D8B63 # MMDC0_MDCFG1&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0014 = 0x01FF00DB # MMDC0_MDCFG2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#MDMISC: RALAT kept to the high level of 5.&lt;/P&gt;&lt;P&gt;#MDMISC: consider reducing RALAT if your 528MHz board design allow that. Lower RALAT benefits:&lt;/P&gt;&lt;P&gt;#a. better operation at low frequency, for LPDDR2 freq &amp;lt; 100MHz, change RALAT to 3&lt;/P&gt;&lt;P&gt;#b. Small performence improvment&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0018 = 0x00001740 # MMDC0_MDMISC&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00008000 MMDC0_MDSCR, set the Configuration request bit during MMDC set up&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b002c = 0x000026D2 # MMDC0_MDRWD&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0030 = 0x00431023 # MMDC0_MDOR&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0040 = 0x00000017 # Chan0 CS0_END &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0000 = 0x83190000 # MMDC0_MDCTL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Mode register writes&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; &lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x04008032 # MMDC0_MDSCR, MR2 write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00008033 # MMDC0_MDSCR, MR3 write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00048031 # MMDC0_MDSCR, MR1 write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x05208030 # MMDC0_MDSCR, MR0write, CS0&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x04008040 # MMDC0_MDSCR, ZQ calibration command sent to device on CS0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0020 = 0x00005800 # MMDC0_MDREF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0818 = 0x00011117 # DDR_PHY_P0_MPODTCTRL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0004 = 0x0002556D # MMDC0_MDPDC now SDCTL power down enabled&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b0404 = 0x00011006 # MMDC0_MAPSR ADOPT power down enabled, MMDC will enter automatically to self-refresh while the number of idle cycle reached.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x021b001c = 0x00000000 # MMDC0_MDSCR, clear this register (especially the configuration bit as initialization is complete)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;# Calibration setup end&lt;/P&gt;&lt;P&gt;#=============================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0010 = 0xF00000CF # enable AXI cache for VDOA/VPU/IPU&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e0018 = 0x007F007F # set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7&lt;/P&gt;&lt;P&gt;monitor memU32 0x020e001c = 0x007F007F # set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;load u-boot&lt;/P&gt;&lt;P&gt;cont&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 06 Oct 2015 22:06:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-initialize-IMX6-using-JLink/m-p/429846#M65351</guid>
      <dc:creator>davidziv</dc:creator>
      <dc:date>2015-10-06T22:06:22Z</dc:date>
    </item>
  </channel>
</rss>

