<?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>LPCXpresso IDE中的主题 Crp</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Crp/m-p/594983#M31199</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by murnesty on Mon Nov 21 20:48:57 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using LPC2368 and red suite nxp 4.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have problem on using CRP. It prompt error "cannot move location counter backwards". &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I had unchecked manage linker script so that I can customize to what I need. It work fine before I copy&amp;amp;paste linker script from the linker script that i temporarily checked manage linker script and enable CRP. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is part my main.c&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/*
===============================================================================
 Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : main.c
 Author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : $(author)
 Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :
 Copyright&amp;nbsp;&amp;nbsp; : $(copyright)
 Description : main definition
===============================================================================
*/

#include &amp;lt;cr_section_macros.h&amp;gt;
#include &amp;lt;NXP/crp.h&amp;gt;

// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and linker file:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/*
* GENERATED FILE - DO NOT EDIT
* (C) Code Red Technologies Ltd, 2008-10
* Generated linker script file for LPC2368
* Created from nxp_lpc23_c.ld (vRed Suite 3 (NXP Edition) v3.6 (3 [Build 318] [11/04/2011] ))
* By Red Suite 3 (NXP Edition) v3.6.3 [Build 318] [11/04/2011]&amp;nbsp; on Wed Jul 06 21:20:14 SGT 2011
*/


INCLUDE "Test_Custom_lib.ld"
INCLUDE "Test_Custom_mem.ld"

ENTRY(_start)

SECTIONS
{

/* MAIN TEXT SECTION */
.text : ALIGN(4)
{
FILL(0xff)
KEEP(*(.isr_vector))

/* Global Section Table */
. = ALIGN(4) ;
__section_table_start = .;
__data_section_table = .;
LONG(LOADADDR(.data));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data)) ;
LONG(&amp;nbsp; SIZEOF(.data));
LONG(LOADADDR(.data_RAM2));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data_RAM2)) ;
LONG(&amp;nbsp; SIZEOF(.data_RAM2));
LONG(LOADADDR(.data_RAM3));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data_RAM3)) ;
LONG(&amp;nbsp; SIZEOF(.data_RAM3));
LONG(LOADADDR(.data_RAM4));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data_RAM4)) ;
LONG(&amp;nbsp; SIZEOF(.data_RAM4));
__data_section_table_end = .;
__bss_section_table = .;
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss));
LONG(&amp;nbsp; SIZEOF(.bss));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss_RAM2));
LONG(&amp;nbsp; SIZEOF(.bss_RAM2));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss_RAM3));
LONG(&amp;nbsp; SIZEOF(.bss_RAM3));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss_RAM4));
LONG(&amp;nbsp; SIZEOF(.bss_RAM4));
__bss_section_table_end = .;
__section_table_end = . ;
/* End of Global Section Table */


*(.after_vectors*)

/* Code Read Protect data */
. = 0x000001FC ;
PROVIDE(__CRP_WORD_START__ = .) ;
KEEP(*(.crp))
PROVIDE(__CRP_WORD_END__ = .) ;
ASSERT(!(__CRP_WORD_START__ == __CRP_WORD_END__), "Linker CRP Enabled, but no CRP_WORD provided within application");
/* End of Code Read Protect */

*(.text*)
*(.rodata .rodata.*)
. = ALIGN(4);

} &amp;gt; MFlash512

/*
 * for exception handling/unwind - some Newlib functions (in common
 * with C++ and STDC++) use this.
 */
.ARM.extab : ALIGN(4)
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} &amp;gt; MFlash512
__exidx_start = .;

.ARM.exidx : ALIGN(4)
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} &amp;gt; MFlash512
__exidx_end = .;

_etext = .;


