Crosswork example project will not compile

dibosco wrote on Monday, June 24, 2013:

Folks,

I have taken an LPC1788 project which has been ported for Crossworks and tried to get it to compile. However, I get the following errors:

/opt/Rowley/ARM2.07/gcc/bin/ld: THUMB Flash Debug/ppcu.elf section `.text.libc' will not fit in region `UNPLACED_SECTIONS'
/opt/Rowley/ARM2.07/gcc/bin/ld: section .text.libc loaded at [00000000,0000012b] overlaps section .vectors loaded at [00000000,000000e3]
/opt/Rowley/ARM2.07/gcc/bin/ld: section .init loaded at [000000e4,00000283] overlaps section .text.libc loaded at [00000000,0000012b]
/opt/Rowley/ARM2.07/gcc/bin/ld: section .text.libdebugio_bkpt loaded at [0000012c,00000143] overlaps section .init loaded at [000000e4,00000283]
/opt/Rowley/ARM2.07/gcc/bin/ld: region `UNPLACED_SECTIONS' overflowed by 329 bytes

The map file tells me .text.libc is in lib/libc_v7m_t_le.a and another couple of, what seems to me, to be precompiled libraries. .init loaded and .text.libdebugio_bkpt are also in .a files.

This `UNPLACED_SECTIONS’ error, is apparently to do with the issue reported above where  .text.libc  has not been defined in the linker file. 

Does anyone know why this error is occurring in something that has already been successfully ported to Crossworks please? More importantly, I suppose, is how I can fix it?

Many thanks.

dibosco wrote on Monday, June 24, 2013:

I should add, please don’t say add the section to the linker file because:

a. I wouldn’t know where to put the section and
b. I’m not even sure *how* to modify linker files. I’ve never had to touch them before.

Thanks

rtel wrote on Monday, June 24, 2013:

UNPLACED_SECTIONS is, I think there catch sections that have be declared but not placed anywhere.  Sections should be placed in the linker file/section placement script - but it would be extremely rare that you would need to edit one of those files, jut make sure the files you are using are correct for the chip you have selected.  .

It would seem something is mixed up here.  I would guess that .text.libc is a section declared inside a C library, which I presume will be from from the Rowley installation itself.  If this is a Rowley declared section, then I would also expect the Rowley declared linker/placement files to place it as required.

If you open the Symbol Browser form the Tools menu you should be able to see the sections, and the allocation of symbols to sections, and presumably you will see a .text section (where you executable code lives) but not a .text.libc section hence the issue.

Sorry I can’t really provide anything concrete on what to edit to fix the problem (probably the project options), but suggest:

1) Ensuring you Rowley’s LPC1788 package installed.  This will be a separate installation from the IDE/compiler installation, and performed from within the IDE itself (look for “Package Manager” in the menus).

2) Create a new project that targets the LPC1788 using the new project wizard, or open an example project provided by Rowley for that chip, then copy the library and linker settings from the new project into you existing project.

Regards.

dibosco wrote on Monday, June 24, 2013:

Hi Richard,

Thanks for the suggestions.

I understand the UNPLACED_SECTIONS to be exactly what you described and I assume the same in that it must declared in a library.

I had already tried both your ideas actually. I have long ago installed the LPC1788 package and built a little run-to-complete project. Plus I recreated, from scratch, the FreeRTOS project.

On the one hand I would think this is more of a Rowley issue than a FreeRTOS one, but I had seen one rather similar post from a few years ago where the original poster was seeing very similar things, but he never posted a solution.

Maybe I do need to ask Rowley.

dibosco wrote on Monday, June 24, 2013:

Hmmm, actually, when I went back to the run to complete program it was actually for an LPC1766. I am wondering whether there’s something funky going on specifically with the LPC1788. I will definitely contact Rowley to ask about this.

dibosco wrote on Tuesday, June 25, 2013:

Upgrading to version 2.3 of Crossworks did the trick!