invalid character '#' when compiling

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

invalid character '#' when compiling

2,526 Views
johannesheupel
Contributor I

When trying to compile this simple code:

#include "mbed.h"

DigitalOut myled(LED1);
nt main() {
while(1) {
myled = 1;
wait(0.2);
myled = 0;
wait(0.2);
}
}

I get the following error:

d:/nxp/mcuxpressoide_10.1.1_606/ide/tools/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/ld.exe:C:\Users\Johannes\Documents\MCUXpressoIDE_10.1.1_606\workspace\JCBTest1\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\LPC1768.ld:2: ignoring invalid character `#' in expression
d:/nxp/mcuxpressoide_10.1.1_606/ide/tools/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/ld.exe:C:\Users\Johannes\Documents\MCUXpressoIDE_10.1.1_606\workspace\JCBTest1\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\LPC1768.ld:2: syntax error
collect2.exe: error: ld returned 1 exit status

Any ideas on why?

0 Kudos
6 Replies

1,927 Views
johannesheupel
Contributor I

Not sure how I can upload a zip here, so I added it to a webserver location. Download a zipped version from:

http://www.agra-gps.com/download/JCBTest1.zip 

This project was created on mbed.org and then exported using the LCPXpresso option.

THANKS for your help!!

0 Kudos

1,927 Views
thefallguy
Contributor IV

I think I see what you are trying to do, but it isn't going to work (at least the way you are trying).

Linker scripts ar NOT pre-processed so you cannot use #define etc. To define a symbol you need to do something like this:

MBED_APP_START = 0 ;

MBED_APP_SIZE = 512k ;

I don't know of a way of defining a symbol if it doesn't exist, but you can define a different symbol. e.g.

MBED_APP_START = DEFINED(MBED_APP_START_INPUT) ? MBED_APP_START_INPUT : 0x0 ;

0 Kudos

1,927 Views
johannesheupel
Contributor I

Thanks but I guess I am not seeing anything wrong. Does the compiler not understand #if or # define statements???

I even took out the first 6 lines, yet I still get the error WITHOUT any # sign in the .ld file....

Here is the original LPC1768.ld content:

/* Linker script for mbed LPC1768 */
#if !defined(MBED_APP_START)
#define MBED_APP_START 0x00000000
#endif

#if !defined(MBED_APP_SIZE)
#define MBED_APP_SIZE 512K
#endif
/* Linker script to configure memory regions. */
MEMORY
{
FLASH (rx) : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE
RAM (rwx) : ORIGIN = 0x100000C8, LENGTH = (32K - 0xC8 - 32) /* topmost 32 bytes used by IAP functions */

USB_RAM(rwx) : ORIGIN = 0x2007C000, LENGTH = 16K
ETH_RAM(rwx) : ORIGIN = 0x20080000, LENGTH = 16K
}

/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/
ENTRY(Reset_Handler)

SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
/* Code Read Protect data */
. = 0x000002FC ;
KEEP(*(.CRPSection))
/* End of Code Read Protect */
*(.text*)

KEEP(*(.init))
KEEP(*(.fini))

/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)

/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)

*(.rodata*)

KEEP(*(.eh_frame*))


} > FLASH

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH
__exidx_end = .;

__etext = .;

.data : AT (__etext)
{
__data_start__ = .;
Image$$RW_IRAM1$$Base = .;
*(vtable)
*(.data*)

. = ALIGN(4);
/* preinit data */
PROVIDE (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE (__preinit_array_end = .);

. = ALIGN(4);
/* init data */
PROVIDE (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE (__init_array_end = .);


. = ALIGN(4);
/* finit data */
PROVIDE (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE (__fini_array_end = .);

. = ALIGN(4);
/* All data end */
__data_end__ = .;

} > RAM


.bss :
{
__bss_start__ = .;
*(.bss*)
*(COMMON)
__bss_end__ = .;
Image$$RW_IRAM1$$ZI$$Limit = . ;
} > RAM


.heap :
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM

/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy :
{
*(.stack)
} > RAM

/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")


/* Code can explicitly ask for data to be
placed in these higher RAM banks where
they will be left uninitialized.
*/
.AHBSRAM0 (NOLOAD):
{
Image$$RW_IRAM2$$Base = . ;
*(AHBSRAM0)
Image$$RW_IRAM2$$ZI$$Limit = .;
} > USB_RAM

.AHBSRAM1 (NOLOAD):
{
Image$$RW_IRAM3$$Base = . ;
*(AHBSRAM1)
Image$$RW_IRAM3$$ZI$$Limit = .;
} > ETH_RAM
}

0 Kudos

1,927 Views
thefallguy
Contributor IV

Can you post your entire project here?

0 Kudos

1,927 Views
Alice_Yang
NXP TechSupport
NXP TechSupport

Hi Johannes Heupel,

Yes, as Fall Guy said, pleaes check the file of LPC1768.ld.


Have a great day,
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,927 Views
thefallguy
Contributor IV

The error is reported in the linker script (.ld file). not your C source file.

0 Kudos