.data_RAM2 : ALIGN(4)
{
&amp;nbsp;&amp;nbsp; FILL(0xff)
*(.data.$RAM2*)
*(.data.$RAM_ETH_16*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_ETH_16 AT&amp;gt;MFlash512

.data_RAM3 : ALIGN(4)
{
&amp;nbsp;&amp;nbsp; FILL(0xff)
*(.data.$RAM3*)
*(.data.$RAM_USB_8*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_USB_8 AT&amp;gt;MFlash512

.data_RAM4 : ALIGN(4)
{
&amp;nbsp;&amp;nbsp; FILL(0xff)
*(.data.$RAM4*)
*(.data.$RAM_RTC_2*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_RTC_2 AT&amp;gt;MFlash512

.SDWriteBlock (NOLOAD):
&amp;nbsp; {
*(.SDWriteBlock)
} &amp;gt; WriteBlockRAM

.SDReadBlock (NOLOAD):
{
*(.SDReadBlock)
} &amp;gt; ReadBlockRAM

/* MAIN DATA SECTION */

.uninit_RESERVED : ALIGN(4)
{
KEEP(*(.bss.$RESERVED*))
} &amp;gt; Ram32

.data : ALIGN(4)
{
FILL(0xff)
_data = .;
*(vtable)
*(.data*)
. = ALIGN(4) ;
_edata = .;
} &amp;gt; Ram32 AT&amp;gt;MFlash512


.bss_RAM2 : ALIGN(4)
{
*(.bss.$RAM2*)
*(.bss.$RAM_ETH_16*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_ETH_16

.bss_RAM3 : ALIGN(4)
{
*(.bss.$RAM3*)
*(.bss.$RAM_USB_8*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_USB_8

.bss_RAM4 : ALIGN(4)
{
*(.bss.$RAM4*)
*(.bss.$RAM_RTC_2*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_RTC_2

/* MAIN BSS SECTION */
.bss : ALIGN(4)
{
_bss = .;
*(.bss*)
*(COMMON)
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
} &amp;gt; Ram32

PROVIDE(_pvHeapStart = .);
PROVIDE(_vStackTop = __top_Ram32 - 0);
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The error is : &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"Test_Custom_mem.ld:27 cannot move location counter backwards (from 000002a0 to 000001fc)"&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 01:32:00 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T01:32:00Z</dc:date>
    <item>
      <title>Crp</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Crp/m-p/594983#M31199</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by murnesty on Mon Nov 21 20:48:57 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using LPC2368 and red suite nxp 4.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have problem on using CRP. It prompt error "cannot move location counter backwards". &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I had unchecked manage linker script so that I can customize to what I need. It work fine before I copy&amp;amp;paste linker script from the linker script that i temporarily checked manage linker script and enable CRP. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is part my main.c&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/*
===============================================================================
 Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : main.c
 Author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : $(author)
 Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :
 Copyright&amp;nbsp;&amp;nbsp; : $(copyright)
 Description : main definition
===============================================================================
*/

#include &amp;lt;cr_section_macros.h&amp;gt;
#include &amp;lt;NXP/crp.h&amp;gt;

// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and linker file:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/*
* GENERATED FILE - DO NOT EDIT
* (C) Code Red Technologies Ltd, 2008-10
* Generated linker script file for LPC2368
* Created from nxp_lpc23_c.ld (vRed Suite 3 (NXP Edition) v3.6 (3 [Build 318] [11/04/2011] ))
* By Red Suite 3 (NXP Edition) v3.6.3 [Build 318] [11/04/2011]&amp;nbsp; on Wed Jul 06 21:20:14 SGT 2011
*/


INCLUDE "Test_Custom_lib.ld"
INCLUDE "Test_Custom_mem.ld"

ENTRY(_start)

SECTIONS
{

/* MAIN TEXT SECTION */
.text : ALIGN(4)
{
FILL(0xff)
KEEP(*(.isr_vector))

/* Global Section Table */
. = ALIGN(4) ;
__section_table_start = .;
__data_section_table = .;
LONG(LOADADDR(.data));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data)) ;
LONG(&amp;nbsp; SIZEOF(.data));
LONG(LOADADDR(.data_RAM2));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data_RAM2)) ;
LONG(&amp;nbsp; SIZEOF(.data_RAM2));
LONG(LOADADDR(.data_RAM3));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data_RAM3)) ;
LONG(&amp;nbsp; SIZEOF(.data_RAM3));
LONG(LOADADDR(.data_RAM4));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.data_RAM4)) ;
LONG(&amp;nbsp; SIZEOF(.data_RAM4));
__data_section_table_end = .;
__bss_section_table = .;
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss));
LONG(&amp;nbsp; SIZEOF(.bss));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss_RAM2));
LONG(&amp;nbsp; SIZEOF(.bss_RAM2));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss_RAM3));
LONG(&amp;nbsp; SIZEOF(.bss_RAM3));
LONG(&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDR(.bss_RAM4));
LONG(&amp;nbsp; SIZEOF(.bss_RAM4));
__bss_section_table_end = .;
__section_table_end = . ;
/* End of Global Section Table */


