Fork of mbed-src file paths change. LPC1114FN28 use only.

Fork of mbed-src by mbed official

Information

この情報は2013/10/28時点での解決方法です。
現在はmbed-src、標準ライブラリで問題なくコンパイルが可能です。

・使う物
LPC1114FN28
mbed SDK

LPC1114FN28でmbed-SDKのLibraryを使うとCompile出来ない。(2013/10/28) /media/uploads/minicube/mbed_lpc1114_sdk.png

パスが通ってないだけのようなのでファイルを以下に移動する。

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\

へ移動

移動後は以下のような構成になると思います。
※不要なファイルは削除してあります。

/media/uploads/minicube/mbed_lpc1114_sdk_tree.png


ファイルの移動が面倒なので以下に本家からフォークしたライブラリを置いておきます。

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されるため上記のエラーになるようです。

Revision:
43:b3acfef78949
Parent:
42:7ca0bbba899b
--- a/targets/cmsis/TARGET_Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c	Sun Oct 27 16:30:04 2013 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-#include <string.h>
-#include <stdlib.h>
-
-#include "cmsis.h"
-
-// Linker Script
-extern unsigned long _estack;
-extern char __S_romp[];
-
-extern char __START_BSS[];
-extern char __END_BSS[];
-
-// CRT0
-extern void __init_registers();
-extern void __copy_rom_sections_to_ram(void);
-extern void __call_static_initializers(void);
-extern void __init_user();
-
-// User/mbed Defined
-extern int main();
-extern void mbed_exit(int return_code);
-
-void _ExitProcess(int return_code) {
-    mbed_exit(return_code);
-}
-
-void __thumb_startup(void) {
-    // Setup registers
-    __init_registers();
-    
-    // Disable the Watchdog because it may reset the core before entering main().
-    SIM->COPC = 0x0;
-    
-    //  zero-fill the .bss section
-    memset(__START_BSS, 0, (__END_BSS - __START_BSS));
-    
-    if (__S_romp != 0L)
-        __copy_rom_sections_to_ram();
-    
-    //  call C++ static initializers
-    __call_static_initializers();
-    
-    // initializations before main, user specific
-    __init_user();
-    
-    exit(main());
-    
-    //  should never get here
-    while (1);
-}
-
-void Default_Handler() {
-    __asm("bkpt");
-}
-
-/* Weak definitions of handlers point to Default_Handler if not implemented */
-void NMI_Handler() __attribute__ ((weak, alias("Default_Handler")));
-void HardFault_Handler() __attribute__ ((weak, alias("Default_Handler")));
-void SVC_Handler() __attribute__ ((weak, alias("Default_Handler")));
-void PendSV_Handler() __attribute__ ((weak, alias("Default_Handler")));
-void SysTick_Handler() __attribute__ ((weak, alias("Default_Handler")));
-
-void DMA0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void DMA1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void DMA2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void DMA3_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void MCM_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void FTFL_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void PMC_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void LLW_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void I2C0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void I2C1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void SPI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void SPI1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void UART0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void UART1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void UART2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void ADC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void CMP0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void FTM0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void FTM1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void FTM2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void RTC_Alarm_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void RTC_Seconds_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void PIT_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void USBOTG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void DAC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void TSI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void MCG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void LPTimer_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void PORTA_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-void PORTD_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
-
-/* The Interrupt Vector Table */
-void (* const InterruptVector[])() __attribute__ ((section(".vectortable"))) = {
-    /* Processor exceptions */
-    (void(*)(void)) &_estack,
-    __thumb_startup,
-    NMI_Handler,
-    HardFault_Handler,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    SVC_Handler,
-    0,
-    0,
-    PendSV_Handler,
-    SysTick_Handler,
-
-    /* Interrupts */
-    DMA0_IRQHandler, /* DMA Channel 0 Transfer Complete and Error */
-    DMA1_IRQHandler, /* DMA Channel 1 Transfer Complete and Error */
-    DMA2_IRQHandler, /* DMA Channel 2 Transfer Complete and Error */
-    DMA3_IRQHandler, /* DMA Channel 3 Transfer Complete and Error */
-    MCM_IRQHandler, /* Normal Interrupt */
-    FTFL_IRQHandler, /* FTFL Interrupt */
-    PMC_IRQHandler, /* PMC Interrupt */
-    LLW_IRQHandler, /* Low Leakage Wake-up */
-    I2C0_IRQHandler, /* I2C0 interrupt */
-    I2C1_IRQHandler, /* I2C1 interrupt */
-    SPI0_IRQHandler, /* SPI0 Interrupt */
-    SPI1_IRQHandler, /* SPI1 Interrupt */
-    UART0_IRQHandler, /* UART0 Status and Error interrupt */
-    UART1_IRQHandler, /* UART1 Status and Error interrupt */
-    UART2_IRQHandler, /* UART2 Status and Error interrupt */
-    ADC0_IRQHandler, /* ADC0 interrupt */
-    CMP0_IRQHandler, /* CMP0 interrupt */
-    FTM0_IRQHandler, /* FTM0 fault, overflow and channels interrupt */
-    FTM1_IRQHandler, /* FTM1 fault, overflow and channels interrupt */
-    FTM2_IRQHandler, /* FTM2 fault, overflow and channels interrupt */
-    RTC_Alarm_IRQHandler, /* RTC Alarm interrupt */
-    RTC_Seconds_IRQHandler, /* RTC Seconds interrupt */
-    PIT_IRQHandler, /* PIT timer all channels interrupt */
-    Default_Handler, /* Reserved interrupt 39/23 */
-    USBOTG_IRQHandler, /* USB interrupt */
-    DAC0_IRQHandler, /* DAC0 interrupt */
-    TSI0_IRQHandler, /* TSI0 Interrupt */
-    MCG_IRQHandler, /* MCG Interrupt */
-    LPTimer_IRQHandler, /* LPTimer interrupt */
-    Default_Handler, /* Reserved interrupt 45/29 */
-    PORTA_IRQHandler, /* Port A interrupt */
-    PORTD_IRQHandler /* Port D interrupt */
-};