diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/MKL25Z4.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/MKL25Z4.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/MKL25Z4.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/MKL25Z4.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/ARM/MKL25Z4.sct b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_MICRO/MKL25Z4.sct similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/ARM/MKL25Z4.sct rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_MICRO/MKL25Z4.sct diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/uARM/startup_MKL25Z4.s b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_MICRO/startup_MKL25Z4.s similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/uARM/startup_MKL25Z4.s rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_MICRO/startup_MKL25Z4.s diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/ARM/sys.cpp b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_MICRO/sys.cpp similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/ARM/sys.cpp rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_MICRO/sys.cpp diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/uARM/MKL25Z4.sct b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_STD/MKL25Z4.sct similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/uARM/MKL25Z4.sct rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_STD/MKL25Z4.sct diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/ARM/startup_MKL25Z4.s b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_STD/startup_MKL25Z4.s similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/ARM/startup_MKL25Z4.s rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_STD/startup_MKL25Z4.s diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/uARM/sys.cpp b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_STD/sys.cpp similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/uARM/sys.cpp rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_ARM_STD/sys.cpp diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_EWL/MKL25Z4.ld b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/MKL25Z4.ld similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_EWL/MKL25Z4.ld rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/MKL25Z4.ld diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_EWL/startup_MKL25Z4.c b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_EWL/startup_MKL25Z4.c rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_NEWLIB/MKL25Z4.ld b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_NEWLIB/MKL25Z4.ld similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_NEWLIB/MKL25Z4.ld rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_NEWLIB/MKL25Z4.ld diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_NEWLIB/startup_MKL25Z4.s b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_NEWLIB/startup_MKL25Z4.s similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/GCC_CW_NEWLIB/startup_MKL25Z4.s rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/TOOLCHAIN_GCC_CW_NEWLIB/startup_MKL25Z4.s diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/cmsis.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/cmsis.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/cmsis.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/cmsis.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/cmsis_nvic.c b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/cmsis_nvic.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/cmsis_nvic.c rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/cmsis_nvic.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/cmsis_nvic.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/cmsis_nvic.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/cmsis_nvic.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/cmsis_nvic.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cm0.c b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cm0.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cm0.c rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cm0.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cm0plus.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cm0plus.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cm0plus.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cm0plus.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cmFunc.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cmFunc.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cmFunc.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cmFunc.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cmInstr.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cmInstr.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/core_cmInstr.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/core_cmInstr.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/system_MKL25Z4.c b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/system_MKL25Z4.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/system_MKL25Z4.c rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/system_MKL25Z4.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/cmsis/system_MKL25Z4.h b/libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/system_MKL25Z4.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/cmsis/system_MKL25Z4.h rename to libraries/mbed/targets/cmsis/Freescale/TARGET_KL25Z/system_MKL25Z4.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/LPC11Uxx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/LPC11Uxx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/LPC11Uxx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/LPC11Uxx.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/ARM/LPC11U24.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/ARM/LPC11U24.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/uARM/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/uARM/startup_LPC11xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/ARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/ARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/uARM/LPC11U24.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/uARM/LPC11U24.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/ARM/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/ARM/startup_LPC11xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/uARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/uARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_ARM/LPC11U24.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_ARM/LPC11U24.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_ARM/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/startup_LPC11xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_ARM/startup_LPC11xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/startup_LPC11xx.s diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CR/LPC11U24.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CR/LPC11U24.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CR/startup_LPC11xx.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/startup_LPC11xx.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CR/startup_LPC11xx.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/startup_LPC11xx.cpp diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CS/LPC11U24.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CS/LPC11U24.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CS/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/startup_LPC11xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CS/startup_LPC11xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/startup_LPC11xx.s diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CS/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/GCC_CS/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/cmsis.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/cmsis.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/cmsis.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/cmsis.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/cmsis_nvic.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/cmsis_nvic.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/cmsis_nvic.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/cmsis_nvic.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/cmsis_nvic.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/cmsis_nvic.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/cmsis_nvic.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/cmsis_nvic.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cm0.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cm0.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cm0.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cm0.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cm0.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cm0.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cm0.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cm0.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cmFunc.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cmFunc.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cmFunc.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cmFunc.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cmInstr.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cmInstr.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/core_cmInstr.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/core_cmInstr.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/power_api.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/power_api.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/power_api.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/power_api.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/system_LPC11Uxx.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/system_LPC11Uxx.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/system_LPC11Uxx.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/system_LPC11Uxx.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/cmsis/system_LPC11Uxx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/system_LPC11Uxx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/cmsis/system_LPC11Uxx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC11UXX/system_LPC11Uxx.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/LPC17xx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/LPC17xx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/LPC17xx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/LPC17xx.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/uARM/LPC1768.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_MICRO/LPC1768.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/uARM/LPC1768.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_MICRO/LPC1768.sct diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/uARM/startup_LPC17xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_MICRO/startup_LPC17xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/uARM/startup_LPC17xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_MICRO/startup_LPC17xx.s diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/ARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_MICRO/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/ARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_MICRO/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/ARM/LPC1768.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_STD/LPC1768.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/ARM/LPC1768.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_STD/LPC1768.sct diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/ARM/startup_LPC17xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_STD/startup_LPC17xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/ARM/startup_LPC17xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_STD/startup_LPC17xx.s diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/uARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_STD/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/uARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_ARM_STD/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_ARM/LPC1768.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_ARM/LPC1768.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_ARM/LPC1768.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_ARM/LPC1768.ld diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_ARM/startup_LPC17xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_ARM/startup_LPC17xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_ARM/startup_LPC17xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_ARM/startup_LPC17xx.s diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CR/LPC1768.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CR/LPC1768.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CR/LPC1768.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CR/LPC1768.ld diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CR/startup_LPC17xx.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CR/startup_LPC17xx.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CR/startup_LPC17xx.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CR/startup_LPC17xx.cpp diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CS/LPC1768.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/LPC1768.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CS/LPC1768.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/LPC1768.ld diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CS/startup_LPC17xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/startup_LPC17xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CS/startup_LPC17xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/startup_LPC17xx.s diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CS/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/GCC_CS/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_GCC_CS/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/IAR/LPC17xx.icf b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_IAR/LPC17xx.icf similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/IAR/LPC17xx.icf rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_IAR/LPC17xx.icf diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/IAR/startup_LPC17xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_IAR/startup_LPC17xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/IAR/startup_LPC17xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/TOOLCHAIN_IAR/startup_LPC17xx.s diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/cmsis.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/cmsis.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/cmsis.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/cmsis.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/cmsis_nvic.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/cmsis_nvic.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/cmsis_nvic.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/cmsis_nvic.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/cmsis_nvic.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/cmsis_nvic.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/cmsis_nvic.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/cmsis_nvic.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cm3.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cm3.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cm3.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cm3.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cm3.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cm3.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cm3.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cm3.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cmFunc.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cmFunc.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cmFunc.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cmFunc.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cmInstr.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cmInstr.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/core_cmInstr.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/core_cmInstr.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/system_LPC17xx.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/system_LPC17xx.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/system_LPC17xx.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/system_LPC17xx.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/cmsis/system_LPC17xx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/system_LPC17xx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/cmsis/system_LPC17xx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC176X/system_LPC17xx.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/LPC23xx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/LPC23xx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/LPC23xx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/LPC23xx.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/LPC2368.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/LPC2368.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/LPC2368.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/LPC2368.sct diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/vector_functions.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/vector_functions.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/vector_functions.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/vector_functions.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/vector_table.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/vector_table.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/ARM/vector_table.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_MICRO/vector_table.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/LPC2368.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/LPC2368.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/LPC2368.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/LPC2368.sct diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/vector_functions.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/vector_functions.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/vector_functions.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/vector_functions.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/vector_table.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/vector_table.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/uARM/vector_table.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_ARM_STD/vector_table.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_ARM/LPC2368.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/LPC2368.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_ARM/LPC2368.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/LPC2368.ld diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_ARM/vector_functions.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/vector_functions.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_ARM/vector_functions.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/vector_functions.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_ARM/vector_table.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/vector_table.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_ARM/vector_table.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/vector_table.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CR/LPC2368.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/LPC2368.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CR/LPC2368.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/LPC2368.ld diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CR/vector_functions.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/vector_functions.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CR/vector_functions.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/vector_functions.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CR/vector_table.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/vector_table.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CR/vector_table.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/vector_table.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CS/LPC2368.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/LPC2368.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CS/LPC2368.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/LPC2368.ld diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CS/vector_functions.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/vector_functions.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CS/vector_functions.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/vector_functions.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CS/vector_table.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/vector_table.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/GCC_CS/vector_table.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CS/vector_table.s diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/cmsis.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/cmsis.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/cmsis.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/cmsis.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/cmsis_nvic.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/cmsis_nvic.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/cmsis_nvic.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/cmsis_nvic.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/cmsis_nvic.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/cmsis_nvic.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/cmsis_nvic.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/cmsis_nvic.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/core_arm7.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/core_arm7.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/core_arm7.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/core_arm7.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/core_arm7.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/core_arm7.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/core_arm7.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/core_arm7.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/system_LPC23xx.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/system_LPC23xx.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/system_LPC23xx.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/system_LPC23xx.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/system_LPC23xx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/system_LPC23xx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/system_LPC23xx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/system_LPC23xx.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/vector_defns.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/vector_defns.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/vector_defns.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/vector_defns.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/cmsis/vector_realmonitor.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/vector_realmonitor.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/cmsis/vector_realmonitor.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC23XX/vector_realmonitor.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/LPC407x_8x_177x_8x.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/LPC407x_8x_177x_8x.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/LPC407x_8x_177x_8x.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/LPC407x_8x_177x_8x.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/ARM/LPC407X_8X.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_ARM_STD/LPC407X_8X.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/ARM/LPC407X_8X.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_ARM_STD/LPC407X_8X.sct diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/ARM/startup_LPC407x_8x_177x_8x.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_ARM_STD/startup_LPC407x_8x_177x_8x.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/ARM/startup_LPC407x_8x_177x_8x.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_ARM_STD/startup_LPC407x_8x_177x_8x.s diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/ARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_ARM_STD/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/ARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_ARM_STD/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/GCC_CR/LPC407x_8x.ld b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_GCC_CR/LPC407x_8x.ld similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/GCC_CR/LPC407x_8x.ld rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_GCC_CR/LPC407x_8x.ld diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/GCC_CR/startup_lpc407x_8x.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_GCC_CR/startup_lpc407x_8x.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/GCC_CR/startup_lpc407x_8x.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/TOOLCHAIN_GCC_CR/startup_lpc407x_8x.cpp diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/cmsis.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/cmsis.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/cmsis.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/cmsis.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/cmsis_nvic.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/cmsis_nvic.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/cmsis_nvic.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/cmsis_nvic.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/cmsis_nvic.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/cmsis_nvic.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/cmsis_nvic.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/cmsis_nvic.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cm4.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cm4.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cm4.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cm4.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cm4.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cm4.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cm4.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cm4.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cm4_simd.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cm4_simd.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cm4_simd.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cm4_simd.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cmFunc.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cmFunc.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cmFunc.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cmFunc.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cmInstr.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cmInstr.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/core_cmInstr.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/core_cmInstr.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/system_LPC407x_8x_177x_8x.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/system_LPC407x_8x_177x_8x.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/system_LPC407x_8x_177x_8x.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/system_LPC407x_8x_177x_8x.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/cmsis/system_LPC407x_8x_177x_8x.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/system_LPC407x_8x_177x_8x.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/cmsis/system_LPC407x_8x_177x_8x.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC408X/system_LPC407x_8x_177x_8x.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/LPC8xx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/LPC8xx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/LPC8xx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/LPC8xx.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/uARM/LPC812.sct b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/TOOLCHAIN_ARM_MICRO/LPC812.sct similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/uARM/LPC812.sct rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/TOOLCHAIN_ARM_MICRO/LPC812.sct diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/uARM/startup_LPC8xx.s b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/TOOLCHAIN_ARM_MICRO/startup_LPC8xx.s similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/uARM/startup_LPC8xx.s rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/TOOLCHAIN_ARM_MICRO/startup_LPC8xx.s diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/uARM/sys.cpp b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/TOOLCHAIN_ARM_MICRO/sys.cpp similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/uARM/sys.cpp rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/TOOLCHAIN_ARM_MICRO/sys.cpp diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/cmsis.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/cmsis.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/cmsis.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/cmsis.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/cmsis_nvic.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/cmsis_nvic.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/cmsis_nvic.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/cmsis_nvic.c diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/cmsis_nvic.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/cmsis_nvic.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/cmsis_nvic.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/cmsis_nvic.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/core_cm0.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cm0.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/core_cm0.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cm0.c diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/core_cm0plus.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cm0plus.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/core_cm0plus.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cm0plus.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/core_cmFunc.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cmFunc.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/core_cmFunc.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cmFunc.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/core_cmInstr.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cmInstr.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/core_cmInstr.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/core_cmInstr.h diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/system_LPC8xx.c b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/system_LPC8xx.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/system_LPC8xx.c rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/system_LPC8xx.c diff --git a/libraries/mbed/vendor/NXP/LPC812/cmsis/system_LPC8xx.h b/libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/system_LPC8xx.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/cmsis/system_LPC8xx.h rename to libraries/mbed/targets/cmsis/NXP/TARGET_LPC81X/system_LPC8xx.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/PeripheralNames.h b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/PeripheralNames.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/PeripheralNames.h rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/PeripheralNames.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/PinNames.h b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/PinNames.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/PinNames.h rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/PinNames.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/PortNames.h b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/PortNames.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/PortNames.h rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/PortNames.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/analogin_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/analogin_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/analogin_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/analogin_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/analogout_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/analogout_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/analogout_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/analogout_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/device.h b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/device.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/device.h rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/device.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/gpio_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/gpio_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/gpio_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/gpio_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/gpio_irq_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/gpio_irq_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/gpio_irq_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/gpio_irq_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/gpio_object.h b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/gpio_object.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/gpio_object.h rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/gpio_object.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/i2c_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/i2c_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/i2c_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/i2c_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/objects.h b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/objects.h similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/objects.h rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/objects.h diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/pinmap.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/pinmap.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/pinmap.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/pinmap.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/port_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/port_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/port_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/port_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/pwmout_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/pwmout_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/pwmout_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/pwmout_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/rtc_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/rtc_api.c similarity index 98% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/rtc_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/rtc_api.c index 4dd55150ca..0402f585bd 100644 --- a/libraries/mbed/vendor/Freescale/KL25Z/hal/rtc_api.c +++ b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/rtc_api.c @@ -15,8 +15,6 @@ */ #include "rtc_api.h" -#if DEVICE_RTC - static void init(void) { // enable PORTC clock SIM->SCGC5 |= SIM_SCGC5_PORTC_MASK; @@ -91,5 +89,3 @@ void rtc_write(time_t t) { // re-enable counter RTC->SR |= RTC_SR_TCE_MASK; } - -#endif diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/serial_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/serial_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/serial_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/serial_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/spi_api.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/spi_api.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/spi_api.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/spi_api.c diff --git a/libraries/mbed/vendor/Freescale/KL25Z/hal/us_ticker.c b/libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/us_ticker.c similarity index 100% rename from libraries/mbed/vendor/Freescale/KL25Z/hal/us_ticker.c rename to libraries/mbed/targets/hal/Freescale/TARGET_KL25Z/us_ticker.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/PeripheralNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/PeripheralNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/PeripheralNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/PeripheralNames.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/PinNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/PinNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/PinNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/PinNames.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/PortNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/PortNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/PortNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/PortNames.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/analogin_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/analogin_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/analogin_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/analogin_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/device.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/device.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/device.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/device.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/gpio_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/gpio_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/gpio_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/gpio_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/gpio_irq_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/gpio_irq_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/gpio_irq_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/gpio_irq_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/gpio_object.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/gpio_object.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/gpio_object.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/gpio_object.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/i2c_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/i2c_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/i2c_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/i2c_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/objects.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/objects.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/objects.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/objects.h diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/pinmap.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/pinmap.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/pinmap.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/pinmap.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/port_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/port_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/port_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/port_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/pwmout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/pwmout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/pwmout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/pwmout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/serial_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/serial_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/serial_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/serial_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/sleep.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/sleep.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/sleep.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/sleep.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/spi_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/spi_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/spi_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/spi_api.c diff --git a/libraries/mbed/vendor/NXP/LPC11U24/hal/us_ticker.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/us_ticker.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC11U24/hal/us_ticker.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC11UXX/us_ticker.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/PeripheralNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/PeripheralNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/PeripheralNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/PeripheralNames.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/PinNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/PinNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/PinNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/PinNames.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/PortNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/PortNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/PortNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/PortNames.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/analogin_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/analogin_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/analogin_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/analogin_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/analogout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/analogout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/analogout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/analogout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/can_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/can_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/can_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/can_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/device.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/device.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/device.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/device.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/ethernet_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/ethernet_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/ethernet_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/ethernet_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/gpio_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/gpio_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/gpio_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/gpio_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/gpio_irq_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/gpio_irq_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/gpio_irq_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/gpio_irq_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/gpio_object.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/gpio_object.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/gpio_object.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/gpio_object.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/i2c_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/i2c_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/i2c_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/i2c_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/objects.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/objects.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/objects.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/objects.h diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/pinmap.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/pinmap.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/pinmap.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/pinmap.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/port_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/port_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/port_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/port_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/pwmout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/pwmout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/pwmout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/pwmout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/rtc_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/rtc_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/rtc_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/rtc_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/serial_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/serial_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/serial_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/serial_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/sleep.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/sleep.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/sleep.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/sleep.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/spi_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/spi_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/spi_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/spi_api.c diff --git a/libraries/mbed/vendor/NXP/LPC1768/hal/us_ticker.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC176X/us_ticker.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC1768/hal/us_ticker.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC176X/us_ticker.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/PeripheralNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/PeripheralNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/PeripheralNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/PeripheralNames.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/PinNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/PinNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/PinNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/PinNames.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/PortNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/PortNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/PortNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/PortNames.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/analogin_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/analogin_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/analogin_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/analogin_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/analogout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/analogout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/analogout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/analogout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/can_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/can_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/can_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/can_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/device.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/device.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/device.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/device.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/ethernet_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/ethernet_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/ethernet_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/ethernet_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/gpio_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/gpio_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/gpio_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/gpio_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/gpio_irq_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/gpio_irq_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/gpio_irq_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/gpio_irq_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/gpio_object.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/gpio_object.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/gpio_object.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/gpio_object.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/i2c_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/i2c_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/i2c_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/i2c_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/objects.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/objects.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/objects.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/objects.h diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/pinmap.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/pinmap.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/pinmap.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/pinmap.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/port_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/port_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/port_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/port_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/pwmout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/pwmout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/pwmout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/pwmout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/rtc_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/rtc_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/rtc_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/rtc_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/serial_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/serial_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/serial_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/serial_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/spi_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/spi_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/spi_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/spi_api.c diff --git a/libraries/mbed/vendor/NXP/LPC2368/hal/us_ticker.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/us_ticker.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC2368/hal/us_ticker.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC23XX/us_ticker.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/PeripheralNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/PeripheralNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/PeripheralNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/PeripheralNames.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/PinNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/PinNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/PinNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/PinNames.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/PortNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/PortNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/PortNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/PortNames.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/analogin_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/analogin_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/analogin_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/analogin_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/analogout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/analogout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/analogout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/analogout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/can_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/can_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/can_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/can_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/device.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/device.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/device.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/device.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/ethernet_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/ethernet_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/ethernet_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/ethernet_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/gpio_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/gpio_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/gpio_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/gpio_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/gpio_irq_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/gpio_irq_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/gpio_irq_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/gpio_irq_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/gpio_object.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/gpio_object.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/gpio_object.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/gpio_object.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/i2c_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/i2c_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/i2c_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/i2c_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/objects.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/objects.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/objects.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/objects.h diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/pinmap.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/pinmap.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/pinmap.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/pinmap.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/port_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/port_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/port_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/port_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/pwmout_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/pwmout_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/pwmout_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/pwmout_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/rtc_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/rtc_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/rtc_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/rtc_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/serial_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/serial_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/serial_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/serial_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/sleep.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/sleep.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/sleep.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/sleep.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/spi_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/spi_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/spi_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/spi_api.c diff --git a/libraries/mbed/vendor/NXP/LPC4088/hal/us_ticker.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC408X/us_ticker.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC4088/hal/us_ticker.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC408X/us_ticker.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/PeripheralNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/PeripheralNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/PeripheralNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/PeripheralNames.h diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/PinNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/PinNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/PinNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/PinNames.h diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/PortNames.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/PortNames.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/PortNames.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/PortNames.h diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/device.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/device.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/device.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/device.h diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/gpio_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/gpio_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/gpio_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/gpio_api.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/gpio_irq_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/gpio_irq_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/gpio_irq_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/gpio_irq_api.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/gpio_object.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/gpio_object.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/gpio_object.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/gpio_object.h diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/i2c_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/i2c_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/i2c_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/i2c_api.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/objects.h b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/objects.h similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/objects.h rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/objects.h diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/pinmap.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/pinmap.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/pinmap.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/pinmap.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/serial_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/serial_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/serial_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/serial_api.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/spi_api.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/spi_api.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/spi_api.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/spi_api.c diff --git a/libraries/mbed/vendor/NXP/LPC812/hal/us_ticker.c b/libraries/mbed/targets/hal/NXP/TARGET_LPC81X/us_ticker.c similarity index 100% rename from libraries/mbed/vendor/NXP/LPC812/hal/us_ticker.c rename to libraries/mbed/targets/hal/NXP/TARGET_LPC81X/us_ticker.c diff --git a/libraries/rtos/rtx/KL25Z/ARM/HAL_CM0.c b/libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_ARM/HAL_CM0.c similarity index 100% rename from libraries/rtos/rtx/KL25Z/ARM/HAL_CM0.c rename to libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_ARM/HAL_CM0.c diff --git a/libraries/rtos/rtx/KL25Z/ARM/SVC_Table.s b/libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_ARM/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/KL25Z/ARM/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_ARM/SVC_Table.s diff --git a/libraries/rtos/rtx/LPC11U24/GCC_ARM/HAL_CM0.s b/libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_GCC/HAL_CM0.s similarity index 100% rename from libraries/rtos/rtx/LPC11U24/GCC_ARM/HAL_CM0.s rename to libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_GCC/HAL_CM0.s diff --git a/libraries/rtos/rtx/LPC11U24/GCC_ARM/SVC_Table.s b/libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_GCC/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/LPC11U24/GCC_ARM/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M0/TOOLCHAIN_GCC/SVC_Table.s diff --git a/libraries/rtos/rtx/LPC11U24/uARM/HAL_CM0.c b/libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_ARM/HAL_CM0.c similarity index 100% rename from libraries/rtos/rtx/LPC11U24/uARM/HAL_CM0.c rename to libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_ARM/HAL_CM0.c diff --git a/libraries/rtos/rtx/LPC11U24/uARM/SVC_Table.s b/libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_ARM/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/LPC11U24/uARM/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_ARM/SVC_Table.s diff --git a/libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_GCC/HAL_CM0.s b/libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_GCC/HAL_CM0.s new file mode 100644 index 0000000000..416b8279b8 --- /dev/null +++ b/libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_GCC/HAL_CM0.s @@ -0,0 +1,370 @@ +/*---------------------------------------------------------------------------- + * RL-ARM - RTX + *---------------------------------------------------------------------------- + * Name: HAL_CM0.S + * Purpose: Hardware Abstraction Layer for Cortex-M0 + * Rev.: V4.60 + *---------------------------------------------------------------------------- + * + * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of ARM nor the names of its contributors may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ + + .file "HAL_CM0.S" + .syntax unified + + .equ TCB_TSTACK, 36 + + +/*---------------------------------------------------------------------------- + * Functions + *---------------------------------------------------------------------------*/ + + .thumb + + .section ".text" + .align 2 + + +/*--------------------------- rt_set_PSP ------------------------------------*/ + +# void rt_set_PSP (U32 stack); + + .thumb_func + .type rt_set_PSP, %function + .global rt_set_PSP +rt_set_PSP: + .fnstart + .cantunwind + + MSR PSP,R0 + BX LR + + .fnend + .size rt_set_PSP, .-rt_set_PSP + + +/*--------------------------- rt_get_PSP ------------------------------------*/ + +# U32 rt_get_PSP (void); + + .thumb_func + .type rt_get_PSP, %function + .global rt_get_PSP +rt_get_PSP: + .fnstart + .cantunwind + + MRS R0,PSP + BX LR + + .fnend + .size rt_get_PSP, .-rt_get_PSP + + +/*--------------------------- os_set_env ------------------------------------*/ + +# void os_set_env (void); + /* Switch to Unprivileged/Privileged Thread mode, use PSP. */ + + .thumb_func + .type os_set_env, %function + .global os_set_env +os_set_env: + .fnstart + .cantunwind + + MOV R0,SP /* PSP = MSP */ + MSR PSP,R0 + LDR R0,=os_flags + LDRB R0,[R0] + LSLS R0,#31 + BNE PrivilegedE + MOVS R0,#0x03 /* Unprivileged Thread mode, use PSP */ + MSR CONTROL,R0 + BX LR +PrivilegedE: + MOVS R0,#0x02 /* Privileged Thread mode, use PSP */ + MSR CONTROL,R0 + BX LR + + .fnend + .size os_set_env, .-os_set_env + + +/*--------------------------- _alloc_box ------------------------------------*/ + +# void *_alloc_box (void *box_mem); + /* Function wrapper for Unprivileged/Privileged mode. */ + + .thumb_func + .type _alloc_box, %function + .global _alloc_box +_alloc_box: + .fnstart + .cantunwind + + LDR R3,=rt_alloc_box + MOV R12,R3 + MRS R3,IPSR + LSLS R3,#24 + BNE PrivilegedA + MRS R3,CONTROL + LSLS R3,#31 + BEQ PrivilegedA + SVC 0 + BX LR +PrivilegedA: + BX R12 + + .fnend + .size _alloc_box, .-_alloc_box + + +/*--------------------------- _free_box -------------------------------------*/ + +# int _free_box (void *box_mem, void *box); + /* Function wrapper for Unprivileged/Privileged mode. */ + + .thumb_func + .type _free_box, %function + .global _free_box +_free_box: + .fnstart + .cantunwind + + LDR R3,=rt_free_box + MOV R12,R3 + MRS R3,IPSR + LSLS R3,#24 + BNE PrivilegedF + MRS R3,CONTROL + LSLS R3,#31 + BEQ PrivilegedF + SVC 0 + BX LR +PrivilegedF: + BX R12 + + .fnend + .size _free_box, .-_free_box + + +/*-------------------------- SVC_Handler ------------------------------------*/ + +# void SVC_Handler (void); + + .thumb_func + .type SVC_Handler, %function + .global SVC_Handler +SVC_Handler: + .fnstart + .cantunwind + + MRS R0,PSP /* Read PSP */ + LDR R1,[R0,#24] /* Read Saved PC from Stack */ + SUBS R1,R1,#2 /* Point to SVC Instruction */ + LDRB R1,[R1] /* Load SVC Number */ + CMP R1,#0 + BNE SVC_User /* User SVC Number > 0 */ + + MOV LR,R4 + LDMIA R0,{R0-R3,R4} /* Read R0-R3,R12 from stack */ + MOV R12,R4 + MOV R4,LR + BLX R12 /* Call SVC Function */ + + MRS R3,PSP /* Read PSP */ + STMIA R3!,{R0-R2} /* Store return values */ + + LDR R3,=os_tsk + LDMIA R3!,{R1,R2} /* os_tsk.run, os_tsk.new */ + CMP R1,R2 + BEQ SVC_Exit /* no task switch */ + + SUBS R3,#8 + CMP R1,#0 /* Runtask deleted? */ + BEQ SVC_Next + + MRS R0,PSP /* Read PSP */ + SUBS R0,R0,#32 /* Adjust Start Address */ + STR R0,[R1,#TCB_TSTACK] /* Update os_tsk.run->tsk_stack */ + STMIA R0!,{R4-R7} /* Save old context (R4-R7) */ + MOV R4,R8 + MOV R5,R9 + MOV R6,R10 + MOV R7,R11 + STMIA R0!,{R4-R7} /* Save old context (R8-R11) */ + + PUSH {R2,R3} + BL rt_stk_check /* Check for Stack overflow */ + POP {R2,R3} + +SVC_Next: + STR R2,[R3] /* os_tsk.run = os_tsk.new */ + + LDR R0,[R2,#TCB_TSTACK] /* os_tsk.new->tsk_stack */ + ADDS R0,R0,#16 /* Adjust Start Address */ + LDMIA R0!,{R4-R7} /* Restore new Context (R8-R11) */ + MOV R8,R4 + MOV R9,R5 + MOV R10,R6 + MOV R11,R7 + MSR PSP,R0 /* Write PSP */ + SUBS R0,R0,#32 /* Adjust Start Address */ + LDMIA R0!,{R4-R7} /* Restore new Context (R4-R7) */ + +SVC_Exit: + MOVS R0,#~0xFFFFFFFD /* Set EXC_RETURN value */ + MVNS R0,R0 + BX R0 /* RETI to Thread Mode, use PSP */ + + /*------------------- User SVC ------------------------------*/ + +SVC_User: + PUSH {R4,LR} /* Save Registers */ + LDR R2,=SVC_Count + LDR R2,[R2] + CMP R1,R2 + BHI SVC_Done /* Overflow */ + + LDR R4,=SVC_Table-4 + LSLS R1,R1,#2 + LDR R4,[R4,R1] /* Load SVC Function Address */ + MOV LR,R4 + + LDMIA R0,{R0-R3,R4} /* Read R0-R3,R12 from stack */ + MOV R12,R4 + BLX LR /* Call SVC Function */ + + MRS R4,PSP /* Read PSP */ + STMIA R4!,{R0-R3} /* Function return values */ +SVC_Done: + POP {R4,PC} /* RETI */ + + .fnend + .size SVC_Handler, .-SVC_Handler + + +/*-------------------------- PendSV_Handler ---------------------------------*/ + +# void PendSV_Handler (void); + + .thumb_func + .type PendSV_Handler, %function + .global PendSV_Handler + .global Sys_Switch +PendSV_Handler: + .fnstart + .cantunwind + + BL rt_pop_req + +Sys_Switch: + LDR R3,=os_tsk + LDMIA R3!,{R1,R2} /* os_tsk.run, os_tsk.new */ + CMP R1,R2 + BEQ Sys_Exit /* no task switch */ + + SUBS R3,#8 + + MRS R0,PSP /* Read PSP */ + SUBS R0,R0,#32 /* Adjust Start Address */ + STR R0,[R1,#TCB_TSTACK] /* Update os_tsk.run->tsk_stack */ + STMIA R0!,{R4-R7} /* Save old context (R4-R7) */ + MOV R4,R8 + MOV R5,R9 + MOV R6,R10 + MOV R7,R11 + STMIA R0!,{R4-R7} /* Save old context (R8-R11) */ + + PUSH {R2,R3} + BL rt_stk_check /* Check for Stack overflow */ + POP {R2,R3} + + STR R2,[R3] /* os_tsk.run = os_tsk.new */ + + LDR R0,[R2,#TCB_TSTACK] /* os_tsk.new->tsk_stack */ + ADDS R0,R0,#16 /* Adjust Start Address */ + LDMIA R0!,{R4-R7} /* Restore new Context (R8-R11) */ + MOV R8,R4 + MOV R9,R5 + MOV R10,R6 + MOV R11,R7 + MSR PSP,R0 /* Write PSP */ + SUBS R0,R0,#32 /* Adjust Start Address */ + LDMIA R0!,{R4-R7} /* Restore new Context (R4-R7) */ + +Sys_Exit: + MOVS R0,#~0xFFFFFFFD /* Set EXC_RETURN value */ + MVNS R0,R0 + BX R0 /* RETI to Thread Mode, use PSP */ + + .fnend + .size PendSV_Handler, .-PendSV_Handler + + +/*-------------------------- SysTick_Handler --------------------------------*/ + +# void SysTick_Handler (void); + + .thumb_func + .type SysTick_Handler, %function + .global SysTick_Handler +SysTick_Handler: + .fnstart + .cantunwind + + BL rt_systick + B Sys_Switch + + .fnend + .size SysTick_Handler, .-SysTick_Handler + + +/*-------------------------- OS_Tick_Handler --------------------------------*/ + +# void OS_Tick_Handler (void); + + .thumb_func + .type OS_Tick_Handler, %function + .global OS_Tick_Handler +OS_Tick_Handler: + .fnstart + .cantunwind + + BL os_tick_irqack + BL rt_systick + B Sys_Switch + + .fnend + .size OS_Tick_Handler, .-OS_Tick_Handler + + + .end + +/*---------------------------------------------------------------------------- + * end of file + *---------------------------------------------------------------------------*/ diff --git a/libraries/rtos/rtx/LPC1768/GCC_ARM/SVC_Table.s b/libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_GCC/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/LPC1768/GCC_ARM/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M0P/TOOLCHAIN_GCC/SVC_Table.s diff --git a/libraries/rtos/rtx/LPC1768/ARM/HAL_CM3.c b/libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_ARM/HAL_CM3.c similarity index 100% rename from libraries/rtos/rtx/LPC1768/ARM/HAL_CM3.c rename to libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_ARM/HAL_CM3.c diff --git a/libraries/rtos/rtx/LPC1768/ARM/SVC_Table.s b/libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_ARM/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/LPC1768/ARM/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_ARM/SVC_Table.s diff --git a/libraries/rtos/rtx/LPC1768/GCC_ARM/HAL_CM3.s b/libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/HAL_CM3.s similarity index 100% rename from libraries/rtos/rtx/LPC1768/GCC_ARM/HAL_CM3.s rename to libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/HAL_CM3.s diff --git a/libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/SVC_Table.s b/libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/SVC_Table.s new file mode 100644 index 0000000000..47bf2d9d38 --- /dev/null +++ b/libraries/rtos/rtx/TARGET_M3/TOOLCHAIN_GCC/SVC_Table.s @@ -0,0 +1,56 @@ +;/*---------------------------------------------------------------------------- +; * RL-ARM - RTX +; *---------------------------------------------------------------------------- +; * Name: SVC_TABLE.S +; * Purpose: Pre-defined SVC Table for Cortex-M +; * Rev.: V4.60 +; *---------------------------------------------------------------------------- +; * +; * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH +; * All rights reserved. +; * Redistribution and use in source and binary forms, with or without +; * modification, are permitted provided that the following conditions are met: +; * - Redistributions of source code must retain the above copyright +; * notice, this list of conditions and the following disclaimer. +; * - Redistributions in binary form must reproduce the above copyright +; * notice, this list of conditions and the following disclaimer in the +; * documentation and/or other materials provided with the distribution. +; * - Neither the name of ARM nor the names of its contributors may be used +; * to endorse or promote products derived from this software without +; * specific prior written permission. +; * +; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE +; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +; * POSSIBILITY OF SUCH DAMAGE. +; *---------------------------------------------------------------------------*/ + + + .file "SVC_Table.S" + + + .section ".svc_table" + + .global SVC_Table +SVC_Table: +/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */ +# .long __SVC_1 /* user SVC function */ +SVC_End: + + .global SVC_Count +SVC_Count: + .long (SVC_End-SVC_Table)/4 + + + .end + +/*---------------------------------------------------------------------------- + * end of file + *---------------------------------------------------------------------------*/ diff --git a/libraries/rtos/rtx/LPC4088/ARM/HAL_CM4.c b/libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_ARM/HAL_CM4.c similarity index 100% rename from libraries/rtos/rtx/LPC4088/ARM/HAL_CM4.c rename to libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_ARM/HAL_CM4.c diff --git a/libraries/rtos/rtx/LPC4088/ARM/SVC_Table.s b/libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_ARM/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/LPC4088/ARM/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_ARM/SVC_Table.s diff --git a/libraries/rtos/rtx/LPC4088/GCC_CR/HAL_CM4.s b/libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_GCC/HAL_CM4.s similarity index 100% rename from libraries/rtos/rtx/LPC4088/GCC_CR/HAL_CM4.s rename to libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_GCC/HAL_CM4.s diff --git a/libraries/rtos/rtx/LPC4088/GCC_CR/SVC_Table.s b/libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_GCC/SVC_Table.s similarity index 100% rename from libraries/rtos/rtx/LPC4088/GCC_CR/SVC_Table.s rename to libraries/rtos/rtx/TARGET_M4/TOOLCHAIN_GCC/SVC_Table.s diff --git a/libraries/tests/lpc812/blinky/blinky.cpp b/libraries/tests/lpc812/blinky/blinky.cpp deleted file mode 100644 index cb214b0f69..0000000000 --- a/libraries/tests/lpc812/blinky/blinky.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "mbed.h" - -DigitalOut led_blue(LED_BLUE); - -int main (void) { - while (true) { - wait(1); - led_blue = !led_blue; - printf("Hello World!\n"); - } -} diff --git a/workspace_tools/build.py b/workspace_tools/build.py index 8384e4120e..7705b8d75e 100644 --- a/workspace_tools/build.py +++ b/workspace_tools/build.py @@ -90,6 +90,11 @@ if __name__ == '__main__': build_lib(lib_id, mcu, toolchain, verbose=options.verbose) successes.append(id) except Exception, e: + if options.verbose: + import sys, traceback + traceback.print_exc(file=sys.stdout) + sys.exit(1) + failures.append(id) print e diff --git a/workspace_tools/build_api.py b/workspace_tools/build_api.py index 15315e7e8b..1038f88108 100644 --- a/workspace_tools/build_api.py +++ b/workspace_tools/build_api.py @@ -4,7 +4,7 @@ from types import ListType from workspace_tools.utils import mkdir from workspace_tools.toolchains import TOOLCHAIN_CLASSES, Resources -from workspace_tools.paths import VENDOR_PATH, MBED_LIBRARIES, MBED_API, MBED_HAL, MBED_COMMON +from workspace_tools.paths import MBED_TARGETS_PATH, MBED_LIBRARIES, MBED_API, MBED_HAL, MBED_COMMON from workspace_tools.libraries import Library @@ -115,9 +115,8 @@ def build_mbed_libs(target, toolchain_name, verbose=False): toolchain.VERBOSE = verbose # Source and Build Paths - TARGET_SRC = join(VENDOR_PATH, target.vendor, target.name) - BUILD_TARGET = join(MBED_LIBRARIES, target.name) - BUILD_TOOLCHAIN = join(BUILD_TARGET, toolchain_name) + BUILD_TARGET = join(MBED_LIBRARIES, "TARGET_" + target.name) + BUILD_TOOLCHAIN = join(BUILD_TARGET, "TOOLCHAIN_" + toolchain.name) mkdir(BUILD_TOOLCHAIN) TMP_PATH = join(MBED_LIBRARIES, '.temp', toolchain.obj_path) @@ -125,16 +124,18 @@ def build_mbed_libs(target, toolchain_name, verbose=False): # CMSIS toolchain.info("\n>>> BUILD LIBRARY %s (%s, %s)" % ('CMSIS', target.name, toolchain_name)) - cmsis_src = join(TARGET_SRC, "cmsis") + cmsis_src = join(MBED_TARGETS_PATH, "cmsis") resources = toolchain.scan_resources(cmsis_src) - toolchain.copy_files(resources.headers + [resources.linker_script], BUILD_TARGET, rel_path=cmsis_src) + toolchain.copy_files(resources.headers, BUILD_TARGET) + toolchain.copy_files(resources.linker_script, BUILD_TOOLCHAIN) + objects = toolchain.compile_sources(resources, TMP_PATH, resources.inc_dirs) toolchain.copy_files(objects, BUILD_TOOLCHAIN) # mbed toolchain.info("\n>>> BUILD LIBRARY %s (%s, %s)" % ('MBED', target.name, toolchain_name)) - HAL_SRC = join(TARGET_SRC, "hal") + HAL_SRC = join(MBED_TARGETS_PATH, "hal") hal_implementation = toolchain.scan_resources(HAL_SRC) mbed_resources = toolchain.scan_resources(MBED_COMMON) diff --git a/workspace_tools/make.py b/workspace_tools/make.py index e35296f0f7..e6084efef3 100644 --- a/workspace_tools/make.py +++ b/workspace_tools/make.py @@ -29,6 +29,8 @@ if __name__ == '__main__': parser = get_default_options_parser() parser.add_option("-p", type="int", dest="program", help="The index of the desired test program: [0-%d]" % (len(TESTS)-1)) + parser.add_option("-n", dest="program_name", + help="The name of the desired test program") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Verbose diagnostic output") @@ -51,13 +53,17 @@ if __name__ == '__main__': (options, args) = parser.parse_args() - # Program Number - p = options.program + # Program Number or name + p, n = options.program, options.program_name + if n is not None and p is not None: + args_error(parser, "[ERROR] specify either '-n' or '-p', not both") + if n: + if not n in TEST_MAP.keys(): + args_error(parser, "[ERROR] Program with name '%s' not found" % n) + p = TEST_MAP[n].n if p is None or (p < 0) or (p > (len(TESTS)-1)): message = "[ERROR] You have to specify one of the following tests:\n" - descriptions = [(test.n, test.description) for test in TEST_MAP.values()] - descriptions.sort() - message += '\n'.join([" [%2d] %s " % d for d in descriptions]) + message += '\n'.join(map(str, sorted(TEST_MAP.values()))) args_error(parser, message) # Target diff --git a/workspace_tools/paths.py b/workspace_tools/paths.py index ae2fc9b03f..13b474f05a 100644 --- a/workspace_tools/paths.py +++ b/workspace_tools/paths.py @@ -15,7 +15,7 @@ MBED_BASE = join(LIB_DIR, "mbed") MBED_API = join(MBED_BASE, "api") MBED_COMMON = join(MBED_BASE, "common") MBED_HAL = join(MBED_BASE, "hal") -VENDOR_PATH = join(MBED_BASE, "vendor") +MBED_TARGETS_PATH = join(MBED_BASE, "targets") MBED_LIBRARIES = join(BUILD_DIR, "mbed") diff --git a/workspace_tools/settings.py b/workspace_tools/settings.py index 5b0e8ecd14..10be15868b 100644 --- a/workspace_tools/settings.py +++ b/workspace_tools/settings.py @@ -71,9 +71,6 @@ IAR_PATH = "C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.0/arm" GCC_CW_PATH = "C:/Freescale/CW MCU v10.3/Cross_Tools/arm-none-eabi-gcc-4_6_2/bin" EWL_LIB_PATH = "C:/Freescale/CW MCU v10.3/MCU/ARM_GCC_Support/ewl/lib" -# GCC float ABI -M4_FLOAT_ABI = "softfp" - try: # Allow to overwrite the default settings without the need to edit the # settings file stored in the repository diff --git a/workspace_tools/synch.py b/workspace_tools/synch.py index c47f6f507f..6b5770755b 100644 --- a/workspace_tools/synch.py +++ b/workspace_tools/synch.py @@ -64,6 +64,9 @@ CODE_WITH_DEPENDENCIES = ( "UDPEchoServer", "BroadcastReceive", "BroadcastSend", + + # mbed sources + "mbed-src-program", ) diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index fcaab274cb..54a24bc897 100644 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -1,12 +1,17 @@ +CORE_LABELS = { + "ARM7TDMI-S": "ARM7", + "Cortex-M0" : "M0", + "Cortex-M0+": "M0P", + "Cortex-M3" : "M3", + "Cortex-M4" : "M4" +} + class Target: def __init__(self): # ARM Core self.core = None - # The silicon vendor of this chip - self.vendor = None - # How much time (in seconds) it takes to the interface chip to flash a # new image and reset the target chip self.program_cycle_s = 1.5 @@ -14,7 +19,13 @@ class Target: # list of toolchains that are supported by the mbed SDK for this target self.supported_toolchains = None + # list of extra specific labels + self.extra_labels = [] + self.name = self.__class__.__name__ + + def get_labels(self): + return [self.name, CORE_LABELS[self.core]] + self.extra_labels class LPC2368(Target): @@ -22,7 +33,8 @@ class LPC2368(Target): Target.__init__(self) self.core = "ARM7TDMI-S" - self.vendor = "NXP" + + self.extra_labels = ['LPC23XX'] self.supported_toolchains = ["ARM"] @@ -32,7 +44,8 @@ class LPC1768(Target): Target.__init__(self) self.core = "Cortex-M3" - self.vendor = "NXP" + + self.extra_labels = ['LPC176X'] self.supported_toolchains = ["ARM", "GCC_ARM", "GCC_CS", "GCC_CR", "IAR"] @@ -42,7 +55,8 @@ class LPC11U24(Target): Target.__init__(self) self.core = "Cortex-M0" - self.vendor = "NXP" + + self.extra_labels = ['LPC11UXX'] self.supported_toolchains = ["ARM", "uARM"] @@ -52,7 +66,6 @@ class KL25Z(Target): Target.__init__(self) self.core = "Cortex-M0+" - self.vendor = "Freescale" self.supported_toolchains = ["ARM", "GCC_CW_EWL", "GCC_CW_NEWLIB"] @@ -64,7 +77,8 @@ class LPC812(Target): Target.__init__(self) self.core = "Cortex-M0+" - self.vendor = "NXP" + + self.extra_labels = ['LPC81X'] self.supported_toolchains = ["uARM"] @@ -76,20 +90,21 @@ class LPC4088(Target): Target.__init__(self) self.core = "Cortex-M4" - self.vendor = "NXP" + + self.extra_labels = ['LPC408X'] self.supported_toolchains = ["ARM", "GCC_CR"] - + class MBED_MCU(Target): def __init__(self): Target.__init__(self) - + self.core = "Cortex-M0+" - self.vendor = "ARM" - + self.supported_toolchains = ["ARM"] + # Get a single instance for each target TARGETS = [ LPC2368(), diff --git a/workspace_tools/tests.py b/workspace_tools/tests.py index 7348a6a94c..673a0560da 100644 --- a/workspace_tools/tests.py +++ b/workspace_tools/tests.py @@ -44,54 +44,54 @@ Wiring: TESTS = [ # Automated MBED tests { - "id": "MBED_A1", "description": "MBED: Basic", + "id": "MBED_A1", "description": "Basic", "source_dir": join(TEST_DIR, "mbed", "basic"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, }, { - "id": "MBED_A2", "description": "MBED: semihost file system", + "id": "MBED_A2", "description": "semihost file system", "source_dir": join(TEST_DIR, "mbed", "file"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, "mcu": ["LPC1768", "LPC2368", "LPC11U24"] }, { - "id": "MBED_A3", "description": "MBED: C++ STL", + "id": "MBED_A3", "description": "C++ STL", "source_dir": join(TEST_DIR, "mbed", "stl"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, }, { - "id": "MBED_A4", "description": "MBED: I2C TMP102", + "id": "MBED_A4", "description": "I2C TMP102", "source_dir": join(TEST_DIR, "mbed", "i2c_TMP102"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'TMP102')], "automated": True, "peripherals": ["TMP102"] }, { - "id": "MBED_A5", "description": "MBED: DigitalIn DigitalOut", + "id": "MBED_A5", "description": "DigitalIn DigitalOut", "source_dir": join(TEST_DIR, "mbed", "digitalin_digitalout"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, "peripherals": ["digital_loop"] }, { - "id": "MBED_A6", "description": "MBED: DigitalInOut", + "id": "MBED_A6", "description": "DigitalInOut", "source_dir": join(TEST_DIR, "mbed", "digitalinout"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, "peripherals": ["digital_loop"] }, { - "id": "MBED_A7", "description": "MBED: InterruptIn", + "id": "MBED_A7", "description": "InterruptIn", "source_dir": join(TEST_DIR, "mbed", "interruptin"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, "peripherals": ["digital_loop"] }, { - "id": "MBED_A8", "description": "MBED: Analog", + "id": "MBED_A8", "description": "Analog", "source_dir": join(TEST_DIR, "mbed", "analog"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, @@ -99,14 +99,14 @@ TESTS = [ "mcu": ["LPC1768", "LPC2368", "KL25Z"] }, { - "id": "MBED_A9", "description": "MBED: Serial Echo at 115200", + "id": "MBED_A9", "description": "Serial Echo at 115200", "source_dir": join(TEST_DIR, "mbed", "echo"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, "host_test": "echo" }, { - "id": "MBED_A10", "description": "MBED: PortOut PortIn", + "id": "MBED_A10", "description": "PortOut PortIn", "source_dir": join(TEST_DIR, "mbed", "portout_portin"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "peripherals": ["port_loop"], @@ -114,7 +114,7 @@ TESTS = [ "automated": True, }, { - "id": "MBED_A11", "description": "MBED: PortInOut", + "id": "MBED_A11", "description": "PortInOut", "source_dir": join(TEST_DIR, "mbed", "portinout"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "peripherals": ["port_loop"], @@ -122,39 +122,39 @@ TESTS = [ "automated": True, }, { - "id": "MBED_A12", "description": "MBED: SD File System", + "id": "MBED_A12", "description": "SD File System", "source_dir": join(TEST_DIR, "mbed", "sd"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, SD_FS, FAT_FS], "automated": True, "peripherals": ["SD"] }, { - "id": "MBED_A13", "description": "MBED: I2C MMA7660", + "id": "MBED_A13", "description": "I2C MMA7660", "source_dir": join(TEST_DIR, "mbed", "i2c_MMA7660"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA7660')], "automated": True, "peripherals": ["MMA7660"] }, { - "id": "MBED_A14", "description": "MBED: I2C Master", + "id": "MBED_A14", "description": "I2C Master", "source_dir": join(TEST_DIR, "mbed", "i2c_master"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,], "automated": True }, { - "id": "MBED_A15", "description": "MBED: I2C Slave", + "id": "MBED_A15", "description": "I2C Slave", "source_dir": join(TEST_DIR, "mbed", "i2c_slave"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,], "automated": True }, { - "id": "MBED_A16", "description": "MBED: SPI Master", + "id": "MBED_A16", "description": "SPI Master", "source_dir": join(TEST_DIR, "mbed", "spi_master"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,], "automated": True }, { - "id": "MBED_A17", "description": "MBED: SPI Slave", + "id": "MBED_A17", "description": "SPI Slave", "source_dir": join(TEST_DIR, "mbed", "spi_slave"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,], "automated": True @@ -162,171 +162,171 @@ TESTS = [ # Size benchmarks { - "id": "BENCHMARK_1", "description": "Benchmark: Size (c environment)", + "id": "BENCHMARK_1", "description": "Size (c environment)", "source_dir": join(BENCHMARKS_DIR, "cenv"), "dependencies": [MBED_LIBRARIES] }, { - "id": "BENCHMARK_2", "description": "Benchmark: Size (float math)", + "id": "BENCHMARK_2", "description": "Size (float math)", "source_dir": join(BENCHMARKS_DIR, "float_math"), "dependencies": [MBED_LIBRARIES] }, { - "id": "BENCHMARK_3", "description": "Benchmark: Size (printf)", + "id": "BENCHMARK_3", "description": "Size (printf)", "source_dir": join(BENCHMARKS_DIR, "printf"), "dependencies": [MBED_LIBRARIES] }, { - "id": "BENCHMARK_4", "description": "Benchmark: Size (mbed libs)", + "id": "BENCHMARK_4", "description": "Size (mbed libs)", "source_dir": join(BENCHMARKS_DIR, "mbed"), "dependencies": [MBED_LIBRARIES] }, { - "id": "BENCHMARK_5", "description": "Benchmark: Size (all)", + "id": "BENCHMARK_5", "description": "Size (all)", "source_dir": join(BENCHMARKS_DIR, "all"), "dependencies": [MBED_LIBRARIES] }, # Not automated MBED tests { - "id": "MBED_1", "description": "MBED: I2C SRF08", + "id": "MBED_1", "description": "I2C SRF08", "source_dir": join(TEST_DIR, "mbed", "i2c_SRF08"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'SRF08')], "peripherals": ["SRF08"] }, { - "id": "MBED_2", "description": "MBED: stdio", + "id": "MBED_2", "description": "stdio", "source_dir": join(TEST_DIR, "mbed", "stdio"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_3", "description": "MBED: PortOut", + "id": "MBED_3", "description": "PortOut", "source_dir": join(TEST_DIR, "mbed", "portout"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_4", "description": "MBED: Sleep", + "id": "MBED_4", "description": "Sleep", "source_dir": join(TEST_DIR, "mbed", "sleep"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "duration": 30, "mcu": ["LPC1768", "LPC11U24"] }, { - "id": "MBED_5", "description": "MBED: PWM", + "id": "MBED_5", "description": "PWM", "source_dir": join(TEST_DIR, "mbed", "pwm"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_6", "description": "MBED: SW Reset", + "id": "MBED_6", "description": "SW Reset", "source_dir": join(TEST_DIR, "mbed", "reset"), "dependencies": [MBED_LIBRARIES], "duration": 15 }, { - "id": "MBED_7", "description": "MBED: stdio benchmark", + "id": "MBED_7", "description": "stdio benchmark", "source_dir": join(TEST_DIR, "mbed", "stdio_benchmark"), "dependencies": [MBED_LIBRARIES], "duration": 40 }, { - "id": "MBED_8", "description": "MBED: SPI", + "id": "MBED_8", "description": "SPI", "source_dir": join(TEST_DIR, "mbed", "spi"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_9", "description": "MBED: Sleep Timeout", + "id": "MBED_9", "description": "Sleep Timeout", "source_dir": join(TEST_DIR, "mbed", "sleep_timeout"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_10", "description": "MBED: Hello World", + "id": "MBED_10", "description": "Hello World", "source_dir": join(TEST_DIR, "mbed", "hello"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_11", "description": "MBED: Ticker", + "id": "MBED_11", "description": "Ticker", "source_dir": join(TEST_DIR, "mbed", "ticker"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_12", "description": "MBED: C++", + "id": "MBED_12", "description": "C++", "source_dir": join(TEST_DIR, "mbed", "cpp"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_13", "description": "MBED: Heap & Stack", + "id": "MBED_13", "description": "Heap & Stack", "source_dir": join(TEST_DIR, "mbed", "heap_and_stack"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_14", "description": "MBED: Serial Interrupt", + "id": "MBED_14", "description": "Serial Interrupt", "source_dir": join(TEST_DIR, "mbed", "serial_interrupt"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_15", "description": "MBED: RPC", + "id": "MBED_15", "description": "RPC", "source_dir": join(TEST_DIR, "mbed", "rpc"), "dependencies": [MBED_LIBRARIES, join(LIB_DIR, "rpc")], "host_test": "rpc", }, { - "id": "MBED_16", "description": "MBED: RTC", + "id": "MBED_16", "description": "RTC", "source_dir": join(TEST_DIR, "mbed", "rtc"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_17", "description": "MBED: Serial Interrupt 2", + "id": "MBED_17", "description": "Serial Interrupt 2", "source_dir": join(TEST_DIR, "mbed", "serial_interrupt_2"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_18", "description": "MBED: Local FS Directory", + "id": "MBED_18", "description": "Local FS Directory", "source_dir": join(TEST_DIR, "mbed", "dir"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_19", "description": "MBED: SD FS Directory", + "id": "MBED_19", "description": "SD FS Directory", "source_dir": join(TEST_DIR, "mbed", "dir_sd"), "dependencies": [MBED_LIBRARIES, SD_FS, FAT_FS], "peripherals": ["SD"] }, { - "id": "MBED_20", "description": "MBED: InterruptIn 2", + "id": "MBED_20", "description": "InterruptIn 2", "source_dir": join(TEST_DIR, "mbed", "interruptin_2"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_21", "description": "MBED: freopen Stream", + "id": "MBED_21", "description": "freopen Stream", "source_dir": join(TEST_DIR, "mbed", "freopen"), "dependencies": [MBED_LIBRARIES], }, { - "id": "MBED_22", "description": "MBED: Semihost", + "id": "MBED_22", "description": "Semihost", "source_dir": join(TEST_DIR, "mbed", "semihost"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_23", "description": "MBED: Ticker 2", + "id": "MBED_23", "description": "Ticker 2", "source_dir": join(TEST_DIR, "mbed", "ticker_2"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_24", "description": "MBED: Timeout", + "id": "MBED_24", "description": "Timeout", "source_dir": join(TEST_DIR, "mbed", "timeout"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_25", "description": "MBED: Time us", + "id": "MBED_25", "description": "Time us", "source_dir": join(TEST_DIR, "mbed", "time_us"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_26", "description": "MBED: Integer constant division", + "id": "MBED_26", "description": "Integer constant division", "source_dir": join(TEST_DIR, "mbed", "div"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], }, { - "id": "MBED_27", "description": "MBED: SPI ADXL345", + "id": "MBED_27", "description": "SPI ADXL345", "source_dir": join(TEST_DIR, "mbed", "spi_ADXL345"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'ADXL345')], "automated": True, @@ -335,173 +335,173 @@ TESTS = [ # CMSIS RTOS tests { - "id": "CMSIS_RTOS_1", "description": "CMSIS RTOS: Basic", + "id": "CMSIS_RTOS_1", "description": "Basic", "source_dir": join(TEST_DIR, "rtos", "cmsis", "basic"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "CMSIS_RTOS_2", "description": "CMSIS RTOS: Mutex", + "id": "CMSIS_RTOS_2", "description": "Mutex", "source_dir": join(TEST_DIR, "rtos", "cmsis", "mutex"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], "duration": 20 }, { - "id": "CMSIS_RTOS_3", "description": "CMSIS RTOS: Semaphore", + "id": "CMSIS_RTOS_3", "description": "Semaphore", "source_dir": join(TEST_DIR, "rtos", "cmsis", "semaphore"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], "duration": 20 }, { - "id": "CMSIS_RTOS_4", "description": "CMSIS RTOS: Signals", + "id": "CMSIS_RTOS_4", "description": "Signals", "source_dir": join(TEST_DIR, "rtos", "cmsis", "signals"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "CMSIS_RTOS_5", "description": "CMSIS RTOS: Queue", + "id": "CMSIS_RTOS_5", "description": "Queue", "source_dir": join(TEST_DIR, "rtos", "cmsis", "queue"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], "duration": 20 }, { - "id": "CMSIS_RTOS_6", "description": "CMSIS RTOS: Mail", + "id": "CMSIS_RTOS_6", "description": "Mail", "source_dir": join(TEST_DIR, "rtos", "cmsis", "mail"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], "duration": 20 }, { - "id": "CMSIS_RTOS_7", "description": "CMSIS RTOS: Timer", + "id": "CMSIS_RTOS_7", "description": "Timer", "source_dir": join(TEST_DIR, "rtos", "cmsis", "timer"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "CMSIS_RTOS_8", "description": "CMSIS RTOS: ISR", + "id": "CMSIS_RTOS_8", "description": "ISR", "source_dir": join(TEST_DIR, "rtos", "cmsis", "isr"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, # mbed RTOS tests { - "id": "RTOS_1", "description": "RTOS: Basic", + "id": "RTOS_1", "description": "Basic", "source_dir": join(TEST_DIR, "rtos", "mbed", "basic"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_2", "description": "RTOS: Mutex", + "id": "RTOS_2", "description": "Mutex", "source_dir": join(TEST_DIR, "rtos", "mbed", "mutex"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], "duration": 20 }, { - "id": "RTOS_3", "description": "RTOS: Semaphore", + "id": "RTOS_3", "description": "Semaphore", "source_dir": join(TEST_DIR, "rtos", "mbed", "semaphore"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_4", "description": "RTOS: Signals", + "id": "RTOS_4", "description": "Signals", "source_dir": join(TEST_DIR, "rtos", "mbed", "signals"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_5", "description": "RTOS: Queue", + "id": "RTOS_5", "description": "Queue", "source_dir": join(TEST_DIR, "rtos", "mbed", "queue"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_6", "description": "RTOS: Mail", + "id": "RTOS_6", "description": "Mail", "source_dir": join(TEST_DIR, "rtos", "mbed", "mail"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_7", "description": "RTOS: Timer", + "id": "RTOS_7", "description": "Timer", "source_dir": join(TEST_DIR, "rtos", "mbed", "timer"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_8", "description": "RTOS: ISR", + "id": "RTOS_8", "description": "ISR", "source_dir": join(TEST_DIR, "rtos", "mbed", "isr"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES], }, { - "id": "RTOS_9", "description": "RTOS: File", + "id": "RTOS_9", "description": "File", "source_dir": join(TEST_DIR, "rtos", "mbed", "file"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, SD_FS, FAT_FS], }, # Networking Tests { - "id": "NET_1", "description": "NET: TCP client hello world", + "id": "NET_1", "description": "TCP client hello world", "source_dir": join(TEST_DIR, "net", "helloworld", "tcpclient"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_2", "description": "NET: UDP client hello world", + "id": "NET_2", "description": "UDP client hello world", "source_dir": join(TEST_DIR, "net", "helloworld", "udpclient"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_3", "description": "NET: TCP echo server", + "id": "NET_3", "description": "TCP echo server", "source_dir": join(TEST_DIR, "net", "echo", "tcp_server"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_4", "description": "NET: TCP echo client", + "id": "NET_4", "description": "TCP echo client", "source_dir": join(TEST_DIR, "net", "echo", "tcp_client"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_5", "description": "NET: UDP echo server", + "id": "NET_5", "description": "UDP echo server", "source_dir": join(TEST_DIR, "net", "echo", "udp_server"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_6", "description": "NET: UDP echo client", + "id": "NET_6", "description": "UDP echo client", "source_dir": join(TEST_DIR, "net", "echo", "udp_client"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_7", "description": "NET: HTTP client", + "id": "NET_7", "description": "HTTP client", "source_dir": join(TEST_DIR, "net", "protocols", "HTTPClient_HelloWorld"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_8", "description": "NET: NTP client", + "id": "NET_8", "description": "NTP client", "source_dir": join(TEST_DIR, "net", "protocols", "NTPClient_HelloWorld"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_9", "description": "NET: Multicast Send", + "id": "NET_9", "description": "Multicast Send", "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_send"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_10", "description": "NET: Multicast Receive", + "id": "NET_10", "description": "Multicast Receive", "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_receive"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_11", "description": "NET: Broadcast Send", + "id": "NET_11", "description": "Broadcast Send", "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_send"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_12", "description": "NET: Broadcast Receive", + "id": "NET_12", "description": "Broadcast Receive", "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_receive"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "NET_13", "description": "NET: TCP client echo loop", + "id": "NET_13", "description": "TCP client echo loop", "source_dir": join(TEST_DIR, "net", "echo", "tcp_client_loop"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY], "supported": CORTEX_ARM_SUPPORT, @@ -509,14 +509,14 @@ TESTS = [ # Vodafone tests { - "id": "VF_1", "description": "Vodafone: HTTP client", + "id": "VF_1", "description": "HTTP client", "source_dir": join(TEST_DIR, "net", "vodafone", "HTTPClient_HelloWorld"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, VODAFONE_LIBRARY, TEST_MBED_LIB], "supported": CORTEX_ARM_SUPPORT, "automated": False, }, { - "id": "VF_2", "description": "Vodafone: USSD & SMS Test", + "id": "VF_2", "description": "USSD & SMS Test", "source_dir": join(TEST_DIR, "net", "vodafone", "USSD_SMS_HelloWorld"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, VODAFONE_LIBRARY, TEST_MBED_LIB], "supported": CORTEX_ARM_SUPPORT, @@ -525,43 +525,43 @@ TESTS = [ # USB Tests { - "id": "USB_1", "description": "USB: Mouse", + "id": "USB_1", "description": "Mouse", "source_dir": join(TEST_DIR, "usb", "device", "basic"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "USB_2", "description": "USB: Keyboard", + "id": "USB_2", "description": "Keyboard", "source_dir": join(TEST_DIR, "usb", "device", "keyboard"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "USB_3", "description": "USB: Mouse_Keyboard", + "id": "USB_3", "description": "Mouse_Keyboard", "source_dir": join(TEST_DIR, "usb", "device", "keyboard"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "USB_4", "description": "USB: Serial Port", + "id": "USB_4", "description": "Serial Port", "source_dir": join(TEST_DIR, "usb", "device", "serial"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "USB_5", "description": "USB: Generic HID", + "id": "USB_5", "description": "Generic HID", "source_dir": join(TEST_DIR, "usb", "device", "raw_hid"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "USB_6", "description": "USB: MIDI", + "id": "USB_6", "description": "MIDI", "source_dir": join(TEST_DIR, "usb", "device", "midi"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, }, { - "id": "USB_7", "description": "USB: AUDIO", + "id": "USB_7", "description": "AUDIO", "source_dir": join(TEST_DIR, "usb", "device", "audio"), "dependencies": [MBED_LIBRARIES, USB_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, @@ -569,7 +569,7 @@ TESTS = [ # CMSIS DSP { - "id": "CMSIS_DSP_1", "description": "CMSIS DSP: FIR", + "id": "CMSIS_DSP_1", "description": "FIR", "source_dir": join(TEST_DIR, "dsp", "cmsis", "fir_f32"), "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, @@ -577,7 +577,7 @@ TESTS = [ # mbed DSP { - "id": "DSP_1", "description": "DSP: FIR", + "id": "DSP_1", "description": "FIR", "source_dir": join(TEST_DIR, "dsp", "mbed", "fir_f32"), "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, @@ -585,64 +585,49 @@ TESTS = [ # KL25Z { - "id": "KL25Z_1", "description": "KL25Z: LPTMR", + "id": "KL25Z_1", "description": "LPTMR", "source_dir": join(TEST_DIR, "KL25Z", "lptmr"), "dependencies": [MBED_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, "mcu": ["KL25Z"], }, { - "id": "KL25Z_2", "description": "KL25Z: PIT", + "id": "KL25Z_2", "description": "PIT", "source_dir": join(TEST_DIR, "KL25Z", "pit"), "dependencies": [MBED_LIBRARIES], "supported": CORTEX_ARM_SUPPORT, "mcu": ["KL25Z"], }, { - "id": "KL25Z_3", "description": "KL25Z: TSI Touch Sensor", + "id": "KL25Z_3", "description": "TSI Touch Sensor", "source_dir": join(TEST_DIR, "mbed", "tsi"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'TSI')], "mcu": ["KL25Z"], }, { - "id": "KL25Z_4", "description": "KL25Z: RTC", + "id": "KL25Z_4", "description": "RTC", "source_dir": join(TEST_DIR, "KL25Z", "rtc"), "dependencies": [MBED_LIBRARIES], "mcu": ["KL25Z"], }, { - "id": "KL25Z_5", "description": "KL25Z: MMA8451Q accelerometer", + "id": "KL25Z_5", "description": "MMA8451Q accelerometer", "source_dir": join(TEST_DIR, "mbed", "i2c_MMA8451Q"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA8451Q')], "mcu": ["KL25Z"], }, - # LPC812 - { - "id": "LPC812_1", "description": "LPC812: Blinky", - "source_dir": join(TEST_DIR, "lpc812", "blinky"), - "dependencies": [MBED_LIBRARIES], - "mcu": ["LPC812"], - }, - - # MBED_MCU - { - "id": "MBED_MCU_1", "description": "MBED_MCU: BASIC", - "source_dir": join(TEST_DIR, "mbed", "mbed_mcu_basic"), - "dependencies": [MBED_LIBRARIES], - }, - # Examples { - "id": "EXAMPLE_1", "description": "Example: /dev/null", + "id": "EXAMPLE_1", "description": "/dev/null", "source_dir": join(TEST_DIR, "mbed", "dev_null"), "dependencies": [MBED_LIBRARIES], }, { - "id": "EXAMPLE_2", "description": "Example: FS + RTOS", + "id": "EXAMPLE_2", "description": "FS + RTOS", "source_dir": join(TEST_DIR, "mbed", "fs"), "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, SD_FS, FAT_FS], - } + }, ] class Test: @@ -669,5 +654,12 @@ class Test: return self.description else: return self.id + + def __cmp__(self, other): + return cmp(self.n, other.n) + + def __str__(self): + return "[%3d] %s: %s" % (self.n, self.id, self.get_description()) + TEST_MAP = dict([(test['id'], Test(i)) for i, test in enumerate(TESTS)]) diff --git a/workspace_tools/toolchains.py b/workspace_tools/toolchains.py deleted file mode 100644 index bf2534936c..0000000000 --- a/workspace_tools/toolchains.py +++ /dev/null @@ -1,804 +0,0 @@ -from os import stat, walk, remove -from os.path import splitext, exists, relpath, dirname, basename, split -from shutil import copyfile -from copy import copy -from types import ListType -import re - -from workspace_tools.settings import * -from workspace_tools.utils import run_cmd, mkdir, rel_path, ToolException, split_path -from workspace_tools.patch import patch -from workspace_tools.targets import TARGET_NAMES - -""" -We made the unfortunate choice of calling the ARM standard library toolchain "ARM" -and the ARM microlib "uARM". - -Now we want to define toolchain types. For example: - ARM: [ARM_STD, ARM_MICRO] - GCC: [GCC_CR, GCC_CS, GCC_ARM] - -We are going to introduce the "GCC" type directory, but we cannot use the "ARM" -type directory, because it would get confused with the legacy "ARM" toolchain. - -[TODO] Rename ARM toolchains: - * ARM -> ARM_STD - * uARM -> ARM_MICRO -""" - -# List of ignored directories (all the hidden directories are ignored by default) -IGNORE_DIRECTORIES = set(['CVS']) - - -def print_notify(event): - # Default command line notification - if event['type'] in ['info', 'debug']: - print event['message'] - - elif event['type'] == 'cc': - event['severity'] = event['severity'].title() - event['file'] = basename(event['file']) - print '[%(severity)s] %(file)s@%(line)s: %(message)s' % event - - elif event['type'] == 'progress': - print '%s: %s' % (event['action'].title(), basename(event['file'])) - - -class Resources: - def __init__(self, base_path=None): - self.base_path = base_path - - self.inc_dirs = [] - self.headers = [] - - self.s_sources = [] - self.c_sources = [] - self.cpp_sources = [] - - self.lib_dirs = set([]) - self.objects = [] - self.libraries = [] - - # mbed special files - self.lib_builds = [] - - self.linker_script = None - - def add(self, resources): - self.inc_dirs += resources.inc_dirs - self.headers += resources.headers - - self.s_sources += resources.s_sources - self.c_sources += resources.c_sources - self.cpp_sources += resources.cpp_sources - - self.lib_dirs |= resources.lib_dirs - self.objects += resources.objects - self.libraries += resources.libraries - - self.lib_builds += resources.lib_builds - - if resources.linker_script is not None: - self.linker_script = resources.linker_script - - def relative_to(self, base, dot=False): - for field in ['inc_dirs', 'headers', 's_sources', 'c_sources', - 'cpp_sources', 'lib_dirs', 'objects', 'libraries']: - v = [rel_path(f, base, dot) for f in getattr(self, field)] - setattr(self, field, v) - if self.linker_script is not None: - self.linker_script = rel_path(self.linker_script, base, dot) - - def win_to_unix(self): - for field in ['inc_dirs', 'headers', 's_sources', 'c_sources', - 'cpp_sources', 'lib_dirs', 'objects', 'libraries']: - v = [f.replace('\\', '/') for f in getattr(self, field)] - setattr(self, field, v) - if self.linker_script is not None: - self.linker_script = self.linker_script.replace('\\', '/') - - def __str__(self): - s = [] - - for (label, resources) in ( - ('Include Directories', self.inc_dirs), - ('Headers', self.headers), - - ('Assembly sources', self.s_sources), - ('C sources', self.c_sources), - ('C++ sources', self.cpp_sources), - - ('Library directories', self.lib_dirs), - ('Objects', self.objects), - ('Libraries', self.libraries) - ): - if resources: - s.append('%s:\n ' % label + '\n '.join(resources)) - - if self.linker_script: - s.append('Linker Script: ' + self.linker_script) - - return '\n'.join(s) - - -class mbedToolchain: - VERBOSE = True - - CORTEX_SYMBOLS = { - "Cortex-M3" : ["__CORTEX_M3", "ARM_MATH_CM3"], - "Cortex-M0" : ["__CORTEX_M0", "ARM_MATH_CM0"], - "Cortex-M0+": ["__CORTEX_M0PLUS", "ARM_MATH_CM0"], - "Cortex-M4" : ["__CORTEX_M4", "ARM_MATH_CM4", "__FPU_PRESENT=1"], - } - - def __init__(self, target, notify=None): - self.target = target - - if notify is not None: - self.notify = notify - else: - self.notify = print_notify - - bin_tuple = (target.name, self.NAME) - self.obj_path = join(*bin_tuple) - self.IGNORE_DIR = (IGNORE_DIRECTORIES | set(TARGET_NAMES) | TOOLCHAINS) - set(bin_tuple) - - # Target and Toolchain symbols - self.symbols = [ - "TARGET_" + target.name, "TOOLCHAIN_" + self.NAME, - ] - - # Cortex CPU symbols - if target.core in mbedToolchain.CORTEX_SYMBOLS: - self.symbols.extend(mbedToolchain.CORTEX_SYMBOLS[target.core]) - - self.IGNORE_FILES = [] - - self.build_all = False - self.mbed_libs = False - - def need_update(self, target, dependencies): - if self.build_all: - return True - - if not exists(target): - return True - - target_mod_time = stat(target).st_mtime - - for d in dependencies: - # Some objects are not provided with full path and here we do not have - # information about the library paths. Safe option: assume an update - if not d or not exists(d): - return True - - if stat(d).st_mtime >= target_mod_time: - return True - - return False - - def set_options(self, options): - # Generic options - if 'symbols' in options: - self.symbols.extend(options['symbols']) - - # Toolchain specific options - if self.NAME in options: - to = options[self.NAME] - if 'source_dir' in to: - self.IGNORE_DIR -= set(to['source_dir']) - - if 'remove_options' in to: - for option in to['remove_options']: - self.remove_option(option) - - # Target specific options - if self.target.name in options: - to = options[self.target.name] - if 'ignore_files' in to: - self.IGNORE_FILES.extend(to['ignore_files']) - - def scan_resources(self, path): - resources = Resources(path) - """ os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) - When topdown is True, the caller can modify the dirnames list in-place - (perhaps using del or slice assignment), and walk() will only recurse into - the subdirectories whose names remain in dirnames; this can be used to prune - the search, impose a specific order of visiting, or even to inform walk() - about directories the caller creates or renames before it resumes walk() - again. Modifying dirnames when topdown is False is ineffective, because in - bottom-up mode the directories in dirnames are generated before dirpath - itself is generated. - """ - for root, dirs, files in walk(path): - # Remove ignored directories - for d in copy(dirs): - if d.startswith('.') or d in self.IGNORE_DIR: - dirs.remove(d) - - # Add root to include paths - resources.inc_dirs.append(root) - - for file in files: - if file in self.IGNORE_FILES: continue - - file_path = join(root, file) - _, ext = splitext(file) - ext = ext.lower() - - if ext == '.s': - resources.s_sources.append(file_path) - - elif ext == '.c': - resources.c_sources.append(file_path) - - elif ext == '.cpp': - resources.cpp_sources.append(file_path) - - elif ext == '.h': - resources.headers.append(file_path) - - # Check if there are the mbed libraries for this target/toolchain - if file == "mbed.h": - if self.NAME == 'ARM': # Legacy default toolchain - self.mbed_libs = True - else: - self.mbed_libs = exists(join(root, self.target.name, self.NAME)) - - elif ext == '.o': - resources.objects.append(file_path) - - elif ext == self.LIBRARY_EXT: - resources.libraries.append(file_path) - resources.lib_dirs.add(root) - - elif ext == self.LINKER_EXT: - resources.linker_script = file_path - - elif ext == '.bld': - resources.lib_builds.append(file_path) - - return resources - - def copy_files(self, files_paths, trg_path, rel_path=None): - # Handle a single file - if type(files_paths) != ListType: files_paths = [files_paths] - - for source in files_paths: - if rel_path is not None: - relative_path = relpath(source, rel_path) - else: - _, relative_path = split(source) - - target = join(trg_path, relative_path) - - if (target != source) and (self.need_update(target, [source])): - self.progress("copy", relative_path) - mkdir(dirname(target)) - copyfile(source, target) - - def relative_object_path(self, build_path, base_dir, source): - source_dir, name, _ = split_path(source) - obj_dir = join(build_path, relpath(source_dir, base_dir)) - mkdir(obj_dir) - return join(obj_dir, name + '.o') - - def compile_sources(self, resources, build_path, inc_dirs=None): - # Web IDE progress bar for project build - self.to_be_compiled = len(resources.s_sources) + len(resources.c_sources) + len(resources.cpp_sources) - self.compiled = 0 - - objects = [] - inc_paths = resources.inc_dirs - if inc_dirs is not None: - inc_paths.extend(inc_dirs) - - base_path = resources.base_path - - for source in resources.s_sources: - self.compiled += 1 - object = self.relative_object_path(build_path, base_path, source) - if self.need_update(object, [source]): - self.progress("assemble", source, build_update=True) - self.assemble(source, object) - objects.append(object) - - # The dependency checking for C/C++ is delegated to the specific compiler - for source in resources.c_sources: - object = self.relative_object_path(build_path, base_path, source) - self.compile_c(source, object, inc_paths) - objects.append(object) - - for source in resources.cpp_sources: - object = self.relative_object_path(build_path, base_path, source) - self.compile_cpp(source, object, inc_paths) - objects.append(object) - - return objects - - def compile(self, cc, source, object, includes): - # Check dependencies - base, _ = splitext(object) - dep_path = base + '.d' - - self.compiled += 1 - if (not exists(dep_path) or - self.need_update(object, self.parse_dependencies(dep_path))): - - self.progress("compile", source, build_update=True) - - # Compile - command = cc + ['-D%s' % s for s in self.symbols] + ["-I%s" % i for i in includes] + ["-o", object, source] - if hasattr(self, "get_dep_opt"): - command.extend(self.get_dep_opt(dep_path)) - - if hasattr(self, "cc_extra"): - command.extend(self.cc_extra(base)) - - self.debug(command) - _, stderr, rc = run_cmd(command, dirname(object)) - - # Parse output for Warnings and Errors - self.parse_output(stderr) - - # Check return code - if rc != 0: - raise ToolException(stderr) - - def compile_c(self, source, object, includes): - self.compile(self.cc, source, object, includes) - - def compile_cpp(self, source, object, includes): - self.compile(self.cppc, source, object, includes) - - def build_library(self, objects, dir, name): - lib = self.STD_LIB_NAME % name - fout = join(dir, lib) - if self.need_update(fout, objects): - self.info("Library: %s" % lib) - self.archive(objects, fout) - - def build_program(self, r, tmp_path, name): - objects = self.compile_sources(r, tmp_path) + r.objects - - elf = join(tmp_path, name + '.elf') - bin = join(tmp_path, name + '.bin') - - if self.need_update(elf, objects + r.libraries + [r.linker_script]): - self.progress("link", name) - self.link(elf, objects, r.libraries, r.lib_dirs, r.linker_script) - - if self.need_update(bin, [elf]): - self.progress("elf2bin", name) - self.binary(elf, bin) - - if self.target.vendor == 'NXP': - self.debug("LPC Patch %s" % (name + '.bin')) - patch(bin) - - self.var("compile_succeded", True) - self.var("binary", name+'.bin') - - return bin - - def default_cmd(self, command): - self.debug(command) - stdout, stderr, rc = run_cmd(command) - self.debug(stdout) - if rc != 0: - for line in stderr.splitlines(): - self.tool_error(line) - raise ToolException(stderr) - - ### NOTIFICATIONS ### - def info(self, message): - self.notify({'type': 'info', 'message': message}) - - def debug(self, message): - if self.VERBOSE: - if type(message) is ListType: - message = ' '.join(message) - self.notify({'type': 'debug', 'message': message}) - - def cc_info(self, severity, file, line, message): - self.notify({'type': 'cc', 'severity': severity, 'file': file, 'line': line, 'message': message}) - - def progress(self, action, file, build_update=False): - msg = {'type': 'progress', 'action': action, 'file': file} - if build_update: - msg['percent'] = 100. * float(self.compiled) / float(self.to_be_compiled) - self.notify(msg) - - def tool_error(self, message): - self.notify({'type': 'tool_error', 'message': message}) - - def var(self, key, value): - self.notify({'type': 'var', 'key': key, 'val': value}) - - -class ARM(mbedToolchain): - LINKER_EXT = '.sct' - LIBRARY_EXT = '.ar' - - STD_LIB_NAME = "%s.ar" - DIAGNOSTIC_PATTERN = re.compile('"(?P[^"]+)", line (?P\d+): (?PWarning|Error): (?P.+)') - DEP_PATTERN = re.compile('\S+:\s(?P.+)\n') - - def __init__(self, target, notify): - mbedToolchain.__init__(self, target, notify) - - if target.core == "Cortex-M0+": - cpu = "Cortex-M0" - elif target.core == "Cortex-M4": - cpu = "Cortex-M4.fp" - else: - cpu = target.core - - common = [join(ARM_BIN, "armcc"), "-c", - "--cpu=%s" % cpu, "--gnu", - "-Ospace", "--split_sections", "--apcs=interwork", - "--brief_diagnostics", "--restrict" - ] # "--asm" "--interleave" - common_c = [ - "--md", "--no_depend_system_headers", - '-I%s' % ARM_INC - ] - - self.asm = common - self.cc = common + common_c + ["--c99"] - self.cppc = common + common_c + ["--cpp", "--no_rtti"] - - self.ld = [join(ARM_BIN, "armlink")] - self.sys_libs = [] - - self.ar = join(ARM_BIN, "armar") - self.elf2bin = join(ARM_BIN, "fromelf") - - def remove_option(self, option): - for tool in [self.asm, self.cc, self.cppc]: - if option in tool: - tool.remove(option) - - def assemble(self, source, object): - self.default_cmd(self.cc + ["-o", object, source]) - - def parse_dependencies(self, dep_path): - dependencies = [] - for line in open(dep_path).readlines(): - match = ARM.DEP_PATTERN.match(line) - if match is not None: - dependencies.append(match.group('file')) - return dependencies - - def parse_output(self, output): - for line in output.splitlines(): - match = ARM.DIAGNOSTIC_PATTERN.match(line) - if match is not None: - self.cc_info( - match.group('severity').lower(), - match.group('file'), - match.group('line'), - match.group('message') - ) - - def archive(self, objects, lib_path): - self.default_cmd([self.ar, '-r', lib_path] + objects) - - def link(self, output, objects, libraries, lib_dirs, mem_map): - args = ["-o", output, "--userlibpath", ",".join(lib_dirs), "--info=totals", "--list=.link_totals.txt"] - if mem_map: - args.extend(["--scatter", mem_map]) - - self.default_cmd(self.ld + args + objects + libraries + self.sys_libs) - - def binary(self, elf, bin): - self.default_cmd([self.elf2bin, '--bin', '-o', bin, elf]) - - -class ARM_STD(ARM): - NAME = 'ARM' # In the future we want to rename it ARM_STD - - def __init__(self, target, notify=None): - ARM.__init__(self, target, notify) - self.ld.append("--libpath=%s" % ARM_LIB) - - -class ARM_MICRO(ARM): - NAME = 'uARM' # In the future we want to rename it ARM_MICRO - PATCHED_LIBRARY = True - - def __init__(self, target, notify=None): - ARM.__init__(self, target, notify) - - # Compiler - self.asm += ["-D__MICROLIB"] - self.cc += ["--library_type=microlib", "-D__MICROLIB"] - self.cppc += ["--library_type=microlib", "-D__MICROLIB"] - - # Linker - self.ld.append("--library_type=microlib") - - # We had to patch microlib to add C++ support - # In later releases this patch should have entered mainline - if ARM_MICRO.PATCHED_LIBRARY: - self.ld.append("--noscanlib") - - # System Libraries - self.sys_libs.extend([join(MY_ARM_CLIB, lib+".l") for lib in ["mc_p", "mf_p", "m_ps"]]) - - if target.core == "Cortex-M3": - self.sys_libs.extend([join(ARM_CPPLIB, lib+".l") for lib in ["cpp_ws", "cpprt_w"]]) - - elif target.core in ["Cortex-M0", "Cortex-M0+"]: - self.sys_libs.extend([join(ARM_CPPLIB, lib+".l") for lib in ["cpp_ps", "cpprt_p"]]) - else: - self.ld.append("--libpath=%s" % ARM_LIB) - - -class GCC(mbedToolchain): - LINKER_EXT = '.ld' - LIBRARY_EXT = '.a' - - STD_LIB_NAME = "lib%s.a" - CIRCULAR_DEPENDENCIES = True - DIAGNOSTIC_PATTERN = re.compile('((?P\d+):)(\d+:)? (?Pwarning|error): (?P.+)') - - def __init__(self, target, notify, tool_path): - mbedToolchain.__init__(self, target, notify) - - if target.core == "Cortex-M0+": - cpu = "cortex-m0" - else: - cpu = target.core.lower() - - self.cpu = ["-mcpu=%s" % cpu] - if target.core.startswith("Cortex"): - self.cpu.append("-mthumb") - - if target.core == "Cortex-M4": - self.cpu.append("-mfpu=fpv4-sp-d16") - self.cpu.append("-mfloat-abi=%s" % M4_FLOAT_ABI) - - # Note: We are using "-O2" instead of "-Os" to avoid this known GCC bug: - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46762 - common_flags = ["-c", "-O2", "-Wall", - "-fmessage-length=0", "-fno-exceptions", "-fno-builtin", - "-ffunction-sections", "-fdata-sections", - "-MMD", "-save-temps" - ] + self.cpu - - self.asm = [join(tool_path, "arm-none-eabi-as")] + self.cpu - - self.cc = [join(tool_path, "arm-none-eabi-gcc"), "-std=gnu99"] + common_flags - self.cppc =[join(tool_path, "arm-none-eabi-g++"), "-std=gnu++98"] + common_flags - - self.ld = [join(tool_path, "arm-none-eabi-gcc"), "-Wl,--gc-sections"] + self.cpu - self.sys_libs = ["stdc++", "supc++", "m", "c", "gcc"] - - self.ar = join(tool_path, "arm-none-eabi-ar") - self.elf2bin = join(tool_path, "arm-none-eabi-objcopy") - - def assemble(self, source, object): - self.default_cmd(self.asm + ["-o", object, source]) - - def parse_dependencies(self, dep_path): - dependencies = [] - for line in open(dep_path).readlines()[1:]: - file = line.replace('\\\n', '').strip() - if file: - dependencies.append(file) - return dependencies - - def parse_output(self, output): - # The warning/error notification is multiline - WHERE, WHAT = 0, 1 - state, file, message = WHERE, None, None - for line in output.splitlines(): - # Each line should start with the file information: "filepath: ..." - # i should point past the file path ^ - # avoid the first column in Windows (C:\) - i = line.find(':', 2) - if i == -1: continue - - if state == WHERE: - file = line[:i] - message = line[i+1:].strip() + ' ' - state = WHAT - - elif state == WHAT: - match = GCC.DIAGNOSTIC_PATTERN.match(line[i+1:]) - if match is None: - state = WHERE - continue - - self.cc_info( - match.group('severity'), - file, match.group('line'), - message + match.group('message') - ) - - def archive(self, objects, lib_path): - self.default_cmd([self.ar, "rcs", lib_path] + objects) - - def link(self, output, objects, libraries, lib_dirs, mem_map): - libs = [] - for l in libraries: - name, _ = splitext(basename(l)) - libs.append("-l%s" % name[3:]) - libs.extend(["-l%s" % l for l in self.sys_libs]) - - # NOTE: There is a circular dependency between the mbed library and the clib - # We could define a set of week symbols to satisfy the clib dependencies in "sys.o", - # but if an application uses only clib symbols and not mbed symbols, then the final - # image is not correctly retargeted - if self.CIRCULAR_DEPENDENCIES: - libs.extend(libs) - - self.default_cmd(self.ld + ["-T%s" % mem_map, "-o", output] + - objects + ["-L%s" % L for L in lib_dirs] + libs) - - def binary(self, elf, bin): - self.default_cmd([self.elf2bin, "-O", "binary", elf, bin]) - - -class GCC_ARM(GCC): - NAME = 'GCC_ARM' - - def __init__(self, target, notify=None): - GCC.__init__(self, target, notify, GCC_ARM_PATH) - - # Use latest gcc nanolib - self.ld.append("--specs=nano.specs") - if target in ["LPC1768"]: - self.ld.extend(["-u", "_printf_float", "-u", "_scanf_float"]) - - self.sys_libs.append("nosys") - - -class GCC_CR(GCC): - NAME = 'GCC_CR' - - def __init__(self, target, notify=None): - GCC.__init__(self, target, notify, GCC_CR_PATH) - - additional_compiler_flags = [ - "-D__NEWLIB__", "-D__CODE_RED", "-D__USE_CMSIS", "-DCPP_USE_HEAP", - ] - self.cc += additional_compiler_flags - self.cppc += additional_compiler_flags - - self.ld += ["-nostdlib"] - - -class GCC_CS(GCC): - NAME = 'GCC_CS' - - def __init__(self, target, notify=None): - GCC.__init__(self, target, notify, GCC_CS_PATH) - - -class GCC_CW(GCC): - ARCH_LIB = { - "Cortex-M0+": "armv6-m", - } - - def __init__(self, target, notify=None): - GCC.__init__(self, target, notify, CW_GCC_PATH) - - -class GCC_CW_EWL(GCC_CW): - NAME = 'GCC_CW_EWL' - - def __init__(self, target, notify=None): - GCC_CW.__init__(self, target, notify) - - # Compiler - common = [ - '-mfloat-abi=soft', - '-nostdinc', '-I%s' % join(CW_EWL_PATH, "EWL_C", "include"), - ] - self.cc += common + [ - '-include', join(CW_EWL_PATH, "EWL_C", "include", 'lib_c99.prefix') - ] - self.cppc += common + [ - '-nostdinc++', '-I%s' % join(CW_EWL_PATH, "EWL_C++", "include"), - '-include', join(CW_EWL_PATH, "EWL_C++", "include", 'lib_ewl_c++.prefix') - ] - - # Linker - self.sys_libs = [] - self.CIRCULAR_DEPENDENCIES = False - self.ld = [join(GCC_CW_PATH, "arm-none-eabi-g++"), - "-Xlinker", "--gc-sections", - "-L%s" % join(CW_EWL_PATH, "lib", GCC_CW.ARCH_LIB[target.core]), - "-n", "-specs=ewl_c++.specs", "-mfloat-abi=soft", - "-Xlinker", "--undefined=__pformatter_", "-Xlinker", "--defsym=__pformatter=__pformatter_", - "-Xlinker", "--undefined=__sformatter", "-Xlinker", "--defsym=__sformatter=__sformatter", - ] + self.cpu - - -class GCC_CW_NEWLIB(GCC_CW): - NAME = 'GCC_CW_NEWLIB' - - def __init__(self, target, notify=None): - GCC_CW.__init__(self, target, notify) - - -class IAR(mbedToolchain): - NAME = 'IAR' - LIBRARY_EXT = '.a' - LINKER_EXT = '.icf' - STD_LIB_NAME = "%s.a" - - DIAGNOSTIC_PATTERN = re.compile('"(?P[^"]+)",(?P[\d]+)\s+(?PWarning|Error)(?P.+)') - - def __init__(self, target, notify=None): - mbedToolchain.__init__(self, target, notify) - - c_flags = [ - "-Oh", - "--cpu=%s" % target.core, "--thumb", - "--dlib_config", join(IAR_PATH, "inc", "c", "DLib_Config_Full.h"), - "-e", # Enable IAR language extension - "--no_wrap_diagnostics", - # Pa050: No need to be notified about "non-native end of line sequence" - # Pa084: Pointless integer comparison -> checks for the values of an enum, but we use values outside of the enum to notify errors (ie: NC). - # Pa093: Implicit conversion from float to integer (ie: wait_ms(85.4) -> wait_ms(85)) - # Pa082: Operation involving two values from two registers (ie: (float)(*obj->MR)/(float)(LPC_PWM1->MR0)) - "--diag_suppress=Pa050,Pa084,Pa093,Pa082", - ] - - IAR_BIN = join(IAR_PATH, "bin") - self.asm = [join(IAR_BIN, "iasmarm")] + ["--cpu", target.core] - self.cc = [join(IAR_BIN, "iccarm")] + c_flags - self.cppc = [join(IAR_BIN, "iccarm"), "--c++", "--no_rtti", "--no_exceptions"] + c_flags - - self.ld = join(IAR_BIN, "ilinkarm") - self.ar = join(IAR_BIN, "iarchive") - self.elf2bin = join(IAR_BIN, "ielftool") - - def parse_output(self, output): - for line in output.splitlines(): - match = IAR.DIAGNOSTIC_PATTERN.match(line) - if match is not None: - self.cc_info( - match.group('severity').lower(), - match.group('file'), - match.group('line'), - match.group('message'), - ) - - def get_dep_opt(self, dep_path): - return ["--dependencies", dep_path] - - def cc_extra(self, base): - return ["-l", base + '.s'] - - def parse_dependencies(self, dep_path): - return [path.strip() for path in open(dep_path).readlines() - if (path and not path.isspace())] - - def assemble(self, source, object): - self.default_cmd(self.asm + ["-o", object, source]) - - def archive(self, objects, lib_path): - if exists(lib_path): - remove(lib_path) - self.default_cmd([self.ar, lib_path] + objects) - - def link(self, output, objects, libraries, lib_dirs, mem_map): - args = [self.ld, "-o", output, "--config", mem_map] - self.default_cmd(args + objects + libraries) - - def binary(self, elf, bin): - self.default_cmd([self.elf2bin, '--bin', elf, bin]) - - -TOOLCHAIN_CLASSES = { - 'ARM': ARM_STD, 'uARM': ARM_MICRO, - 'GCC_ARM': GCC_ARM, 'GCC_CS': GCC_CS, 'GCC_CR': GCC_CR, - 'GCC_CW_EWL': GCC_CW_EWL, 'GCC_CW_NEWLIB': GCC_CW_NEWLIB, - 'IAR': IAR -} - -TOOLCHAINS = set(TOOLCHAIN_CLASSES.keys()) diff --git a/workspace_tools/toolchains/__init__.py b/workspace_tools/toolchains/__init__.py new file mode 100644 index 0000000000..bc01d68584 --- /dev/null +++ b/workspace_tools/toolchains/__init__.py @@ -0,0 +1,396 @@ +from os import stat, walk, remove +from os.path import join, splitext, exists, relpath, dirname, basename, split +from shutil import copyfile +from copy import copy +from types import ListType +from inspect import getmro + +from workspace_tools.utils import run_cmd, mkdir, rel_path, ToolException, split_path +from workspace_tools.patch import patch + + +def print_notify(event): + # Default command line notification + if event['type'] in ['info', 'debug']: + print event['message'] + + elif event['type'] == 'cc': + event['severity'] = event['severity'].title() + event['file'] = basename(event['file']) + print '[%(severity)s] %(file)s@%(line)s: %(message)s' % event + + elif event['type'] == 'progress': + print '%s: %s' % (event['action'].title(), basename(event['file'])) + + +class Resources: + def __init__(self, base_path=None): + self.base_path = base_path + + self.inc_dirs = [] + self.headers = [] + + self.s_sources = [] + self.c_sources = [] + self.cpp_sources = [] + + self.lib_dirs = set([]) + self.objects = [] + self.libraries = [] + + # mbed special files + self.lib_builds = [] + + self.linker_script = None + + def add(self, resources): + self.inc_dirs += resources.inc_dirs + self.headers += resources.headers + + self.s_sources += resources.s_sources + self.c_sources += resources.c_sources + self.cpp_sources += resources.cpp_sources + + self.lib_dirs |= resources.lib_dirs + self.objects += resources.objects + self.libraries += resources.libraries + + self.lib_builds += resources.lib_builds + + if resources.linker_script is not None: + self.linker_script = resources.linker_script + + def relative_to(self, base, dot=False): + for field in ['inc_dirs', 'headers', 's_sources', 'c_sources', + 'cpp_sources', 'lib_dirs', 'objects', 'libraries']: + v = [rel_path(f, base, dot) for f in getattr(self, field)] + setattr(self, field, v) + if self.linker_script is not None: + self.linker_script = rel_path(self.linker_script, base, dot) + + def win_to_unix(self): + for field in ['inc_dirs', 'headers', 's_sources', 'c_sources', + 'cpp_sources', 'lib_dirs', 'objects', 'libraries']: + v = [f.replace('\\', '/') for f in getattr(self, field)] + setattr(self, field, v) + if self.linker_script is not None: + self.linker_script = self.linker_script.replace('\\', '/') + + def __str__(self): + s = [] + + for (label, resources) in ( + ('Include Directories', self.inc_dirs), + ('Headers', self.headers), + + ('Assembly sources', self.s_sources), + ('C sources', self.c_sources), + ('C++ sources', self.cpp_sources), + + ('Library directories', self.lib_dirs), + ('Objects', self.objects), + ('Libraries', self.libraries) + ): + if resources: + s.append('%s:\n ' % label + '\n '.join(resources)) + + if self.linker_script: + s.append('Linker Script: ' + self.linker_script) + + return '\n'.join(s) + + +class mbedToolchain: + VERBOSE = True + + CORTEX_SYMBOLS = { + "Cortex-M3" : ["__CORTEX_M3", "ARM_MATH_CM3"], + "Cortex-M0" : ["__CORTEX_M0", "ARM_MATH_CM0"], + "Cortex-M0+": ["__CORTEX_M0PLUS", "ARM_MATH_CM0"], + "Cortex-M4" : ["__CORTEX_M4", "ARM_MATH_CM4", "__FPU_PRESENT=1"], + } + + def __init__(self, target, notify=None): + self.target = target + + if notify is not None: + self.notify = notify + else: + self.notify = print_notify + + self.name = self.__class__.__name__ + self.obj_path = join(target.name, self.name) + + self.symbols = None + self.labels = None + + self.build_all = False + + def get_symbols(self): + if self.symbols is None: + # Target and Toolchain symbols + labels = self.get_labels() + self.symbols = ["TARGET_%s" % t for t in labels['TARGET']] + self.symbols.extend(["TOOLCHAIN_%s" % t for t in labels['TOOLCHAIN']]) + + # Cortex CPU symbols + if self.target.core in mbedToolchain.CORTEX_SYMBOLS: + self.symbols.extend(mbedToolchain.CORTEX_SYMBOLS[self.target.core]) + + return self.symbols + + def get_labels(self): + if self.labels is None: + toolchain_labels = [c.__name__ for c in getmro(self.__class__)] + toolchain_labels.remove('mbedToolchain') + self.labels = { + 'TARGET': self.target.get_labels(), + 'TOOLCHAIN': toolchain_labels + } + return self.labels + + def need_update(self, target, dependencies): + if self.build_all: + return True + + if not exists(target): + return True + + target_mod_time = stat(target).st_mtime + + for d in dependencies: + # Some objects are not provided with full path and here we do not have + # information about the library paths. Safe option: assume an update + if not d or not exists(d): + return True + + if stat(d).st_mtime >= target_mod_time: + return True + + return False + + def scan_resources(self, path): + labels = self.get_labels() + resources = Resources(path) + + """ os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) + When topdown is True, the caller can modify the dirnames list in-place + (perhaps using del or slice assignment), and walk() will only recurse into + the subdirectories whose names remain in dirnames; this can be used to prune + the search, impose a specific order of visiting, or even to inform walk() + about directories the caller creates or renames before it resumes walk() + again. Modifying dirnames when topdown is False is ineffective, because in + bottom-up mode the directories in dirnames are generated before dirpath + itself is generated. + """ + for root, dirs, files in walk(path): + # Remove ignored directories + for d in copy(dirs): + if ((d.startswith('.') or d in set(['CVS'])) or + (d.startswith('TARGET_') and d[7:] not in labels['TARGET']) or + (d.startswith('TOOLCHAIN_') and d[10:] not in labels['TOOLCHAIN'])): + dirs.remove(d) + + # Add root to include paths + resources.inc_dirs.append(root) + + for file in files: + file_path = join(root, file) + _, ext = splitext(file) + ext = ext.lower() + + if ext == '.s': + resources.s_sources.append(file_path) + + elif ext == '.c': + resources.c_sources.append(file_path) + + elif ext == '.cpp': + resources.cpp_sources.append(file_path) + + elif ext == '.h': + resources.headers.append(file_path) + + elif ext == '.o': + resources.objects.append(file_path) + + elif ext == self.LIBRARY_EXT: + resources.libraries.append(file_path) + resources.lib_dirs.add(root) + + elif ext == self.LINKER_EXT: + resources.linker_script = file_path + + elif ext == '.bld': + resources.lib_builds.append(file_path) + + return resources + + def copy_files(self, files_paths, trg_path, rel_path=None): + # Handle a single file + if type(files_paths) != ListType: files_paths = [files_paths] + + for source in files_paths: + if rel_path is not None: + relative_path = relpath(source, rel_path) + else: + _, relative_path = split(source) + + target = join(trg_path, relative_path) + + if (target != source) and (self.need_update(target, [source])): + self.progress("copy", relative_path) + mkdir(dirname(target)) + copyfile(source, target) + + def relative_object_path(self, build_path, base_dir, source): + source_dir, name, _ = split_path(source) + obj_dir = join(build_path, relpath(source_dir, base_dir)) + mkdir(obj_dir) + return join(obj_dir, name + '.o') + + def compile_sources(self, resources, build_path, inc_dirs=None): + # Web IDE progress bar for project build + self.to_be_compiled = len(resources.s_sources) + len(resources.c_sources) + len(resources.cpp_sources) + self.compiled = 0 + + objects = [] + inc_paths = resources.inc_dirs + if inc_dirs is not None: + inc_paths.extend(inc_dirs) + + base_path = resources.base_path + + for source in resources.s_sources: + self.compiled += 1 + object = self.relative_object_path(build_path, base_path, source) + if self.need_update(object, [source]): + self.progress("assemble", source, build_update=True) + self.assemble(source, object) + objects.append(object) + + # The dependency checking for C/C++ is delegated to the specific compiler + for source in resources.c_sources: + object = self.relative_object_path(build_path, base_path, source) + self.compile_c(source, object, inc_paths) + objects.append(object) + + for source in resources.cpp_sources: + object = self.relative_object_path(build_path, base_path, source) + self.compile_cpp(source, object, inc_paths) + objects.append(object) + + return objects + + def compile(self, cc, source, object, includes): + # Check dependencies + base, _ = splitext(object) + dep_path = base + '.d' + + self.compiled += 1 + if (not exists(dep_path) or + self.need_update(object, self.parse_dependencies(dep_path))): + + self.progress("compile", source, build_update=True) + + # Compile + command = cc + ['-D%s' % s for s in self.get_symbols()] + ["-I%s" % i for i in includes] + ["-o", object, source] + if hasattr(self, "get_dep_opt"): + command.extend(self.get_dep_opt(dep_path)) + + if hasattr(self, "cc_extra"): + command.extend(self.cc_extra(base)) + + self.debug(command) + _, stderr, rc = run_cmd(command, dirname(object)) + + # Parse output for Warnings and Errors + self.parse_output(stderr) + + # Check return code + if rc != 0: + raise ToolException(stderr) + + def compile_c(self, source, object, includes): + self.compile(self.cc, source, object, includes) + + def compile_cpp(self, source, object, includes): + self.compile(self.cppc, source, object, includes) + + def build_library(self, objects, dir, name): + lib = self.STD_LIB_NAME % name + fout = join(dir, lib) + if self.need_update(fout, objects): + self.info("Library: %s" % lib) + self.archive(objects, fout) + + def build_program(self, r, tmp_path, name): + objects = self.compile_sources(r, tmp_path) + r.objects + + elf = join(tmp_path, name + '.elf') + bin = join(tmp_path, name + '.bin') + + if self.need_update(elf, objects + r.libraries + [r.linker_script]): + self.progress("link", name) + self.link(elf, objects, r.libraries, r.lib_dirs, r.linker_script) + + if self.need_update(bin, [elf]): + self.progress("elf2bin", name) + self.binary(elf, bin) + + if self.target.name.startswith('LPC'): + self.debug("LPC Patch %s" % (name + '.bin')) + patch(bin) + + self.var("compile_succeded", True) + self.var("binary", name+'.bin') + + return bin + + def default_cmd(self, command): + self.debug(command) + stdout, stderr, rc = run_cmd(command) + self.debug(stdout) + if rc != 0: + for line in stderr.splitlines(): + self.tool_error(line) + raise ToolException(stderr) + + ### NOTIFICATIONS ### + def info(self, message): + self.notify({'type': 'info', 'message': message}) + + def debug(self, message): + if self.VERBOSE: + if type(message) is ListType: + message = ' '.join(message) + self.notify({'type': 'debug', 'message': message}) + + def cc_info(self, severity, file, line, message): + self.notify({'type': 'cc', 'severity': severity, 'file': file, 'line': line, 'message': message}) + + def progress(self, action, file, build_update=False): + msg = {'type': 'progress', 'action': action, 'file': file} + if build_update: + msg['percent'] = 100. * float(self.compiled) / float(self.to_be_compiled) + self.notify(msg) + + def tool_error(self, message): + self.notify({'type': 'tool_error', 'message': message}) + + def var(self, key, value): + self.notify({'type': 'var', 'key': key, 'val': value}) + + +from workspace_tools.toolchains.arm import ARM_STD, ARM_MICRO +from workspace_tools.toolchains.gcc import GCC_ARM, GCC_CS, GCC_CR, GCC_CW_EWL, GCC_CW_NEWLIB +from workspace_tools.toolchains.iar import IAR + +TOOLCHAIN_CLASSES = { + 'ARM': ARM_STD, 'uARM': ARM_MICRO, + 'GCC_ARM': GCC_ARM, 'GCC_CS': GCC_CS, 'GCC_CR': GCC_CR, + 'GCC_CW_EWL': GCC_CW_EWL, 'GCC_CW_NEWLIB': GCC_CW_NEWLIB, + 'IAR': IAR +} + +TOOLCHAINS = set(TOOLCHAIN_CLASSES.keys()) diff --git a/workspace_tools/toolchains/arm.py b/workspace_tools/toolchains/arm.py new file mode 100644 index 0000000000..4803c06d5f --- /dev/null +++ b/workspace_tools/toolchains/arm.py @@ -0,0 +1,121 @@ +import re +from os.path import join + +from workspace_tools.toolchains import mbedToolchain +from workspace_tools.settings import ARM_BIN, ARM_INC, ARM_LIB, MY_ARM_CLIB, ARM_CPPLIB + + +class ARM(mbedToolchain): + LINKER_EXT = '.sct' + LIBRARY_EXT = '.ar' + + STD_LIB_NAME = "%s.ar" + DIAGNOSTIC_PATTERN = re.compile('"(?P[^"]+)", line (?P\d+): (?PWarning|Error): (?P.+)') + DEP_PATTERN = re.compile('\S+:\s(?P.+)\n') + + def __init__(self, target, notify): + mbedToolchain.__init__(self, target, notify) + + if target.core == "Cortex-M0+": + cpu = "Cortex-M0" + elif target.core == "Cortex-M4": + cpu = "Cortex-M4.fp" + else: + cpu = target.core + + common = [join(ARM_BIN, "armcc"), "-c", + "--cpu=%s" % cpu, "--gnu", + "-Ospace", "--split_sections", "--apcs=interwork", + "--brief_diagnostics", "--restrict" + ] # "--asm" "--interleave" + common_c = [ + "--md", "--no_depend_system_headers", + '-I%s' % ARM_INC + ] + + self.asm = common + self.cc = common + common_c + ["--c99"] + self.cppc = common + common_c + ["--cpp", "--no_rtti"] + + self.ld = [join(ARM_BIN, "armlink")] + self.sys_libs = [] + + self.ar = join(ARM_BIN, "armar") + self.elf2bin = join(ARM_BIN, "fromelf") + + def remove_option(self, option): + for tool in [self.asm, self.cc, self.cppc]: + if option in tool: + tool.remove(option) + + def assemble(self, source, object): + self.default_cmd(self.cc + ["-o", object, source]) + + def parse_dependencies(self, dep_path): + dependencies = [] + for line in open(dep_path).readlines(): + match = ARM.DEP_PATTERN.match(line) + if match is not None: + dependencies.append(match.group('file')) + return dependencies + + def parse_output(self, output): + for line in output.splitlines(): + match = ARM.DIAGNOSTIC_PATTERN.match(line) + if match is not None: + self.cc_info( + match.group('severity').lower(), + match.group('file'), + match.group('line'), + match.group('message') + ) + + def archive(self, objects, lib_path): + self.default_cmd([self.ar, '-r', lib_path] + objects) + + def link(self, output, objects, libraries, lib_dirs, mem_map): + args = ["-o", output, "--userlibpath", ",".join(lib_dirs), "--info=totals", "--list=.link_totals.txt"] + if mem_map: + args.extend(["--scatter", mem_map]) + + self.default_cmd(self.ld + args + objects + libraries + self.sys_libs) + + def binary(self, elf, bin): + self.default_cmd([self.elf2bin, '--bin', '-o', bin, elf]) + + +class ARM_STD(ARM): + def __init__(self, target, notify=None): + ARM.__init__(self, target, notify) + self.ld.append("--libpath=%s" % ARM_LIB) + + +class ARM_MICRO(ARM): + PATCHED_LIBRARY = True + + def __init__(self, target, notify=None): + ARM.__init__(self, target, notify) + + # Compiler + self.asm += ["-D__MICROLIB"] + self.cc += ["--library_type=microlib", "-D__MICROLIB"] + self.cppc += ["--library_type=microlib", "-D__MICROLIB"] + + # Linker + self.ld.append("--library_type=microlib") + + # We had to patch microlib to add C++ support + # In later releases this patch should have entered mainline + if ARM_MICRO.PATCHED_LIBRARY: + self.ld.append("--noscanlib") + + # System Libraries + self.sys_libs.extend([join(MY_ARM_CLIB, lib+".l") for lib in ["mc_p", "mf_p", "m_ps"]]) + + if target.core == "Cortex-M3": + self.sys_libs.extend([join(ARM_CPPLIB, lib+".l") for lib in ["cpp_ws", "cpprt_w"]]) + + elif target.core in ["Cortex-M0", "Cortex-M0+"]: + self.sys_libs.extend([join(ARM_CPPLIB, lib+".l") for lib in ["cpp_ps", "cpprt_p"]]) + else: + self.ld.append("--libpath=%s" % ARM_LIB) diff --git a/workspace_tools/toolchains/gcc.py b/workspace_tools/toolchains/gcc.py new file mode 100644 index 0000000000..eb7c7be409 --- /dev/null +++ b/workspace_tools/toolchains/gcc.py @@ -0,0 +1,184 @@ +import re +from os.path import join, basename, splitext + +from workspace_tools.toolchains import mbedToolchain +from workspace_tools.settings import GCC_ARM_PATH, GCC_CR_PATH, GCC_CS_PATH, CW_EWL_PATH, CW_GCC_PATH, GCC_CW_PATH + + +class GCC(mbedToolchain): + LINKER_EXT = '.ld' + LIBRARY_EXT = '.a' + + STD_LIB_NAME = "lib%s.a" + CIRCULAR_DEPENDENCIES = True + DIAGNOSTIC_PATTERN = re.compile('((?P\d+):)(\d+:)? (?Pwarning|error): (?P.+)') + + def __init__(self, target, notify, tool_path): + mbedToolchain.__init__(self, target, notify) + + if target.core == "Cortex-M0+": + cpu = "cortex-m0" + else: + cpu = target.core.lower() + + self.cpu = ["-mcpu=%s" % cpu] + if target.core.startswith("Cortex"): + self.cpu.append("-mthumb") + + if target.core == "Cortex-M4": + self.cpu.append("-mfpu=fpv4-sp-d16") + self.cpu.append("-mfloat-abi=softfp") + + # Note: We are using "-O2" instead of "-Os" to avoid this known GCC bug: + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46762 + common_flags = ["-c", "-O2", "-Wall", + "-fmessage-length=0", "-fno-exceptions", "-fno-builtin", + "-ffunction-sections", "-fdata-sections", + "-MMD", "-save-temps" + ] + self.cpu + + self.asm = [join(tool_path, "arm-none-eabi-as")] + self.cpu + + self.cc = [join(tool_path, "arm-none-eabi-gcc"), "-std=gnu99"] + common_flags + self.cppc =[join(tool_path, "arm-none-eabi-g++"), "-std=gnu++98"] + common_flags + + self.ld = [join(tool_path, "arm-none-eabi-gcc"), "-Wl,--gc-sections"] + self.cpu + self.sys_libs = ["stdc++", "supc++", "m", "c", "gcc"] + + self.ar = join(tool_path, "arm-none-eabi-ar") + self.elf2bin = join(tool_path, "arm-none-eabi-objcopy") + + def assemble(self, source, object): + self.default_cmd(self.asm + ["-o", object, source]) + + def parse_dependencies(self, dep_path): + dependencies = [] + for line in open(dep_path).readlines()[1:]: + file = line.replace('\\\n', '').strip() + if file: + dependencies.append(file) + return dependencies + + def parse_output(self, output): + # The warning/error notification is multiline + WHERE, WHAT = 0, 1 + state, file, message = WHERE, None, None + for line in output.splitlines(): + # Each line should start with the file information: "filepath: ..." + # i should point past the file path ^ + # avoid the first column in Windows (C:\) + i = line.find(':', 2) + if i == -1: continue + + if state == WHERE: + file = line[:i] + message = line[i+1:].strip() + ' ' + state = WHAT + + elif state == WHAT: + match = GCC.DIAGNOSTIC_PATTERN.match(line[i+1:]) + if match is None: + state = WHERE + continue + + self.cc_info( + match.group('severity'), + file, match.group('line'), + message + match.group('message') + ) + + def archive(self, objects, lib_path): + self.default_cmd([self.ar, "rcs", lib_path] + objects) + + def link(self, output, objects, libraries, lib_dirs, mem_map): + libs = [] + for l in libraries: + name, _ = splitext(basename(l)) + libs.append("-l%s" % name[3:]) + libs.extend(["-l%s" % l for l in self.sys_libs]) + + # NOTE: There is a circular dependency between the mbed library and the clib + # We could define a set of week symbols to satisfy the clib dependencies in "sys.o", + # but if an application uses only clib symbols and not mbed symbols, then the final + # image is not correctly retargeted + if self.CIRCULAR_DEPENDENCIES: + libs.extend(libs) + + self.default_cmd(self.ld + ["-T%s" % mem_map, "-o", output] + + objects + ["-L%s" % L for L in lib_dirs] + libs) + + def binary(self, elf, bin): + self.default_cmd([self.elf2bin, "-O", "binary", elf, bin]) + + +class GCC_ARM(GCC): + def __init__(self, target, notify=None): + GCC.__init__(self, target, notify, GCC_ARM_PATH) + + # Use latest gcc nanolib + self.ld.append("--specs=nano.specs") + if target in ["LPC1768"]: + self.ld.extend(["-u", "_printf_float", "-u", "_scanf_float"]) + + self.sys_libs.append("nosys") + + +class GCC_CR(GCC): + def __init__(self, target, notify=None): + GCC.__init__(self, target, notify, GCC_CR_PATH) + + additional_compiler_flags = [ + "-D__NEWLIB__", "-D__CODE_RED", "-D__USE_CMSIS", "-DCPP_USE_HEAP", + ] + self.cc += additional_compiler_flags + self.cppc += additional_compiler_flags + + self.ld += ["-nostdlib"] + + +class GCC_CS(GCC): + def __init__(self, target, notify=None): + GCC.__init__(self, target, notify, GCC_CS_PATH) + + +class GCC_CW(GCC): + ARCH_LIB = { + "Cortex-M0+": "armv6-m", + } + + def __init__(self, target, notify=None): + GCC.__init__(self, target, notify, CW_GCC_PATH) + + +class GCC_CW_EWL(GCC_CW): + def __init__(self, target, notify=None): + GCC_CW.__init__(self, target, notify) + + # Compiler + common = [ + '-mfloat-abi=soft', + '-nostdinc', '-I%s' % join(CW_EWL_PATH, "EWL_C", "include"), + ] + self.cc += common + [ + '-include', join(CW_EWL_PATH, "EWL_C", "include", 'lib_c99.prefix') + ] + self.cppc += common + [ + '-nostdinc++', '-I%s' % join(CW_EWL_PATH, "EWL_C++", "include"), + '-include', join(CW_EWL_PATH, "EWL_C++", "include", 'lib_ewl_c++.prefix') + ] + + # Linker + self.sys_libs = [] + self.CIRCULAR_DEPENDENCIES = False + self.ld = [join(GCC_CW_PATH, "arm-none-eabi-g++"), + "-Xlinker", "--gc-sections", + "-L%s" % join(CW_EWL_PATH, "lib", GCC_CW.ARCH_LIB[target.core]), + "-n", "-specs=ewl_c++.specs", "-mfloat-abi=soft", + "-Xlinker", "--undefined=__pformatter_", "-Xlinker", "--defsym=__pformatter=__pformatter_", + "-Xlinker", "--undefined=__sformatter", "-Xlinker", "--defsym=__sformatter=__sformatter", + ] + self.cpu + + +class GCC_CW_NEWLIB(GCC_CW): + def __init__(self, target, notify=None): + GCC_CW.__init__(self, target, notify) diff --git a/workspace_tools/toolchains/iar.py b/workspace_tools/toolchains/iar.py new file mode 100644 index 0000000000..fc66281ee3 --- /dev/null +++ b/workspace_tools/toolchains/iar.py @@ -0,0 +1,75 @@ +import re +from os import remove +from os.path import join, exists + +from workspace_tools.toolchains import mbedToolchain +from workspace_tools.settings import IAR_PATH + + +class IAR(mbedToolchain): + LIBRARY_EXT = '.a' + LINKER_EXT = '.icf' + STD_LIB_NAME = "%s.a" + + DIAGNOSTIC_PATTERN = re.compile('"(?P[^"]+)",(?P[\d]+)\s+(?PWarning|Error)(?P.+)') + + def __init__(self, target, notify=None): + mbedToolchain.__init__(self, target, notify) + + c_flags = [ + "-Oh", + "--cpu=%s" % target.core, "--thumb", + "--dlib_config", join(IAR_PATH, "inc", "c", "DLib_Config_Full.h"), + "-e", # Enable IAR language extension + "--no_wrap_diagnostics", + # Pa050: No need to be notified about "non-native end of line sequence" + # Pa084: Pointless integer comparison -> checks for the values of an enum, but we use values outside of the enum to notify errors (ie: NC). + # Pa093: Implicit conversion from float to integer (ie: wait_ms(85.4) -> wait_ms(85)) + # Pa082: Operation involving two values from two registers (ie: (float)(*obj->MR)/(float)(LPC_PWM1->MR0)) + "--diag_suppress=Pa050,Pa084,Pa093,Pa082", + ] + + IAR_BIN = join(IAR_PATH, "bin") + self.asm = [join(IAR_BIN, "iasmarm")] + ["--cpu", target.core] + self.cc = [join(IAR_BIN, "iccarm")] + c_flags + self.cppc = [join(IAR_BIN, "iccarm"), "--c++", "--no_rtti", "--no_exceptions"] + c_flags + + self.ld = join(IAR_BIN, "ilinkarm") + self.ar = join(IAR_BIN, "iarchive") + self.elf2bin = join(IAR_BIN, "ielftool") + + def parse_output(self, output): + for line in output.splitlines(): + match = IAR.DIAGNOSTIC_PATTERN.match(line) + if match is not None: + self.cc_info( + match.group('severity').lower(), + match.group('file'), + match.group('line'), + match.group('message'), + ) + + def get_dep_opt(self, dep_path): + return ["--dependencies", dep_path] + + def cc_extra(self, base): + return ["-l", base + '.s'] + + def parse_dependencies(self, dep_path): + return [path.strip() for path in open(dep_path).readlines() + if (path and not path.isspace())] + + def assemble(self, source, object): + self.default_cmd(self.asm + ["-o", object, source]) + + def archive(self, objects, lib_path): + if exists(lib_path): + remove(lib_path) + self.default_cmd([self.ar, lib_path] + objects) + + def link(self, output, objects, libraries, lib_dirs, mem_map): + args = [self.ld, "-o", output, "--config", mem_map] + self.default_cmd(args + objects + libraries) + + def binary(self, elf, bin): + self.default_cmd([self.elf2bin, '--bin', elf, bin])