*(.after_vectors*)

/* Code Read Protect data */
. = 0x000001FC ;
PROVIDE(__CRP_WORD_START__ = .) ;
KEEP(*(.crp))
PROVIDE(__CRP_WORD_END__ = .) ;
ASSERT(!(__CRP_WORD_START__ == __CRP_WORD_END__), "Linker CRP Enabled, but no CRP_WORD provided within application");
/* End of Code Read Protect */

*(.text*)
*(.rodata .rodata.*)
. = ALIGN(4);

} &amp;gt; MFlash512

/*
 * for exception handling/unwind - some Newlib functions (in common
 * with C++ and STDC++) use this.
 */
.ARM.extab : ALIGN(4)
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} &amp;gt; MFlash512
__exidx_start = .;

.ARM.exidx : ALIGN(4)
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} &amp;gt; MFlash512
__exidx_end = .;

_etext = .;


.data_RAM2 : ALIGN(4)
{
&amp;nbsp;&amp;nbsp; FILL(0xff)
*(.data.$RAM2*)
*(.data.$RAM_ETH_16*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_ETH_16 AT&amp;gt;MFlash512

.data_RAM3 : ALIGN(4)
{
&amp;nbsp;&amp;nbsp; FILL(0xff)
*(.data.$RAM3*)
*(.data.$RAM_USB_8*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_USB_8 AT&amp;gt;MFlash512

.data_RAM4 : ALIGN(4)
{
&amp;nbsp;&amp;nbsp; FILL(0xff)
*(.data.$RAM4*)
*(.data.$RAM_RTC_2*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_RTC_2 AT&amp;gt;MFlash512

.SDWriteBlock (NOLOAD):
&amp;nbsp; {
*(.SDWriteBlock)
} &amp;gt; WriteBlockRAM

.SDReadBlock (NOLOAD):
{
*(.SDReadBlock)
} &amp;gt; ReadBlockRAM

/* MAIN DATA SECTION */

.uninit_RESERVED : ALIGN(4)
{
KEEP(*(.bss.$RESERVED*))
} &amp;gt; Ram32

.data : ALIGN(4)
{
FILL(0xff)
_data = .;
*(vtable)
*(.data*)
. = ALIGN(4) ;
_edata = .;
} &amp;gt; Ram32 AT&amp;gt;MFlash512


.bss_RAM2 : ALIGN(4)
{
*(.bss.$RAM2*)
*(.bss.$RAM_ETH_16*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_ETH_16

.bss_RAM3 : ALIGN(4)
{
*(.bss.$RAM3*)
*(.bss.$RAM_USB_8*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_USB_8

.bss_RAM4 : ALIGN(4)
{
*(.bss.$RAM4*)
*(.bss.$RAM_RTC_2*)
&amp;nbsp;&amp;nbsp; . = ALIGN(4) ;
} &amp;gt; RAM_RTC_2

/* MAIN BSS SECTION */
.bss : ALIGN(4)
{
_bss = .;
*(.bss*)
*(COMMON)
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
} &amp;gt; Ram32

PROVIDE(_pvHeapStart = .);
PROVIDE(_vStackTop = __top_Ram32 - 0);
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The error is : &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"Test_Custom_mem.ld:27 cannot move location counter backwards (from 000002a0 to 000001fc)"&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:32:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Crp/m-p/594983#M31199</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:32:00Z</dc:date>
    </item>
    <item>
      <title>Re: Crp</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Crp/m-p/594984#M31200</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Tue Nov 22 03:31:37 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;On LPC23xx, the CRP is based at address 0x1fc. The linker script is placing your vector table (.isr_vectors), the section table and anything you have placed into the section named ".after_vectors" before this location. However, in your code, that data is too large to fit into the space. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Therefore, you have &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- added more vectors into the vector table (the .isr_vector section)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- put more data into the .after_vectors section&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You will need to remove data from the above sections until the linker can place the CRP at 0x1fc.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:32:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Crp/m-p/594984#M31200</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:32:01Z</dc:date>
    </item>
  </channel>
</rss>

