So, for the first time in 5 years, I've built my own toolchain (via
summon-arm-toolchain). Kudos to those guys for patching everything and
keeping track of the right knobs so it actually builds for once.
Unfortunately, the output is useless. Same source, same makefile, same
startup, same syscalls, same link script, but the program just hangs
(no uart output) on my lpc2148 now (it appears to build & link just
fine with either toolchain).
The differences are: arm-elf-gcc v4.3.2 was upgraded to arm-none-eabi
v4.5.1, and newlib from around 1.15 to 1.18. I'm sure binutils got
bumped too.
I d/l'd sourcery lite just for comparison, and got the same output
(none) as the custom built arm-none-eabi.
Poof! Disappointing. I can't be the only one this has happened to...
Steve
(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )Hi Steve
Maybe your linker file needs to be updated. I've pasted an example I use
below.
-Scott
/* Link file for LPC2148 */
OUTPUT_FORMAT ("elf32-littlearm")
MEMORY
{
flash (rx) : ORIGIN = 0x00000000, LENGTH = 480k
config (r) : ORIGIN = 0x00078000, LENGTH = 4k
ram (rw) : ORIGIN = 0x40000000, LENGTH = 32k - 32
usbram (rw) : ORIGIN = 0x7FD00000, LENGTH = 8K
}
/* allow for space at top for IAP */
__stack_end__ = 0x40000000 + 32K - 36;
SECTIONS
{
. = 0;
startup :
{
__start_of_startup__ = .;
*(.startup)
__end_of_startup__ = .;
} >flash
. = ALIGN(4);
prog :
{
__start_of_text__ = .;
__start_of_prog__ = .;
*(.text)
__end_of_prog__ = .;
__start_of_rodata__ = .;
*(.rodata)
*(.rodata*)
__end_of_rodata__ = .;
__start_of_glue7__ = .;
*(.glue_7)
*(.glue_7t)
__end_of_glue7__ = .;
} >flash
__end_of_text__ = .;
.config_ROM :
{
__config_beg__ = .;
*(CFG_DATA)
__config_end__ = .;
} >config
.protected :
{
__protected_beg__ = .;
*(.protected)
__protected_end__ = .;
} >ram
.data :
{
__data_beg__ = .;
*(.data)
__data_end__ = .;
} >ram AT>flash
.bss :
{
__bss_beg__ = .;
*(.bss)
} >ram
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections. */
. = ALIGN(32 / 8);
/DISCARD/ : { *(.eh_frame) }
/DISCARD/ : { *(.note.GNU-stack) }
. = ALIGN(32 / 8);
_end = .;
_bss_end__ = . ;
__bss_end__ = . ;
__heap_beg__ = .;
__heap_end__ = .;
__end__ = . ;
PROVIDE (end = .);
.usbram (NOLOAD):
{
__usbram_beg__ = .;
*(.dmaram)
__usbram_end__ = .;
} >usbram
.ARM.attributes 0 : { *(.ARM.attributes) }
.comment 0 : { *(.comment) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_arranges 0 : { *(.debug_arranges) }
.debug_ranges 0 : { *(.debug_ranges) }
.debug_loc 0 : { *(.debug_loc) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_pubtypes 0 : { *(.debug_pubtypes) }
.debug_str 0 : { *(.debug_str) }
.debug_frame 0 : { *(.debug_frame) }
.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
} /* end of SECTIONS */
--- In l..., Steve Franks
wrote:
>
> So, for the first time in 5 years, I've built my own toolchain (via
> summon-arm-toolchain). Kudos to those guys for patching everything and
> keeping track of the right knobs so it actually builds for once.
>
> Unfortunately, the output is useless. Same source, same makefile, same
> startup, same syscalls, same link script, but the program just hangs
> (no uart output) on my lpc2148 now (it appears to build & link just
> fine with either toolchain).
>
> The differences are: arm-elf-gcc v4.3.2 was upgraded to arm-none-eabi
> v4.5.1, and newlib from around 1.15 to 1.18. I'm sure binutils got
> bumped too.
>
> I d/l'd sourcery lite just for comparison, and got the same output
> (none) as the custom built arm-none-eabi.
>
> Poof! Disappointing. I can't be the only one this has happened to...
>
> Steve
>

(You need to be a member of lpc2000 -- send a blank email to lpc2000-subscribe@yahoogroups.com )