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_NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/sys.cpp
- Revision:
- 43:b3acfef78949
- Parent:
- 42:7ca0bbba899b
--- a/targets/cmsis/TARGET_NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/sys.cpp Sun Oct 27 16:30:04 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -#include "cmsis.h" -#include <sys/types.h> -#include <errno.h> - -extern "C" { - -struct SCS3Regions { - unsigned long Dummy; - unsigned long* InitRam; - unsigned long* StartRam; - unsigned long InitSizeRam; - unsigned long ZeroSizeRam; -}; - -extern unsigned long __cs3_regions; -extern unsigned long __cs3_heap_start; - -int main(void); -void __libc_init_array(void); -void exit(int ErrorCode); - -static void *heap_pointer = NULL; - -void __cs3_start_c(void) { - static SCS3Regions* pCS3Regions = (SCS3Regions*)&__cs3_regions; - unsigned long* pulDest; - unsigned long* pulSrc; - unsigned long ByteCount; - unsigned long i; - - pulSrc = pCS3Regions->InitRam; - pulDest = pCS3Regions->StartRam; - ByteCount = pCS3Regions->InitSizeRam; - if (pulSrc != pulDest) { - for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) { - *(pulDest++) = *(pulSrc++); - } - } else { - pulDest = (unsigned long*)(void*)((char*)pulDest + ByteCount); - } - - ByteCount = pCS3Regions->ZeroSizeRam; - for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) { - *(pulDest++) = 0; - } - - heap_pointer = &__cs3_heap_start; - __libc_init_array(); - - exit(main()); -} - -int _kill(int pid, int sig) { - errno = EINVAL; - return -1; -} - -void _exit(int status) { - exit(status); -} - -int _getpid(void) { - return 1; -} - -void *_sbrk(unsigned int incr) { - void *mem; - - unsigned int next = ((((unsigned int)heap_pointer + incr) + 7) & ~7); - if (next > __get_MSP()) { - mem = NULL; - } else { - mem = (void *)heap_pointer; - } - heap_pointer = (void *)next; - - return mem; -} - -}