<?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: Code examples for MRAM use with K60? in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444112#M26169</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;On which line of initialization are you having the fault. Most linkely you are attempting to access MRAM before configuring Flexbus.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 Jul 2016 18:30:49 GMT</pubDate>
    <dc:creator>Carlos_Musich</dc:creator>
    <dc:date>2016-07-19T18:30:49Z</dc:date>
    <item>
      <title>Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444101#M26158</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I bought TWR-MEM module. Are DVD contain code examples for MRAM use with K60? If No, where I can get code examples?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 08 Oct 2015 11:25:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444101#M26158</guid>
      <dc:creator>evgenik</dc:creator>
      <dc:date>2015-10-08T11:25:16Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444102#M26159</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Evgeni,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please take a look on the Flexbus examples I attached to this post &lt;A _jive_internal="true" data-containerid="2019" data-containertype="14" data-content-finding="Community" data-objectid="341623" data-objecttype="1" href="https://community.nxp.com/thread/341623"&gt;FlexBus in 16 bit mode and 8 bit access&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;They are usingK60 and K70 with CW and KDS. Some of the examples use TWR.MEM. They have also a document explaining the examples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Carlos&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 Oct 2015 17:31:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444102#M26159</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2015-10-28T17:31:08Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444103#M26160</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Carlos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your response.&lt;/P&gt;&lt;P&gt;In FlexBus code examples I can view that MEM FlexBus use is very simple. But from this view I have the next question:&lt;/P&gt;&lt;P&gt;Up to this time I used with Tower K60ND512 and K60FN MCUs. Are I need to use &lt;STRONG&gt;K60FX&lt;/STRONG&gt; MCU for MEM FlexBus? If 'YES', how can I update MCU type into already worked project from ND or FN to &lt;STRONG&gt;FX&lt;/STRONG&gt; type? There are any reference for change MCU type (from K40 to K60 for example) for Kinetis MCUs?&lt;/P&gt;&lt;P&gt;Are I need to change/update linker file?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;Evgeni.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 01 Nov 2015 06:55:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444103#M26160</guid>
      <dc:creator>evgenik</dc:creator>
      <dc:date>2015-11-01T06:55:51Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444104#M26161</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Evgeni,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regarding to the usage of of K60FN and K60FX. For this specific case you can use ony of them. K60FX features flex memory and K60FN does not, but this is a feature completely apart and it has no relation on using TWR-MEM with Flexbus.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regarding to the porting form K40 to K60, I strongly recommend to create a brand new project for K60 and copy/add all your source files. This is the cleanest way to port a project and the way the experts recommend us to do it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can take this specific Flexbus configuration from K40 to K60 and it should work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best regards,&lt;/P&gt;&lt;P&gt;Carlos&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Nov 2015 22:03:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444104#M26161</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2015-11-03T22:03:40Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444105#M26162</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Hi Carlos.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Thanks for your answer. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;1) Are I need to change/update K60 linker file for MRAM operations or enough only HW port and GPIO initialisation?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;2) I see different pinout configuration in your link example (AN4393.pdf) and datasheet "Using FlexBus Interface for Kinetis Microcontrollers" (that described later). What condition for select one from them or use as described in &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;"Using FlexBus Interface ..."?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;"Using FlexBus Interface for Kinetis Microcontrollers" example:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3334ca; font-family: 'courier new', courier;"&gt;// HW initialisation&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3334ca; font-size: 12px; font-family: 'courier new', courier;"&gt;// Enable the clock to the FlexBus&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: 'courier new', courier;"&gt;SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: 'courier new', courier;"&gt;&lt;SPAN style="color: #000000; font-family: 'courier new', courier; font-size: 12px;"&gt;/&lt;/SPAN&gt;&lt;SPAN style="font-family: 'courier new', courier; font-size: 12px; color: #3334ca;"&gt;/ FlexBus Clock not divided&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;SIM_CLKDIV1 |= SIM_CLKDIV1_OUTDIV3(0x0); &lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: 'courier new', courier;"&gt;&lt;SPAN style="color: #3334ca;"&gt;// Set the GPIO ports clocks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK |&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR11 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[18]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR16 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[17]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR17 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[16]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR18 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[15]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR0&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[14]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: 'courier new', courier;"&gt;PORTC_PCR1&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[13]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR2&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[12]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR4&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[11]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR5&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[10]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR6&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[9]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR7&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[8]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR8&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[7]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR9&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[6]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR10 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[5]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR2&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[4]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR3&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[3]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR4&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[2]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR5&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR6&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR20 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[31] used as d[7]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR21 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[30] used as d[6]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR22 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[29] used as d[5]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR23 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[28] used as d[4]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR12 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[27] used as d[3]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR13 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[26] used as d[2]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR14 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[25] used as d[1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR15 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ad[24] used as d[0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTB_PCR19 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_oe_b&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTC_PCR11 = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_rw_b&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR1&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_cs0_b&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;PORTD_PCR0&amp;nbsp; = PORT_PCR_MUX(5); &lt;SPAN style="color: #3334ca;"&gt;// fb_ale&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;#define&lt;/STRONG&gt; MRAM_START_ADDRESS(*(&lt;STRONG&gt;volatile unsigned char&lt;/STRONG&gt;*)(0x60000000))&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;FB_CSAR0 = (&lt;STRONG&gt;unsigned int&lt;/STRONG&gt;)&amp;amp;MRAM_START_ADDRESS; &lt;SPAN style="color: #3334ca;"&gt;//Set Base address&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: 'courier new', courier;"&gt;FB_CSCR0 = FB_CSCR_PS(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// 8-bit port&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | FB_CSCR_AA_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// auto-acknowledge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | FB_CSCR_WS(0x2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// 2 wait states&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: CourierStd;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;FB_CSMR0 = FB_CSMR_BAM(0x7)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// Set base address mask for 512K address space&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | FB_CSMR_V_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// Enable cs valid signal&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: CourierStd;"&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;For read and write test&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 9pt; font-family: CourierStd;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;uint8 wdata8 = 0x5A;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// data to write to mram&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt; font-family: 'courier new', courier;"&gt;uint8 rdata8;&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;SPAN style="color: #3334ca;"&gt;// variable to read mram&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;for(n=0x00000;n&amp;lt;0x000F;n++)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #3334ca;"&gt;// address offset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;{&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(&lt;STRONG&gt;vuint8&lt;/STRONG&gt;*)(&amp;amp;MRAM_START_ADDRESS + n) = wdata8;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rdata8 = 0x00;&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;SPAN style="color: #3334ca;"&gt;// clear data variable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rdata8 = (*(&lt;STRONG&gt;vuint8&lt;/STRONG&gt;*)(&amp;amp;MRAM_START_ADDRESS + n));&lt;BR /&gt;&lt;SPAN style="font-size: 9pt;"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="text-align: -webkit-auto;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-size: 12px; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Thanks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-size: 12px; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Evgeni&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Nov 2015 13:56:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444105#M26162</guid>
      <dc:creator>evgenik</dc:creator>
      <dc:date>2015-11-17T13:56:47Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444106#M26163</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Evgeni,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it depends on what you want to do with Flexbus if you need to edit linker file or not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- If you want to execute code from external MRAM or you need to reference specific data variables then you need to edit linker file.&lt;/P&gt;&lt;P&gt;- If you want just to save raw data it is not necessary to edit linker file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may find useful the following documents.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-101433"&gt;Relocating Code and Data Using the CW GCC Linker File for Kinetis&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-104433"&gt;Relocating Code and Data Using the KDS GCC Linker File for Kinetis&lt;/A&gt;​&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regarding the pinout. Please let me know where you find the different configurations. I did not get this part.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Carlos&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Nov 2015 21:17:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444106#M26163</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2015-11-17T21:17:50Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444107#M26164</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Nov 2015 18:47:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444107#M26164</guid>
      <dc:creator>evgenik</dc:creator>
      <dc:date>2015-11-18T18:47:50Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444108#M26165</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello I am trying to use MRAM module of towerk60f120m integrated on flexbus as extended RAM &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;what changes are required in linker file to use MRAM as extension of internal RAM(i.e. 128K).? compiler should able to store variable in MRAM automatically if internal SRAM goes out of memory&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Hardik Dave&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jul 2016 07:47:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444108#M26165</guid>
      <dc:creator>hardikdave</dc:creator>
      <dc:date>2016-07-15T07:47:41Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444109#M26166</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is no 'automatic' magic to do this.&amp;nbsp; 'section' directives can be added to the linker script and things like large arrays could be placed in such sections leaving RAM for the more ordinary stuff, or everything gets moved to MRAM.&amp;nbsp; Compiler places variables in data or bss sections normally.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I designed MRAM out of my system when I found a Refrigerator Strength Magnet, used by a near by reed switch,would damage the MRAM.&amp;nbsp; It did not just change bits, it destroyed some underlying bias mechanism destroying the device, in the failure report I got back from Everspin. :-(&amp;nbsp; Pay attention to the Gauss ratings and distance now in the data sheets.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jul 2016 12:44:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444109#M26166</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2016-07-15T12:44:52Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444110#M26167</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hardik,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the compiler is not the one who place variables in memory, it is the linker. Besides, the linker is used for many different processors with different memory sizes, and it is possible to have in your hardware any external memory and the linker is not aware of that. This is why it is used the linker file, here you can set the memory configurations that the linker must consider.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jul 2016 15:27:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444110#M26167</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2016-07-15T15:27:33Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444111#M26168</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;Thanks for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you have suggested I am trying to locate all my variables to external MRAM on &lt;STRONG&gt;tower kit k60F120M&lt;/STRONG&gt; module. I have changed linker file accordingly but I am getting hardfault while mqx init function execution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;can yo please look at attached linker file am I missing something? what else changes are required in mqx project to work with MRAM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Linker File&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/****************************************************************************************************************************************************/&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;ENTRY(__boot)&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;/* &lt;/P&gt;&lt;P&gt;using both, gnulib &amp;amp; ewl symbols&lt;/P&gt;&lt;P&gt;_cfm - to keep vectors.c variables&lt;/P&gt;&lt;P&gt;__init_hardware - must be used from bsp.a, not from librt.a&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;EXTERN(_cfm __init_hardware)&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;MEMORY&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vectorrom&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00000000, LENGTH = 0x00000400&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cfmprotrom&amp;nbsp; (R): ORIGIN = 0x00000400, LENGTH = 0x00000020&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00000420, LENGTH = 0x000FFBE0&amp;nbsp; /* Code + Const data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RWX): ORIGIN = 0x60000000, LENGTH = 0x00080000&amp;nbsp; /* DDR2 - RW data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RWX): ORIGIN = 0x1FFF0000, LENGTH = 0x00020000&amp;nbsp; /* SRAM - RW data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* kernel space starts after RAM variables (Location of MQX Kernel data + MQX heap) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_of_kd&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x6007FFF0, LENGTH = 0x00000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Boot stack reused by MQX Kernel data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bstack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x2000FA00, LENGTH = 0x00000200&amp;nbsp; /* Boot stack */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_bstack&amp;nbsp; (RW): ORIGIN = 0x2000FC00, LENGTH = 0x00000000&amp;nbsp; /* Boot stack end address requires 4B alignment */&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;&lt;/P&gt;&lt;P&gt;SECTIONS&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __INTERNAL_SRAM_BASE&amp;nbsp; = 0x1FFF0000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __INTERNAL_SRAM_SIZE&amp;nbsp; = 0x00020000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __INTERNAL_FLASH_BASE = 0x00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __INTERNAL_FLASH_SIZE = 0x00100000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __INTERNAL_FLEXNVM_BASE = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __INTERNAL_FLEXNVM_SIZE = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __UNCACHED_DATA_END&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x2000FFF0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_MRAM_BASE&amp;nbsp; = 0x60000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_MRAM_SIZE&amp;nbsp; = 0x00080000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_MRAM_ROM_BASE = 0x60000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_MRAM_ROM_SIZE = 0x00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_MRAM_RAM_BASE = 0x60000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_MRAM_RAM_SIZE = 0x00080000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_DDR2_RAM_BASE = 0x00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_DDR2_RAM_SIZE = 0x00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_LCD_BASE = 0xA0000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_LCD_SIZE = 0x1FFFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __EXTERNAL_LCD_DC_BASE = 0xA0010000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* MQX link time configurations */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DEFAULT_PROCESSOR_NUMBER = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DEFAULT_INTERRUPT_STACK_SIZE = 1024;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __KERNEL_DATA_VERIFY_ENABLE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Test SDRAM read/write */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flashx configurations */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __FLASHX_SECT_SIZE = 0x1000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .vectors :&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; __vector_table = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __VECTOR_TABLE_ROM_START = __vector_table;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP(*(.vectors_rom))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; vectorrom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .cfmprotect :&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; KEEP(*(.cfmconfig))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; cfmprotrom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .text :&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; *(KERNEL)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(S_BOOT)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(IPSUM)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.text*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.eh_frame)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.init))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.fini))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.rodata*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.rdata*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.exception)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_start__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_end__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __sinit__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ARM.extab&amp;nbsp;&amp;nbsp; : { *(.ARM.extab* .gnu.linkonce.armextab.*) } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ARM : {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exidx_start = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.ARM.exidx*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exidx_end = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ctors :&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; __CTOR_LIST__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* gcc uses crtbegin.o to find the start of&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the constructors, so we make sure it is&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; first.&amp;nbsp; Because this is a wildcard, it&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doesn't matter if the user does not&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; actually link against crtbegin.o; the&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; linker won't look for a file to match a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wildcard.&amp;nbsp; The wildcard also means that it&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doesn't matter which directory crtbegin.o&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is in.&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*crtbegin.o(.ctors))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* We don't want to include the .ctor section from&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from the crtend.o file until after the sorted ctors.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The .ctor section from the crtend file contains the&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end of ctors marker and it must be last */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(SORT(.ctors.*)))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.ctors))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __CTOR_END__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dtors :&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; __DTOR_LIST__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*crtbegin.o(.dtors))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(SORT(.dtors.*)))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.dtors))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DTOR_END__ = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .preinit_array :&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; PROVIDE_HIDDEN (__preinit_array_start = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.preinit_array*))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROVIDE_HIDDEN (__preinit_array_end = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .init_array :&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; PROVIDE_HIDDEN (__init_array_start = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(SORT(.init_array.*)))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.init_array*))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROVIDE_HIDDEN (__init_array_end = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .fini_array :&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; PROVIDE_HIDDEN (__fini_array_start = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(SORT(.fini_array.*)))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP (*(.fini_array*))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROVIDE_HIDDEN (__fini_array_end = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .data :&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; . = ALIGN(128);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* create _sdata symbol which keep &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; relocation(execution) address of data start */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sdata = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __VECTOR_TABLE_RAM_START = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP(*(.vectors_ram))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_DATA = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_DATA = .;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SDATA = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.sdata*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SDATA = .;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE&amp;nbsp; = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE_ = __SDA_BASE;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* create _edata symbol which keep &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; relocation(execution) address of data end */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _edata = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; ram AT&amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* fill "__S_romp" table with memory region(s) to perform "rom to ram copy" */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .romp : &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; __S_romp = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LONG(LOADADDR(.data)); /* source (rom) address */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LONG(_sdata); /* target (ram) address */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LONG(_edata - _sdata); /* size */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* null terminated */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LONG(0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LONG(0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LONG(0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .rom_end_data :&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; _rom_data_end = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .bss : &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; . = ALIGN(0x10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SBSS = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.sbss*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(SCOMMON)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SBSS = .;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_BSS = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __bss_start__ = __START_BSS;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.bss*)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(COMMON)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_BSS = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __bss_end__ = __END_BSS;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; ram&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* move "location counter" to next relocated address */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x10);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; .kernel_data : &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; __KERNEL_DATA_START = ALIGN(0x10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .end_of_kernel_data :&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; __KERNEL_DATA_END = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __KERNEL_AREA_END = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; end_of_kd&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .boot_stack :&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; _stack_end = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; bstack&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .end_of_boot_stack :&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; _stack_addr&amp;nbsp; = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _estack = _stack_addr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SP_INIT = _stack_addr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BOOT_STACK_ADDRESS = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; end_bstack&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .sram_data :&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; /* create _sdata symbol which keep &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; relocation(execution) address of data start */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(512);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BDT_BASE = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.usb_bdt)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BDT_END = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SRAM_POOL = .;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __UNCACHED_DATA_START = .;&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;gt; sram&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* flashx working area spans across the whole rest of Flash memory */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _flashx_start = _rom_data_end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __FLASHX_START_ADDR = ((_flashx_start + __FLASHX_SECT_SIZE - 1) / __FLASHX_SECT_SIZE) * __FLASHX_SECT_SIZE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __FLASHX_END_ADDR = __INTERNAL_FLASH_BASE + __INTERNAL_FLASH_SIZE;&lt;/P&gt;&lt;P&gt;} &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/****************************************************************************************************************************************************/&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Hardik&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jul 2016 04:54:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444111#M26168</guid>
      <dc:creator>hardikdave</dc:creator>
      <dc:date>2016-07-19T04:54:53Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444112#M26169</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;On which line of initialization are you having the fault. Most linkely you are attempting to access MRAM before configuring Flexbus.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jul 2016 18:30:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444112#M26169</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2016-07-19T18:30:49Z</dc:date>
    </item>
    <item>
      <title>Re: Code examples for MRAM use with K60?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444113#M26170</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Carlos,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In our custom application we have requirement to add more RAM which has K60 controller.&lt;/P&gt;&lt;P&gt;I am currently evaluating MRAM option with the help of Tower kit K60F120M with MRAM module&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. flexbus is initialised in init_hw.c as available in mqx 4.2 (no changes)&lt;/P&gt;&lt;P&gt;2. linker is changed which is attached as above post&lt;/P&gt;&lt;P&gt;3. in mqx.c file at time of mqx_init system gets restarted (external mram is not accessible from mqx.c file).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: &lt;/P&gt;&lt;P&gt;1. with the default linker file we can able to access mram from TASK just like EEPROM&lt;/P&gt;&lt;P&gt;2. with attached linker file variables pointing to external mram is not accessible from mqx_init function due to which it restarts&lt;/P&gt;&lt;P&gt;3. it seems flexbus comes into running mode at time of task startup only.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and regards&lt;/P&gt;&lt;P&gt;Hardik Dave&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jul 2016 08:39:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Code-examples-for-MRAM-use-with-K60/m-p/444113#M26170</guid>
      <dc:creator>hardikdave</dc:creator>
      <dc:date>2016-07-20T08:39:17Z</dc:date>
    </item>
  </channel>
</rss>

