Recently we have updated the armgcc toolchain version to 8-2018-q4-major, and we found that our previous memory definition way in linker file is invalid.
Previously, we are using below LENGTH() way to calculate the origin for a defined memory:
IMAGE_START_ADDR = DEFINED(XIP_IMAGE) ? 0x10000000 : 0x00000000;DATA_START_ADDR = DEFINED(XIP_IMAGE) ? 0x00000004 : 0x20000000;TEXT_SECTION_SIZE = DEFINED(XIP_IMAGE) ? 0x00FFFE3C : 0x0002FE3C;DATA_SECTION_SIZE = DEFINED(XIP_IMAGE) ? 0x0002FFFC : 0x00028000;
/* Specify the memory areas */MEMORY{ m_interrupts (RX) : ORIGIN = IMAGE_START_ADDR, LENGTH = 0x000001C4 m_text (RX) : ORIGIN = IMAGE_START_ADDR + LENGTH(m_interrupts), LENGTH = TEXT_SECTION_SIZE m_data (RW) : ORIGIN = DATA_START_ADDR, LENGTH = DATA_SECTION_SIZE m_usb_sram (RW) : ORIGIN = 0x40100000, LENGTH = 0x00002000}
AND there will show build error as below:
/usr/local/gcc-arm-none-eabi-8-2018-q4-major/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: invalid origin for memory region m_text
After replace the LENGTH(m_interrupts) with Immediate 0x000001C4, the compile error gone.
No such issue with armgcc version 7-2018-q2-update, so, why gcc8 cannot support the way in memory definition?
From the rteconfig file it looks like you have selected the component Cclass="Board Support" Cgroup="LED" with Capiversion="1.0.0", however there is nothing listed under section.Technically the reason why the compiler does not find the Board_LED.h file is due to the fact that this file is located in the Keil.MDK-Middleware pack. Could you please trial installing that pack? Vidmate app download Let me know