Fork of mbed-src file paths change. LPC1114FN28 use only.
Fork of mbed-src by
Information
この情報は2013/10/28時点での解決方法です。
現在はmbed-src、標準ライブラリで問題なくコンパイルが可能です。
・使う物
LPC1114FN28
mbed SDK
LPC1114FN28でmbed-SDKのLibraryを使うとCompile出来ない。(2013/10/28)
パスが通ってないだけのようなのでファイルを以下に移動する。
mbed-src\targets\cmsis\TARGET_NXP\TARGET_LPC11XX_11CXX\ mbed-src\targets\cmsis\TARGET_NXP\TARGET_LPC11XX_11CXX\TARGET_LPC11XX\ |
にあるファイルをすべて
mbed-src\targets\cmsis\TARGET_NXP\ |
へ移動
mbed-src\targets\cmsis\TARGET_NXP\TARGET_LPC11XX_11CXX\にある
TOOLCHAIN_ARM_MICRO |
をフォルダごと
mbed-src\targets\cmsis\TARGET_NXP\ |
へ移動
mbed-src\targets\hal\TARGET_NXP\TARGET_LPC11XX_11CXX\ mbed-src\targets\hal\TARGET_NXP\TARGET_LPC11XX_11CXX\TARGET_LPC11XX\ |
にあるファイルをすべて
mbed-src\targets\hal\TARGET_NXP\ |
へ移動
移動後は以下のような構成になると思います。
※不要なファイルは削除してあります。
ファイルの移動が面倒なので以下に本家からフォークしたライブラリを置いておきます。
Import librarymbed-src-LPC1114FN28
Fork of mbed-src file paths change. LPC1114FN28 use only.
エラーが出力される場合
"TOOLCHAIN_ARM_MICRO"が無いとエラーになる。
Error: Undefined symbol _initial_sp (referred from entry2.o). Error: Undefined symbol _heap_base (referred from malloc.o). Error: Undefined symbol _heap_limit (referred from malloc.o). |
LPC1114FN28はMicrolibを使ってCompileされるため上記のエラーになるようです。
Diff: targets/cmsis/TARGET_Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/MKL25Z4.ld
- Revision:
- 43:b3acfef78949
- Parent:
- 42:7ca0bbba899b
--- a/targets/cmsis/TARGET_Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/MKL25Z4.ld Sun Oct 27 16:30:04 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,197 +0,0 @@ -/* -***************************************************************************** -** -** File : KL25Z128M4_flash.ld -** -** Default linker command file for Flash targets -** -***************************************************************************** -*/ -/* Entry Point */ -ENTRY(__thumb_startup) - -/* Highest address of the user mode stack */ -_estack = 0x20003000; /* end of SRAM */ -__SP_INIT = _estack; - -/* Generate a link error if heap and stack don't fit into RAM */ -__heap_size = 0x400; /* required amount of heap */ -__stack_size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ - m_interrupts (rx) : ORIGIN = 0x00000000, LENGTH = 0xC0 - m_cfmprotrom (rx) : ORIGIN = 0x00000400, LENGTH = 0x10 - m_text (rx) : ORIGIN = 0x00000800, LENGTH = 128K - 0x800 - m_data (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K /* SRAM */ -} - - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into Flash */ - .interrupts : - { - __vector_table = .; - . = ALIGN(4); - KEEP(*(.vectortable)) /* Startup code */ - . = ALIGN(4); - } > m_interrupts - - .cfmprotect : - { - . = ALIGN(4); - KEEP(*(.cfmconfig)) /* Flash Configuration Field (FCF) */ - . = ALIGN(4); - } > m_cfmprotrom - - /* The program code and other data goes into Flash */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } > m_text - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > m_text - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } > m_text - - .ctors : - { - __CTOR_LIST__ = .; - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - __CTOR_END__ = .; - } > m_text - .dtors : - { - __DTOR_LIST__ = .; - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - __DTOR_END__ = .; - } > m_text - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } > m_text - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } > m_text - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - - ___ROM_AT = .; - } > m_text - - /* reserve MTB memory at the beginning of m_data */ - .mtb : /* MTB buffer address as defined by the hardware */ - { - . = ALIGN(8); - _mtb_start = .; - KEEP(*(.mtb_buf)) /* need to KEEP Micro Trace Buffer as not referenced by application */ - . = ALIGN(8); - _mtb_end = .; - } > m_data - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : AT(___ROM_AT) - { - . = ALIGN(4); - __sinit__ = .; - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } > m_data - - ___data_size = _edata - _sdata; - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss section */ - __START_BSS = .; - PROVIDE ( __bss_start__ = __START_BSS ); - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - __END_BSS = .; - PROVIDE ( __bss_end__ = __END_BSS ); - } > m_data - - _romp_at = ___ROM_AT + SIZEOF(.data); - .romp : AT(_romp_at) - { - __S_romp = _romp_at; - LONG(___ROM_AT); - LONG(_sdata); - LONG(___data_size); - LONG(0); - LONG(0); - LONG(0); - } > m_data - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - __heap_addr = .; - . = . + __heap_size; - . = . + __stack_size; - . = ALIGN(4); - } > m_data - - .ARM.attributes 0 : { *(.ARM.attributes) } -}