Clone of official tools

Files at this revision

API Documentation at this revision

Comitter:
screamer
Date:
Thu May 19 19:44:41 2016 +0100
Child:
1:a99c8e460c5c
Commit message:
Initial revision

Changed in this revision

.hgignore Show annotated file Show diff for this revision Revisions of this file
__init__.py Show annotated file Show diff for this revision Revisions of this file
build.py Show annotated file Show diff for this revision Revisions of this file
build_api.py Show annotated file Show diff for this revision Revisions of this file
build_release.py Show annotated file Show diff for this revision Revisions of this file
build_travis.py Show annotated file Show diff for this revision Revisions of this file
buildbot/master.cfg Show annotated file Show diff for this revision Revisions of this file
ci_templates/library_build/build_report.html Show annotated file Show diff for this revision Revisions of this file
ci_templates/library_build/build_report_table.html Show annotated file Show diff for this revision Revisions of this file
ci_templates/library_build/report.html Show annotated file Show diff for this revision Revisions of this file
ci_templates/scripts.js Show annotated file Show diff for this revision Revisions of this file
ci_templates/tests_build/build_report.html Show annotated file Show diff for this revision Revisions of this file
ci_templates/tests_build/build_report_table.html Show annotated file Show diff for this revision Revisions of this file
ci_templates/tests_build/report.html Show annotated file Show diff for this revision Revisions of this file
compliance/__init__.py Show annotated file Show diff for this revision Revisions of this file
compliance/ioper_base.py Show annotated file Show diff for this revision Revisions of this file
compliance/ioper_runner.py Show annotated file Show diff for this revision Revisions of this file
compliance/ioper_test_fs.py Show annotated file Show diff for this revision Revisions of this file
compliance/ioper_test_target_id.py Show annotated file Show diff for this revision Revisions of this file
data/__init__.py Show annotated file Show diff for this revision Revisions of this file
data/support.py Show annotated file Show diff for this revision Revisions of this file
default_settings.py Show annotated file Show diff for this revision Revisions of this file
dev/__init__.py Show annotated file Show diff for this revision Revisions of this file
dev/dsp_fir.py Show annotated file Show diff for this revision Revisions of this file
dev/intel_hex_utils.py Show annotated file Show diff for this revision Revisions of this file
dev/rpc_classes.py Show annotated file Show diff for this revision Revisions of this file
dev/syms.py Show annotated file Show diff for this revision Revisions of this file
export/README.md Show annotated file Show diff for this revision Revisions of this file
export/__init__.py Show annotated file Show diff for this revision Revisions of this file
export/atmelstudio.py Show annotated file Show diff for this revision Revisions of this file
export/atmelstudio6_2.atsln.tmpl Show annotated file Show diff for this revision Revisions of this file
export/atmelstudio6_2.cppproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered.py Show annotated file Show diff for this revision Revisions of this file
export/codered_arch_pro_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_arch_pro_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_cproject_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_cproject_cortexm0_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_cproject_cortexm3_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc1114_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc1114_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u35_401_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u35_401_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u35_501_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u35_501_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u37h_401_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u37h_401_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u68_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc11u68_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc1549_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc1549_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc1768_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc1768_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc4088_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc4088_dm_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc4088_dm_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc4088_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc4330_m4_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc4330_m4_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc824_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpc824_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpccappuccino_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_lpccappuccino_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_project_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_ublox_c027_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/codered_ublox_c027_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide.py Show annotated file Show diff for this revision Revisions of this file
export/coide_arch_max.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_arch_pro.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f051r8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f100rb.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f303vc.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f334c8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f401vc.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f407vg.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_f429zi.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_disco_l053c8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_kl05z.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_kl25z.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_lpc1768.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_mote_l152rc.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_mts_mdot_f405rg.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_mts_mdot_f411re.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f030r8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f042k6.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f070rb.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f072rb.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f091rc.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f103rb.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f302r8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f303re.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f334r8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f401re.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f410rb.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f411re.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_f446re.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_l053r8.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nucleo_l152re.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_nz32_sc151.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/coide_ublox_c027.coproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5.py Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_arch_pro.cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_arch_pro.launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_arch_pro.project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc11u24.cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc11u24.launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc11u24.project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc1768.cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc1768.launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc1768.project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc812.cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc812.launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_lpc812.project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_rz_a1h.cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_rz_a1h.launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_rz_a1h.project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_ublox_c027.cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_ublox_c027.launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/ds5_5_ublox_c027.project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/emblocks.eix.tmpl Show annotated file Show diff for this revision Revisions of this file
export/emblocks.py Show annotated file Show diff for this revision Revisions of this file
export/exporters.py Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_arch_ble.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_arch_max.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_arch_pro.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_b96b_f446ve.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_delta_dfcm_nnn40.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f051r8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f100rb.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f303vc.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f334c8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f401vc.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f407vg.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f429zi.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f469ni.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_f746ng.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_l053c8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_disco_l476vg.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32gg_stk3700.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32hg_stk3400.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32lg_stk3600.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32pg_stk3401.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32wg_stk3800.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_efm32zg_stk3200.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_hrm1017.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_k20d50m.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_k22f.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_k64f.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_kl05z.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_kl25z.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_kl43z.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_kl46z.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc1114.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc11u24.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc11u35_401.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc11u35_501.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc11u37h_401.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc1549.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc1768.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc2368.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc2460.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc4088.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc4088_dm.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc4330_m4.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc810.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc812.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpc824.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_lpccappuccino.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_max32600mbed.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_maxwsnenv.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_mote_l152rc.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_mts_gambit.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_mts_mdot_f405rg.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_mts_mdot_f411re.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nrf51822.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nrf51_dk.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nrf51_dongle.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f030r8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f031k6.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f042k6.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f070rb.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f072rb.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f091rc.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f103rb.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f302r8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f303k8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f303re.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f334r8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f401re.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f410rb.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f411re.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f446re.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_f746zg.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_l053r8.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_l073rz.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_l152re.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nucleo_l476rg.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_nz32_sc151.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_rblab_blenano.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_rblab_nrf51822.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_rz_a1h.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_samd21g18a.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_samd21j18a.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_saml21j18a.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_samr21g18a.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_seeed_tiny_ble.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_ssci824.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_stm32f407.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_teensy3_1.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gcc_arm_ublox_c027.tmpl Show annotated file Show diff for this revision Revisions of this file
export/gccarm.py Show annotated file Show diff for this revision Revisions of this file
export/iar.py Show annotated file Show diff for this revision Revisions of this file
export/iar_nucleo_f746zg.ewp.tmpl Show annotated file Show diff for this revision Revisions of this file
export/iar_rz_a1h.ewp.tmpl Show annotated file Show diff for this revision Revisions of this file
export/iar_template.ewp.tmpl Show annotated file Show diff for this revision Revisions of this file
export/kds.py Show annotated file Show diff for this revision Revisions of this file
export/kds_k22f_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/kds_k22f_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/kds_k64f_cproject.tmpl Show annotated file Show diff for this revision Revisions of this file
export/kds_k64f_project.tmpl Show annotated file Show diff for this revision Revisions of this file
export/kds_launch.tmpl Show annotated file Show diff for this revision Revisions of this file
export/simplicityv3.py Show annotated file Show diff for this revision Revisions of this file
export/simplicityv3_slsproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/sw4stm32.py Show annotated file Show diff for this revision Revisions of this file
export/sw4stm32_cproject_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/sw4stm32_language_settings_commom.tmpl Show annotated file Show diff for this revision Revisions of this file
export/sw4stm32_project_common.tmpl Show annotated file Show diff for this revision Revisions of this file
export/uvision.uvproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/uvision4.py Show annotated file Show diff for this revision Revisions of this file
export/uvision_microlib.uvproj.tmpl Show annotated file Show diff for this revision Revisions of this file
export/zip.py Show annotated file Show diff for this revision Revisions of this file
export_test.py Show annotated file Show diff for this revision Revisions of this file
hooks.py Show annotated file Show diff for this revision Revisions of this file
host_tests/__init__.py Show annotated file Show diff for this revision Revisions of this file
host_tests/default_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/detect_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/dev_null_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/echo.py Show annotated file Show diff for this revision Revisions of this file
host_tests/echo_flow_control.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/BroadcastReceive.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/BroadcastSend.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/MulticastReceive.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/MulticastSend.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/TCPEchoClient.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/TCPEchoServer.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/UDPEchoClient.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/UDPEchoServer.py Show annotated file Show diff for this revision Revisions of this file
host_tests/example/__init__.py Show annotated file Show diff for this revision Revisions of this file
host_tests/hello_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_registry.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_test.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/__init__.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/host_test_plugins.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/host_test_registry.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_copy_firefox.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_copy_mbed.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_copy_mps2.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_copy_shell.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_copy_silabs.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_copy_smart.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_reset_mbed.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_reset_mps2.py Show annotated file Show diff for this revision Revisions of this file
host_tests/host_tests_plugins/module_reset_silabs.py Show annotated file Show diff for this revision Revisions of this file
host_tests/mbedrpc.py Show annotated file Show diff for this revision Revisions of this file
host_tests/midi.py Show annotated file Show diff for this revision Revisions of this file
host_tests/net_test.py Show annotated file Show diff for this revision Revisions of this file
host_tests/rpc.py Show annotated file Show diff for this revision Revisions of this file
host_tests/rtc_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/serial_nc_rx_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/serial_nc_tx_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/stdio_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/tcpecho_client.py Show annotated file Show diff for this revision Revisions of this file
host_tests/tcpecho_client_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/tcpecho_server.py Show annotated file Show diff for this revision Revisions of this file
host_tests/tcpecho_server_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/tcpecho_server_loop.py Show annotated file Show diff for this revision Revisions of this file
host_tests/udp_link_layer_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/udpecho_client.py Show annotated file Show diff for this revision Revisions of this file
host_tests/udpecho_client_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/udpecho_server.py Show annotated file Show diff for this revision Revisions of this file
host_tests/udpecho_server_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/wait_us_auto.py Show annotated file Show diff for this revision Revisions of this file
host_tests/wfi_auto.py Show annotated file Show diff for this revision Revisions of this file
libraries.py Show annotated file Show diff for this revision Revisions of this file
make.py Show annotated file Show diff for this revision Revisions of this file
options.py Show annotated file Show diff for this revision Revisions of this file
patch.py Show annotated file Show diff for this revision Revisions of this file
paths.py Show annotated file Show diff for this revision Revisions of this file
project.py Show annotated file Show diff for this revision Revisions of this file
settings.py Show annotated file Show diff for this revision Revisions of this file
singletest.py Show annotated file Show diff for this revision Revisions of this file
size.py Show annotated file Show diff for this revision Revisions of this file
synch.py Show annotated file Show diff for this revision Revisions of this file
targets.py Show annotated file Show diff for this revision Revisions of this file
test.py Show annotated file Show diff for this revision Revisions of this file
test_api.py Show annotated file Show diff for this revision Revisions of this file
test_db.py Show annotated file Show diff for this revision Revisions of this file
test_exporters.py Show annotated file Show diff for this revision Revisions of this file
test_mysql.py Show annotated file Show diff for this revision Revisions of this file
test_webapi.py Show annotated file Show diff for this revision Revisions of this file
tests.py Show annotated file Show diff for this revision Revisions of this file
toolchains/__init__.py Show annotated file Show diff for this revision Revisions of this file
toolchains/arm.py Show annotated file Show diff for this revision Revisions of this file
toolchains/gcc.py Show annotated file Show diff for this revision Revisions of this file
toolchains/iar.py Show annotated file Show diff for this revision Revisions of this file
upload_results.py Show annotated file Show diff for this revision Revisions of this file
utils.py Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,28 @@
+syntax: glob
+.hg
+.git
+.svn
+.CVS
+.cvs
+*.orig
+.build
+.export
+.msub
+.meta
+.ctags*
+*.uvproj
+*.uvopt
+*.project
+*.cproject
+*.launch
+*.ewp
+*.eww
+Makefile
+Debug
+*.htm
+.mbed
+*.settings
+mbed_settings.py
+*.py[cod]
+# subrepo ignores
+mbed-os
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,16 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,279 @@
+#! /usr/bin/env python2
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+LIBRARIES BUILD
+"""
+import sys
+from time import time
+from os.path import join, abspath, dirname
+
+
+# Be sure that the tools directory is in the search path
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+
+from tools.toolchains import TOOLCHAINS
+from tools.targets import TARGET_NAMES, TARGET_MAP
+from tools.options import get_default_options_parser
+from tools.build_api import build_library, build_mbed_libs, build_lib
+from tools.build_api import mcu_toolchain_matrix
+from tools.build_api import static_analysis_scan, static_analysis_scan_lib, static_analysis_scan_library
+from tools.build_api import print_build_results
+from tools.settings import CPPCHECK_CMD, CPPCHECK_MSG_FORMAT
+
+if __name__ == '__main__':
+    start = time()
+
+    # Parse Options
+    parser = get_default_options_parser()
+
+    parser.add_option("--source", dest="source_dir",
+                      default=None, help="The source (input) directory", action="append")
+
+    parser.add_option("--build", dest="build_dir",
+                      default=None, help="The build (output) directory")
+
+    parser.add_option("--no-archive", dest="no_archive", action="store_true",
+                      default=False, help="Do not produce archive (.ar) file, but rather .o")
+
+    # Extra libraries
+    parser.add_option("-r", "--rtos",
+                      action="store_true",
+                      dest="rtos",
+                      default=False,
+                      help="Compile the rtos")
+
+    parser.add_option("--rpc",
+                      action="store_true",
+                      dest="rpc",
+                      default=False,
+                      help="Compile the rpc library")
+
+    parser.add_option("-e", "--eth",
+                      action="store_true", dest="eth",
+                      default=False,
+                      help="Compile the ethernet library")
+
+    parser.add_option("-U", "--usb_host",
+                      action="store_true",
+                      dest="usb_host",
+                      default=False,
+                      help="Compile the USB Host library")
+
+    parser.add_option("-u", "--usb",
+                      action="store_true",
+                      dest="usb",
+                      default=False,
+                      help="Compile the USB Device library")
+
+    parser.add_option("-d", "--dsp",
+                      action="store_true",
+                      dest="dsp",
+                      default=False,
+                      help="Compile the DSP library")
+
+    parser.add_option("-F", "--fat",
+                      action="store_true",
+                      dest="fat",
+                      default=False,
+                      help="Compile FS and SD card file system library")
+
+    parser.add_option("-b", "--ublox",
+                      action="store_true",
+                      dest="ublox",
+                      default=False,
+                      help="Compile the u-blox library")
+
+    parser.add_option("", "--cpputest",
+                      action="store_true",
+                      dest="cpputest_lib",
+                      default=False,
+                      help="Compiles 'cpputest' unit test library (library should be on the same directory level as mbed repository)")
+
+    parser.add_option("-D", "",
+                      action="append",
+                      dest="macros",
+                      help="Add a macro definition")
+
+    parser.add_option("-S", "--supported-toolchains",
+                      action="store_true",
+                      dest="supported_toolchains",
+                      default=False,
+                      help="Displays supported matrix of MCUs and toolchains")
+
+    parser.add_option("", "--cppcheck",
+                      action="store_true",
+                      dest="cppcheck_validation",
+                      default=False,
+                      help="Forces 'cppcheck' static code analysis")
+
+    parser.add_option('-f', '--filter',
+                      dest='general_filter_regex',
+                      default=None,
+                      help='For some commands you can use filter to filter out results')
+
+    parser.add_option("-j", "--jobs", type="int", dest="jobs",
+                      default=0, help="Number of concurrent jobs. Default: 0/auto (based on host machine's number of CPUs)")
+
+    parser.add_option("-v", "--verbose",
+                      action="store_true",
+                      dest="verbose",
+                      default=False,
+                      help="Verbose diagnostic output")
+
+    parser.add_option("--silent",
+                      action="store_true",
+                      dest="silent",
+                      default=False,
+                      help="Silent diagnostic output (no copy, compile notification)")
+
+    parser.add_option("-x", "--extra-verbose-notifications",
+                      action="store_true",
+                      dest="extra_verbose_notify",
+                      default=False,
+                      help="Makes compiler more verbose, CI friendly.")
+
+    (options, args) = parser.parse_args()
+
+    # Only prints matrix of supported toolchains
+    if options.supported_toolchains:
+        print mcu_toolchain_matrix(platform_filter=options.general_filter_regex)
+        exit(0)
+
+    # Get target list
+    if options.mcu:
+        mcu_list = (options.mcu).split(",")
+        for mcu in mcu_list:
+            if mcu not in TARGET_NAMES:
+                print "Given MCU '%s' not into the supported list:\n%s" % (mcu, TARGET_NAMES)
+                sys.exit(1)
+        targets = mcu_list
+    else:
+        targets = TARGET_NAMES
+
+    # Get toolchains list
+    if options.tool:
+        toolchain_list = (options.tool).split(",")
+        for tc in toolchain_list:
+            if tc not in TOOLCHAINS:
+                print "Given toolchain '%s' not into the supported list:\n%s" % (tc, TOOLCHAINS)
+                sys.exit(1)
+        toolchains = toolchain_list
+    else:
+        toolchains = TOOLCHAINS
+
+    # Get libraries list
+    libraries = []
+
+    # Additional Libraries
+    if options.rtos:
+        libraries.extend(["rtx", "rtos"])
+    if options.rpc:
+        libraries.extend(["rpc"])
+    if options.eth:
+        libraries.append("eth")
+    if options.usb:
+        libraries.append("usb")
+    if options.usb_host:
+        libraries.append("usb_host")
+    if options.dsp:
+        libraries.extend(["cmsis_dsp", "dsp"])
+    if options.fat:
+        libraries.extend(["fat"])
+    if options.ublox:
+        libraries.extend(["rtx", "rtos", "usb_host", "ublox"])
+    if options.cpputest_lib:
+        libraries.extend(["cpputest"])
+
+    # Build results
+    failures = []
+    successes = []
+    skipped = []
+
+    # CPPCHECK code validation
+    if options.cppcheck_validation:
+        for toolchain in toolchains:
+            for target in targets:
+                try:
+                    mcu = TARGET_MAP[target]
+                    # CMSIS and MBED libs analysis
+                    static_analysis_scan(mcu, toolchain, CPPCHECK_CMD, CPPCHECK_MSG_FORMAT, verbose=options.verbose, jobs=options.jobs)
+                    for lib_id in libraries:
+                        # Static check for library
+                        static_analysis_scan_lib(lib_id, mcu, toolchain, CPPCHECK_CMD, CPPCHECK_MSG_FORMAT,
+                                  options=options.options,
+                                  extra_verbose=options.extra_verbose_notify, verbose=options.verbose, jobs=options.jobs, clean=options.clean,
+                                  macros=options.macros)
+                        pass
+                except Exception, e:
+                    if options.verbose:
+                        import traceback
+                        traceback.print_exc(file=sys.stdout)
+                        sys.exit(1)
+                    print e
+    else:
+        # Build
+        for toolchain in toolchains:
+            for target in targets:
+                tt_id = "%s::%s" % (toolchain, target)
+                try:
+                    mcu = TARGET_MAP[target]
+                    lib_build_res = build_library(options.source_dir, options.build_dir, mcu, toolchain,
+                                                    options=options.options,
+                                                    extra_verbose=options.extra_verbose_notify,
+                                                    verbose=options.verbose,
+                                                    silent=options.silent,
+                                                    jobs=options.jobs,
+                                                    clean=options.clean,
+                                                    archive=(not options.no_archive),
+                                                    macros=options.macros)
+                    for lib_id in libraries:
+                        build_lib(lib_id, mcu, toolchain,
+                                  options=options.options,
+                                  extra_verbose=options.extra_verbose_notify,
+                                  verbose=options.verbose,
+                                  silent=options.silent,
+                                  clean=options.clean,
+                                  macros=options.macros,
+                                  jobs=options.jobs)
+                    if lib_build_res:
+                        successes.append(tt_id)
+                    else:
+                        skipped.append(tt_id)
+                except Exception, e:
+                    if options.verbose:
+                        import traceback
+                        traceback.print_exc(file=sys.stdout)
+                        sys.exit(1)
+                    failures.append(tt_id)
+                    print e
+
+    # Write summary of the builds
+    print
+    print "Completed in: (%.2f)s" % (time() - start)
+    print
+
+    for report, report_name in [(successes, "Build successes:"),
+                                (skipped, "Build skipped:"),
+                                (failures, "Build failures:"),
+                               ]:
+        if report:
+            print print_build_results(report, report_name),
+
+    if failures:
+        sys.exit(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build_api.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,751 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+import tempfile
+import colorama
+
+
+from types import ListType
+from shutil import rmtree
+from os.path import join, exists, basename, abspath
+from os import getcwd
+from time import time
+
+from tools.utils import mkdir, run_cmd, run_cmd_ext, NotSupportedException
+from tools.paths import MBED_TARGETS_PATH, MBED_LIBRARIES, MBED_API, MBED_HAL, MBED_COMMON
+from tools.targets import TARGET_NAMES, TARGET_MAP
+from tools.libraries import Library
+from tools.toolchains import TOOLCHAIN_CLASSES
+from jinja2 import FileSystemLoader
+from jinja2.environment import Environment
+
+
+def prep_report(report, target_name, toolchain_name, id_name):
+    # Setup report keys
+    if not target_name in report:
+        report[target_name] = {}
+
+    if not toolchain_name in report[target_name]:
+        report[target_name][toolchain_name] = {}
+
+    if not id_name in report[target_name][toolchain_name]:
+        report[target_name][toolchain_name][id_name] = []
+
+def prep_properties(properties, target_name, toolchain_name, vendor_label):
+    # Setup test properties
+    if not target_name in properties:
+        properties[target_name] = {}
+
+    if not toolchain_name in properties[target_name]:
+        properties[target_name][toolchain_name] = {}
+
+    properties[target_name][toolchain_name]["target"] = target_name
+    properties[target_name][toolchain_name]["vendor"] = vendor_label
+    properties[target_name][toolchain_name]["toolchain"] = toolchain_name
+
+def create_result(target_name, toolchain_name, id_name, description):
+    cur_result = {}
+    cur_result["target_name"] = target_name
+    cur_result["toolchain_name"] = toolchain_name
+    cur_result["id"] = id_name
+    cur_result["description"] = description
+    cur_result["elapsed_time"] = 0
+    cur_result["output"] = ""
+
+    return cur_result
+
+def add_result_to_report(report, result):
+    target = result["target_name"]
+    toolchain = result["toolchain_name"]
+    id_name = result['id']
+    result_wrap = { 0: result }
+    report[target][toolchain][id_name].append(result_wrap)
+
+def build_project(src_path, build_path, target, toolchain_name,
+        libraries_paths=None, options=None, linker_script=None,
+        clean=False, notify=None, verbose=False, name=None, macros=None, inc_dirs=None,
+        jobs=1, silent=False, report=None, properties=None, project_id=None, project_description=None, extra_verbose=False):
+    """ This function builds project. Project can be for example one test / UT
+    """
+    # Toolchain instance
+    try:
+        toolchain = TOOLCHAIN_CLASSES[toolchain_name](target, options, notify, macros, silent, extra_verbose=extra_verbose)
+    except KeyError as e:
+        raise KeyError("Toolchain %s not supported" % toolchain_name)
+
+    toolchain.VERBOSE = verbose
+    toolchain.jobs = jobs
+    toolchain.build_all = clean
+    src_paths = [src_path] if type(src_path) != ListType else src_path
+
+    # We need to remove all paths which are repeated to avoid
+    # multiple compilations and linking with the same objects
+    src_paths = [src_paths[0]] + list(set(src_paths[1:]))
+    project_name = basename(abspath(src_paths[0] if src_paths[0] != "." and src_paths[0] != "./" else getcwd()))
+
+    if name is None:
+        # We will use default project name based on project folder name
+        name = project_name
+        toolchain.info("Building project %s (%s, %s)" % (project_name, target.name, toolchain_name))
+    else:
+        # User used custom global project name to have the same name for the
+        toolchain.info("Building project %s to %s (%s, %s)" % (project_name, name, target.name, toolchain_name))
+
+
+    if report != None:
+        start = time()
+        id_name = project_id.upper()
+        description = project_description
+        vendor_label = target.extra_labels[0]
+        cur_result = None
+        prep_report(report, target.name, toolchain_name, id_name)
+        cur_result = create_result(target.name, toolchain_name, id_name, description)
+
+        if properties != None:
+            prep_properties(properties, target.name, toolchain_name, vendor_label)
+
+    try:
+        # Scan src_path and libraries_paths for resources
+        resources = toolchain.scan_resources(src_paths[0])
+        for path in src_paths[1:]:
+            resources.add(toolchain.scan_resources(path))
+        if libraries_paths is not None:
+            src_paths.extend(libraries_paths)
+            for path in libraries_paths:
+                resources.add(toolchain.scan_resources(path))
+
+        if linker_script is not None:
+            resources.linker_script = linker_script
+
+        # Build Directory
+        if clean:
+            if exists(build_path):
+                rmtree(build_path)
+        mkdir(build_path)
+
+        # We need to add if necessary additional include directories
+        if inc_dirs:
+            if type(inc_dirs) == ListType:
+                resources.inc_dirs.extend(inc_dirs)
+            else:
+                resources.inc_dirs.append(inc_dirs)
+        # Compile Sources
+        for path in src_paths:
+            src = toolchain.scan_resources(path)
+            objects = toolchain.compile_sources(src, build_path, resources.inc_dirs)
+            resources.objects.extend(objects)
+
+
+        # Link Program
+        res, needed_update = toolchain.link_program(resources, build_path, name)
+
+        if report != None and needed_update:
+            end = time()
+            cur_result["elapsed_time"] = end - start
+            cur_result["output"] = toolchain.get_output()
+            cur_result["result"] = "OK"
+
+            add_result_to_report(report, cur_result)
+
+        return res
+
+    except Exception, e:
+        if report != None:
+            end = time()
+
+            if isinstance(e, NotSupportedException):
+                cur_result["result"] = "NOT_SUPPORTED"
+            else:
+                cur_result["result"] = "FAIL"
+
+            cur_result["elapsed_time"] = end - start
+
+            toolchain_output = toolchain.get_output()
+            if toolchain_output:
+                cur_result["output"] += toolchain_output
+
+            cur_result["output"] += str(e)
+
+            add_result_to_report(report, cur_result)
+
+        # Let Exception propagate
+        raise e
+
+
+def build_library(src_paths, build_path, target, toolchain_name,
+         dependencies_paths=None, options=None, name=None, clean=False, archive=True,
+         notify=None, verbose=False, macros=None, inc_dirs=None, inc_dirs_ext=None,
+         jobs=1, silent=False, report=None, properties=None, extra_verbose=False):
+    """ src_path: the path of the source directory
+    build_path: the path of the build directory
+    target: ['LPC1768', 'LPC11U24', 'LPC2368']
+    toolchain: ['ARM', 'uARM', 'GCC_ARM', 'GCC_CR']
+    library_paths: List of paths to additional libraries
+    clean: Rebuild everything if True
+    notify: Notify function for logs
+    verbose: Write the actual tools command lines if True
+    inc_dirs: additional include directories which should be included in build
+    inc_dirs_ext: additional include directories which should be copied to library directory
+    """
+    if type(src_paths) != ListType:
+        src_paths = [src_paths]
+
+    # The first path will give the name to the library
+    project_name = basename(abspath(absrc_paths[0] if src_paths[0] != "." and src_paths[0] != "./" else getcwd()))
+    if name is None:
+        # We will use default project name based on project folder name
+        name = project_name
+
+    if report != None:
+        start = time()
+        id_name = name.upper()
+        description = name
+        vendor_label = target.extra_labels[0]
+        cur_result = None
+        prep_report(report, target.name, toolchain_name, id_name)
+        cur_result = create_result(target.name, toolchain_name, id_name, description)
+
+        if properties != None:
+            prep_properties(properties, target.name, toolchain_name, vendor_label)
+
+    for src_path in src_paths:
+        if not exists(src_path):
+            error_msg = "The library source folder does not exist: %s", src_path
+
+            if report != None:
+                cur_result["output"] = error_msg
+                cur_result["result"] = "FAIL"
+                add_result_to_report(report, cur_result)
+
+            raise Exception(error_msg)
+
+    try:
+        # Toolchain instance
+        toolchain = TOOLCHAIN_CLASSES[toolchain_name](target, options, macros=macros, notify=notify, silent=silent, extra_verbose=extra_verbose)
+        toolchain.VERBOSE = verbose
+        toolchain.jobs = jobs
+        toolchain.build_all = clean
+
+        toolchain.info("Building library %s (%s, %s)" % (name, target.name, toolchain_name))
+
+        # Scan Resources
+        resources = []
+        for src_path in src_paths:
+            resources.append(toolchain.scan_resources(src_path))
+
+        # Add extra include directories / files which are required by library
+        # This files usually are not in the same directory as source files so
+        # previous scan will not include them
+        if inc_dirs_ext is not None:
+            for inc_ext in inc_dirs_ext:
+                resources.append(toolchain.scan_resources(inc_ext))
+
+        # Dependencies Include Paths
+        dependencies_include_dir = []
+        if dependencies_paths is not None:
+            for path in dependencies_paths:
+                lib_resources = toolchain.scan_resources(path)
+                dependencies_include_dir.extend(lib_resources.inc_dirs)
+
+        if inc_dirs:
+            dependencies_include_dir.extend(inc_dirs)
+
+        if archive:
+            # Use temp path when building archive
+            tmp_path = join(build_path, '.temp')
+            mkdir(tmp_path)
+        else:
+            tmp_path = build_path
+
+        # Copy headers, objects and static libraries
+        for resource in resources:
+            toolchain.copy_files(resource.headers, build_path, rel_path=resource.base_path)
+            toolchain.copy_files(resource.objects, build_path, rel_path=resource.base_path)
+            toolchain.copy_files(resource.libraries, build_path, rel_path=resource.base_path)
+            if resource.linker_script:
+                toolchain.copy_files(resource.linker_script, build_path, rel_path=resource.base_path)
+
+        # Compile Sources
+        objects = []
+        for resource in resources:
+            objects.extend(toolchain.compile_sources(resource, abspath(tmp_path), dependencies_include_dir))
+
+        if archive:
+            needed_update = toolchain.build_library(objects, build_path, name)
+        else:
+            needed_update = True
+
+        if report != None and needed_update:
+            end = time()
+            cur_result["elapsed_time"] = end - start
+            cur_result["output"] = toolchain.get_output()
+            cur_result["result"] = "OK"
+
+            add_result_to_report(report, cur_result)
+
+    except Exception, e:
+        if report != None:
+            end = time()
+            cur_result["result"] = "FAIL"
+            cur_result["elapsed_time"] = end - start
+
+            toolchain_output = toolchain.get_output()
+            if toolchain_output:
+                cur_result["output"] += toolchain_output
+
+            cur_result["output"] += str(e)
+
+            add_result_to_report(report, cur_result)
+
+        # Let Exception propagate
+        raise e
+
+def build_lib(lib_id, target, toolchain, options=None, verbose=False, clean=False, macros=None, notify=None, jobs=1, silent=False, report=None, properties=None, extra_verbose=False):
+    """ Wrapper for build_library function.
+        Function builds library in proper directory using all dependencies and macros defined by user.
+    """
+    lib = Library(lib_id)
+    if lib.is_supported(target, toolchain):
+        # We need to combine macros from parameter list with macros from library definition
+        MACROS = lib.macros if lib.macros else []
+        if macros:
+            MACROS.extend(macros)
+
+        return build_library(lib.source_dir, lib.build_dir, target, toolchain, lib.dependencies, options,
+                      verbose=verbose,
+                      silent=silent,
+                      clean=clean,
+                      macros=MACROS,
+                      notify=notify,
+                      inc_dirs=lib.inc_dirs,
+                      inc_dirs_ext=lib.inc_dirs_ext,
+                      jobs=jobs,
+                      report=report,
+                      properties=properties,
+                      extra_verbose=extra_verbose)
+    else:
+        print 'Library "%s" is not yet supported on target %s with toolchain %s' % (lib_id, target.name, toolchain)
+        return False
+
+
+# We do have unique legacy conventions about how we build and package the mbed library
+def build_mbed_libs(target, toolchain_name, options=None, verbose=False, clean=False, macros=None, notify=None, jobs=1, silent=False, report=None, properties=None, extra_verbose=False):
+    """ Function returns True is library was built and false if building was skipped """
+
+    if report != None:
+        start = time()
+        id_name = "MBED"
+        description = "mbed SDK"
+        vendor_label = target.extra_labels[0]
+        cur_result = None
+        prep_report(report, target.name, toolchain_name, id_name)
+        cur_result = create_result(target.name, toolchain_name, id_name, description)
+
+        if properties != None:
+            prep_properties(properties, target.name, toolchain_name, vendor_label)
+
+    # Check toolchain support
+    if toolchain_name not in target.supported_toolchains:
+        supported_toolchains_text = ", ".join(target.supported_toolchains)
+        print '%s target is not yet supported by toolchain %s' % (target.name, toolchain_name)
+        print '%s target supports %s toolchain%s' % (target.name, supported_toolchains_text, 's' if len(target.supported_toolchains) > 1 else '')
+
+        if report != None:
+            cur_result["result"] = "SKIP"
+            add_result_to_report(report, cur_result)
+
+        return False
+
+    try:
+        # Toolchain
+        toolchain = TOOLCHAIN_CLASSES[toolchain_name](target, options, macros=macros, notify=notify, silent=silent, extra_verbose=extra_verbose)
+        toolchain.VERBOSE = verbose
+        toolchain.jobs = jobs
+        toolchain.build_all = clean
+
+        # Source and Build Paths
+        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)
+        mkdir(TMP_PATH)
+
+        # CMSIS
+        toolchain.info("Building library %s (%s, %s)"% ('CMSIS', target.name, toolchain_name))
+        cmsis_src = join(MBED_TARGETS_PATH, "cmsis")
+        resources = toolchain.scan_resources(cmsis_src)
+
+        toolchain.copy_files(resources.headers, BUILD_TARGET)
+        toolchain.copy_files(resources.linker_script, BUILD_TOOLCHAIN)
+        toolchain.copy_files(resources.bin_files, BUILD_TOOLCHAIN)
+
+        objects = toolchain.compile_sources(resources, TMP_PATH)
+        toolchain.copy_files(objects, BUILD_TOOLCHAIN)
+
+        # mbed
+        toolchain.info("Building library %s (%s, %s)" % ('MBED', target.name, toolchain_name))
+
+        # Common Headers
+        toolchain.copy_files(toolchain.scan_resources(MBED_API).headers, MBED_LIBRARIES)
+        toolchain.copy_files(toolchain.scan_resources(MBED_HAL).headers, MBED_LIBRARIES)
+
+        # Target specific sources
+        HAL_SRC = join(MBED_TARGETS_PATH, "hal")
+        hal_implementation = toolchain.scan_resources(HAL_SRC)
+        toolchain.copy_files(hal_implementation.headers + hal_implementation.hex_files + hal_implementation.libraries, BUILD_TARGET, HAL_SRC)
+        incdirs = toolchain.scan_resources(BUILD_TARGET).inc_dirs
+        objects = toolchain.compile_sources(hal_implementation, TMP_PATH, [MBED_LIBRARIES] + incdirs)
+
+        # Common Sources
+        mbed_resources = toolchain.scan_resources(MBED_COMMON)
+        objects += toolchain.compile_sources(mbed_resources, TMP_PATH, [MBED_LIBRARIES] + incdirs)
+
+        # A number of compiled files need to be copied as objects as opposed to
+        # being part of the mbed library, for reasons that have to do with the way
+        # the linker search for symbols in archives. These are:
+        #   - retarget.o: to make sure that the C standard lib symbols get overridden
+        #   - board.o: mbed_die is weak
+        #   - mbed_overrides.o: this contains platform overrides of various weak SDK functions
+        separate_names, separate_objects = ['retarget.o', 'board.o', 'mbed_overrides.o'], []
+
+        for o in objects:
+            for name in separate_names:
+                if o.endswith(name):
+                    separate_objects.append(o)
+
+        for o in separate_objects:
+            objects.remove(o)
+
+        needed_update = toolchain.build_library(objects, BUILD_TOOLCHAIN, "mbed")
+
+        for o in separate_objects:
+            toolchain.copy_files(o, BUILD_TOOLCHAIN)
+
+        if report != None and needed_update:
+            end = time()
+            cur_result["elapsed_time"] = end - start
+            cur_result["output"] = toolchain.get_output()
+            cur_result["result"] = "OK"
+
+            add_result_to_report(report, cur_result)
+
+        return True
+
+    except Exception, e:
+        if report != None:
+            end = time()
+            cur_result["result"] = "FAIL"
+            cur_result["elapsed_time"] = end - start
+
+            toolchain_output = toolchain.get_output()
+            if toolchain_output:
+                cur_result["output"] += toolchain_output
+
+            cur_result["output"] += str(e)
+
+            add_result_to_report(report, cur_result)
+
+        # Let Exception propagate
+        raise e
+
+def get_unique_supported_toolchains():
+    """ Get list of all unique toolchains supported by targets """
+    unique_supported_toolchains = []
+    for target in TARGET_NAMES:
+        for toolchain in TARGET_MAP[target].supported_toolchains:
+            if toolchain not in unique_supported_toolchains:
+                unique_supported_toolchains.append(toolchain)
+    return unique_supported_toolchains
+
+
+def mcu_toolchain_matrix(verbose_html=False, platform_filter=None):
+    """  Shows target map using prettytable """
+    unique_supported_toolchains = get_unique_supported_toolchains()
+    from prettytable import PrettyTable # Only use it in this function so building works without extra modules
+
+    # All tests status table print
+    columns = ["Platform"] + unique_supported_toolchains
+    pt = PrettyTable(["Platform"] + unique_supported_toolchains)
+    # Align table
+    for col in columns:
+        pt.align[col] = "c"
+    pt.align["Platform"] = "l"
+
+    perm_counter = 0
+    target_counter = 0
+    for target in sorted(TARGET_NAMES):
+        if platform_filter is not None:
+            # FIlter out platforms using regex
+            if re.search(platform_filter, target) is None:
+                continue
+        target_counter += 1
+
+        row = [target]  # First column is platform name
+        default_toolchain = TARGET_MAP[target].default_toolchain
+        for unique_toolchain in unique_supported_toolchains:
+            text = "-"
+            if default_toolchain == unique_toolchain:
+                text = "Default"
+                perm_counter += 1
+            elif unique_toolchain in TARGET_MAP[target].supported_toolchains:
+                text = "Supported"
+                perm_counter += 1
+            row.append(text)
+        pt.add_row(row)
+
+    result = pt.get_html_string() if verbose_html else pt.get_string()
+    result += "\n"
+    result += "*Default - default on-line compiler\n"
+    result += "*Supported - supported off-line compiler\n"
+    result += "\n"
+    result += "Total platforms: %d\n"% (target_counter)
+    result += "Total permutations: %d"% (perm_counter)
+    return result
+
+
+def get_target_supported_toolchains(target):
+    """ Returns target supported toolchains list """
+    return TARGET_MAP[target].supported_toolchains if target in TARGET_MAP else None
+
+
+def static_analysis_scan(target, toolchain_name, CPPCHECK_CMD, CPPCHECK_MSG_FORMAT, options=None, verbose=False, clean=False, macros=None, notify=None, jobs=1, extra_verbose=False):
+    # Toolchain
+    toolchain = TOOLCHAIN_CLASSES[toolchain_name](target, options, macros=macros, notify=notify, extra_verbose=extra_verbose)
+    toolchain.VERBOSE = verbose
+    toolchain.jobs = jobs
+    toolchain.build_all = clean
+
+    # Source and Build Paths
+    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)
+    mkdir(TMP_PATH)
+
+    # CMSIS
+    toolchain.info("Static analysis for %s (%s, %s)" % ('CMSIS', target.name, toolchain_name))
+    cmsis_src = join(MBED_TARGETS_PATH, "cmsis")
+    resources = toolchain.scan_resources(cmsis_src)
+
+    # Copy files before analysis
+    toolchain.copy_files(resources.headers, BUILD_TARGET)
+    toolchain.copy_files(resources.linker_script, BUILD_TOOLCHAIN)
+
+    # Gather include paths, c, cpp sources and macros to transfer to cppcheck command line
+    includes = ["-I%s"% i for i in resources.inc_dirs]
+    includes.append("-I%s"% str(BUILD_TARGET))
+    c_sources = " ".join(resources.c_sources)
+    cpp_sources = " ".join(resources.cpp_sources)
+    macros = ["-D%s"% s for s in toolchain.get_symbols() + toolchain.macros]
+
+    includes = map(str.strip, includes)
+    macros = map(str.strip, macros)
+
+    check_cmd = CPPCHECK_CMD
+    check_cmd += CPPCHECK_MSG_FORMAT
+    check_cmd += includes
+    check_cmd += macros
+
+    # We need to pass some params via file to avoid "command line too long in some OSs"
+    tmp_file = tempfile.NamedTemporaryFile(delete=False)
+    tmp_file.writelines(line + '\n' for line in c_sources.split())
+    tmp_file.writelines(line + '\n' for line in cpp_sources.split())
+    tmp_file.close()
+    check_cmd += ["--file-list=%s"% tmp_file.name]
+
+    _stdout, _stderr, _rc = run_cmd(check_cmd)
+    if verbose:
+        print _stdout
+    print _stderr
+
+    # =========================================================================
+
+    # MBED
+    toolchain.info("Static analysis for %s (%s, %s)" % ('MBED', target.name, toolchain_name))
+
+    # Common Headers
+    toolchain.copy_files(toolchain.scan_resources(MBED_API).headers, MBED_LIBRARIES)
+    toolchain.copy_files(toolchain.scan_resources(MBED_HAL).headers, MBED_LIBRARIES)
+
+    # Target specific sources
+    HAL_SRC = join(MBED_TARGETS_PATH, "hal")
+    hal_implementation = toolchain.scan_resources(HAL_SRC)
+
+    # Copy files before analysis
+    toolchain.copy_files(hal_implementation.headers + hal_implementation.hex_files, BUILD_TARGET, HAL_SRC)
+    incdirs = toolchain.scan_resources(BUILD_TARGET)
+
+    target_includes = ["-I%s" % i for i in incdirs.inc_dirs]
+    target_includes.append("-I%s"% str(BUILD_TARGET))
+    target_includes.append("-I%s"% str(HAL_SRC))
+    target_c_sources = " ".join(incdirs.c_sources)
+    target_cpp_sources = " ".join(incdirs.cpp_sources)
+    target_macros = ["-D%s"% s for s in toolchain.get_symbols() + toolchain.macros]
+
+    # Common Sources
+    mbed_resources = toolchain.scan_resources(MBED_COMMON)
+
+    # Gather include paths, c, cpp sources and macros to transfer to cppcheck command line
+    mbed_includes = ["-I%s" % i for i in mbed_resources.inc_dirs]
+    mbed_includes.append("-I%s"% str(BUILD_TARGET))
+    mbed_includes.append("-I%s"% str(MBED_COMMON))
+    mbed_includes.append("-I%s"% str(MBED_API))
+    mbed_includes.append("-I%s"% str(MBED_HAL))
+    mbed_c_sources = " ".join(mbed_resources.c_sources)
+    mbed_cpp_sources = " ".join(mbed_resources.cpp_sources)
+
+    target_includes = map(str.strip, target_includes)
+    mbed_includes = map(str.strip, mbed_includes)
+    target_macros = map(str.strip, target_macros)
+
+    check_cmd = CPPCHECK_CMD
+    check_cmd += CPPCHECK_MSG_FORMAT
+    check_cmd += target_includes
+    check_cmd += mbed_includes
+    check_cmd += target_macros
+
+    # We need to pass some parames via file to avoid "command line too long in some OSs"
+    tmp_file = tempfile.NamedTemporaryFile(delete=False)
+    tmp_file.writelines(line + '\n' for line in target_c_sources.split())
+    tmp_file.writelines(line + '\n' for line in target_cpp_sources.split())
+    tmp_file.writelines(line + '\n' for line in mbed_c_sources.split())
+    tmp_file.writelines(line + '\n' for line in mbed_cpp_sources.split())
+    tmp_file.close()
+    check_cmd += ["--file-list=%s"% tmp_file.name]
+
+    _stdout, _stderr, _rc = run_cmd_ext(check_cmd)
+    if verbose:
+        print _stdout
+    print _stderr
+
+
+def static_analysis_scan_lib(lib_id, target, toolchain, cppcheck_cmd, cppcheck_msg_format,
+                             options=None, verbose=False, clean=False, macros=None, notify=None, jobs=1, extra_verbose=False):
+    lib = Library(lib_id)
+    if lib.is_supported(target, toolchain):
+        static_analysis_scan_library(lib.source_dir, lib.build_dir, target, toolchain, cppcheck_cmd, cppcheck_msg_format,
+                      lib.dependencies, options,
+                      verbose=verbose, clean=clean, macros=macros, notify=notify, jobs=jobs, extra_verbose=extra_verbose)
+    else:
+        print 'Library "%s" is not yet supported on target %s with toolchain %s'% (lib_id, target.name, toolchain)
+
+
+def static_analysis_scan_library(src_paths, build_path, target, toolchain_name, cppcheck_cmd, cppcheck_msg_format,
+         dependencies_paths=None, options=None, name=None, clean=False,
+         notify=None, verbose=False, macros=None, jobs=1, extra_verbose=False):
+    """ Function scans library (or just some set of sources/headers) for staticly detectable defects """
+    if type(src_paths) != ListType:
+        src_paths = [src_paths]
+
+    for src_path in src_paths:
+        if not exists(src_path):
+            raise Exception("The library source folder does not exist: %s", src_path)
+
+    # Toolchain instance
+    toolchain = TOOLCHAIN_CLASSES[toolchain_name](target, options, macros=macros, notify=notify, extra_verbose=extra_verbose)
+    toolchain.VERBOSE = verbose
+    toolchain.jobs = jobs
+
+    # The first path will give the name to the library
+    name = basename(src_paths[0])
+    toolchain.info("Static analysis for library %s (%s, %s)" % (name.upper(), target.name, toolchain_name))
+
+    # Scan Resources
+    resources = []
+    for src_path in src_paths:
+        resources.append(toolchain.scan_resources(src_path))
+
+    # Dependencies Include Paths
+    dependencies_include_dir = []
+    if dependencies_paths is not None:
+        for path in dependencies_paths:
+            lib_resources = toolchain.scan_resources(path)
+            dependencies_include_dir.extend(lib_resources.inc_dirs)
+
+    # Create the desired build directory structure
+    bin_path = join(build_path, toolchain.obj_path)
+    mkdir(bin_path)
+    tmp_path = join(build_path, '.temp', toolchain.obj_path)
+    mkdir(tmp_path)
+
+    # Gather include paths, c, cpp sources and macros to transfer to cppcheck command line
+    includes = ["-I%s" % i for i in dependencies_include_dir + src_paths]
+    c_sources = " "
+    cpp_sources = " "
+    macros = ['-D%s' % s for s in toolchain.get_symbols() + toolchain.macros]
+
+    # Copy Headers
+    for resource in resources:
+        toolchain.copy_files(resource.headers, build_path, rel_path=resource.base_path)
+        includes += ["-I%s" % i for i in resource.inc_dirs]
+        c_sources += " ".join(resource.c_sources) + " "
+        cpp_sources += " ".join(resource.cpp_sources) + " "
+
+    dependencies_include_dir.extend(toolchain.scan_resources(build_path).inc_dirs)
+
+    includes = map(str.strip, includes)
+    macros = map(str.strip, macros)
+
+    check_cmd = cppcheck_cmd
+    check_cmd += cppcheck_msg_format
+    check_cmd += includes
+    check_cmd += macros
+
+    # We need to pass some parameters via file to avoid "command line too long in some OSs"
+    # Temporary file is created to store e.g. cppcheck list of files for command line
+    tmp_file = tempfile.NamedTemporaryFile(delete=False)
+    tmp_file.writelines(line + '\n' for line in c_sources.split())
+    tmp_file.writelines(line + '\n' for line in cpp_sources.split())
+    tmp_file.close()
+    check_cmd += ["--file-list=%s"% tmp_file.name]
+
+    # This will allow us to grab result from both stdio and stderr outputs (so we can show them)
+    # We assume static code analysis tool is outputting defects on STDERR
+    _stdout, _stderr, _rc = run_cmd_ext(check_cmd)
+    if verbose:
+        print _stdout
+    print _stderr
+
+
+def print_build_results(result_list, build_name):
+    """ Generate result string for build results """
+    result = ""
+    if len(result_list) > 0:
+        result += build_name + "\n"
+        result += "\n".join(["  * %s" % f for f in result_list])
+        result += "\n"
+    return result
+
+def write_build_report(build_report, template_filename, filename):
+    build_report_failing = []
+    build_report_passing = []
+
+    for report in build_report:
+        if len(report["failing"]) > 0:
+            build_report_failing.append(report)
+        else:
+            build_report_passing.append(report)
+
+    env = Environment(extensions=['jinja2.ext.with_'])
+    env.loader = FileSystemLoader('ci_templates')
+    template = env.get_template(template_filename)
+
+    with open(filename, 'w+') as f:
+        f.write(template.render(failing_builds=build_report_failing, passing_builds=build_report_passing))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build_release.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,282 @@
+#! /usr/bin/env python
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import sys
+from time import time
+from os.path import join, abspath, dirname, normpath
+from optparse import OptionParser
+import json
+
+# Be sure that the tools directory is in the search path
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from tools.build_api import build_mbed_libs
+from tools.build_api import write_build_report
+from tools.targets import TARGET_MAP
+from tools.test_exporters import ReportExporter, ResultExporterType
+from tools.test_api import SingleTestRunner
+from tools.test_api import singletest_in_cli_mode
+from tools.paths import TEST_DIR
+from tools.tests import TEST_MAP
+
+OFFICIAL_MBED_LIBRARY_BUILD = (
+    ('LPC11U24',     ('ARM', 'uARM', 'GCC_ARM', 'IAR')),
+    ('LPC1768',      ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('UBLOX_C027',   ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('ARCH_PRO',     ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('LPC2368',      ('ARM', 'GCC_ARM')),
+    ('LPC2460',      ('GCC_ARM',)),
+    ('LPC812',       ('uARM','IAR')),
+    ('LPC824',       ('uARM', 'GCC_ARM', 'IAR', 'GCC_CR')),
+    ('SSCI824',      ('uARM','GCC_ARM')),
+    ('LPC1347',      ('ARM','IAR')),
+    ('LPC4088',      ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('LPC4088_DM',   ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('LPC1114',      ('uARM','GCC_ARM', 'GCC_CR', 'IAR')),
+    ('LPC11U35_401', ('ARM', 'uARM','GCC_ARM','GCC_CR', 'IAR')),
+    ('LPC11U35_501', ('ARM', 'uARM','GCC_ARM','GCC_CR', 'IAR')),
+    ('LPC1549',      ('uARM','GCC_ARM','GCC_CR', 'IAR')),
+    ('XADOW_M0',     ('ARM', 'uARM','GCC_ARM','GCC_CR')),
+    ('ARCH_GPRS',    ('ARM', 'uARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('LPC4337',      ('ARM',)),
+    ('LPC11U37H_401', ('ARM', 'uARM','GCC_ARM','GCC_CR')),
+    ('MICRONFCBOARD', ('ARM', 'uARM','GCC_ARM')),
+
+    ('KL05Z',        ('ARM', 'uARM', 'GCC_ARM', 'IAR')),
+    ('KL25Z',        ('ARM', 'GCC_ARM', 'IAR')),
+    ('KL43Z',        ('ARM', 'GCC_ARM')),
+    ('KL46Z',        ('ARM', 'GCC_ARM', 'IAR')),
+    ('K64F',         ('ARM', 'GCC_ARM', 'IAR')),
+    ('K22F',         ('ARM', 'GCC_ARM', 'IAR')),
+    ('K20D50M',      ('ARM', 'GCC_ARM' , 'IAR')),
+    ('TEENSY3_1',      ('ARM', 'GCC_ARM')),
+
+    ('B96B_F446VE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F030R8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F031K6', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F042K6', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F070RB', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F072RB', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F091RC', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F103RB', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F302R8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F303K8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F303RE', ('ARM', 'uARM', 'IAR')),
+    ('NUCLEO_F334R8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F401RE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F410RB', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F411RE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F446RE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('ELMO_F411RE', ('ARM', 'uARM', 'GCC_ARM')),
+    ('NUCLEO_L053R8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_L152RE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('MTS_MDOT_F405RG', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('MTS_MDOT_F411RE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('MTS_DRAGONFLY_F411RE', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('DISCO_L053C8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('DISCO_F334C8', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('DISCO_F429ZI', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('DISCO_F469NI', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('DISCO_F746NG', ('ARM', 'uARM', 'GCC_ARM','IAR')),
+    ('DISCO_L476VG', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_L476RG', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+    ('NUCLEO_F746ZG', ('ARM', 'uARM', 'GCC_ARM', 'IAR')),
+    ('NUCLEO_L073RZ', ('ARM', 'uARM', 'GCC_ARM', 'IAR')),
+
+    ('MOTE_L152RC', ('ARM', 'uARM', 'IAR', 'GCC_ARM')),
+
+    ('ARCH_MAX',     ('ARM', 'GCC_ARM')),
+
+    ('NRF51822',     ('ARM', 'GCC_ARM', 'IAR')),
+    ('NRF51_DK',     ('ARM', 'GCC_ARM', 'IAR')),
+    ('NRF51_DONGLE', ('ARM', 'GCC_ARM', 'IAR')),
+    ('HRM1017',      ('ARM', 'GCC_ARM', 'IAR')),
+    ('ARCH_BLE',     ('ARM', 'GCC_ARM', 'IAR')),
+    ('SEEED_TINY_BLE', ('ARM', 'GCC_ARM', 'IAR')),
+    ('RBLAB_NRF51822', ('ARM', 'GCC_ARM')),
+    ('RBLAB_BLENANO', ('ARM', 'GCC_ARM')),
+    ('WALLBOT_BLE',  ('ARM', 'GCC_ARM')),
+    ('DELTA_DFCM_NNN40',  ('ARM', 'GCC_ARM')),
+    ('NRF51_MICROBIT',      ('ARM',)),
+    ('NRF51_MICROBIT_B',      ('ARM',)),
+    ('TY51822R3',     ('ARM', 'GCC_ARM')),
+
+    ('LPC11U68',     ('ARM', 'uARM','GCC_ARM','GCC_CR', 'IAR')),
+    ('OC_MBUINO',     ('ARM', 'uARM', 'GCC_ARM', 'IAR')),
+
+    ('ARM_MPS2_M0'   ,     ('ARM',)),
+    ('ARM_MPS2_M0P'   ,     ('ARM',)),
+    ('ARM_MPS2_M3'   ,     ('ARM',)),
+    ('ARM_MPS2_M4'   ,     ('ARM',)),
+    ('ARM_MPS2_M7'   ,     ('ARM',)),
+    ('ARM_MPS2_BEID' ,     ('ARM',)),
+
+    ('RZ_A1H'   ,     ('ARM', 'GCC_ARM', 'IAR')),
+
+    ('EFM32ZG_STK3200',     ('GCC_ARM', 'uARM')),
+    ('EFM32HG_STK3400',     ('GCC_ARM', 'uARM')),
+    ('EFM32LG_STK3600',     ('ARM', 'GCC_ARM', 'uARM')),
+    ('EFM32GG_STK3700',     ('ARM', 'GCC_ARM', 'uARM')),
+    ('EFM32WG_STK3800',     ('ARM', 'GCC_ARM', 'uARM')),
+
+    ('MAXWSNENV', ('ARM', 'GCC_ARM', 'IAR')),
+    ('MAX32600MBED', ('ARM', 'GCC_ARM', 'IAR')),
+
+    ('WIZWIKI_W7500',   ('ARM', 'uARM')),
+    ('WIZWIKI_W7500P',('ARM', 'uARM')),
+    ('WIZWIKI_W7500ECO',('ARM', 'uARM')),
+
+    ('SAMR21G18A',('ARM', 'uARM', 'GCC_ARM')),
+    ('SAMD21J18A',('ARM', 'uARM', 'GCC_ARM')),
+    ('SAMD21G18A',('ARM', 'uARM', 'GCC_ARM')),
+
+)
+
+
+if __name__ == '__main__':
+    parser = OptionParser()
+    parser.add_option('-o', '--official', dest="official_only", default=False, action="store_true",
+                      help="Build using only the official toolchain for each target")
+    parser.add_option("-j", "--jobs", type="int", dest="jobs",
+                      default=1, help="Number of concurrent jobs (default 1). Use 0 for auto based on host machine's number of CPUs")
+    parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
+                      default=False, help="Verbose diagnostic output")
+    parser.add_option("-t", "--toolchains", dest="toolchains", help="Use toolchains names separated by comma")
+
+    parser.add_option("-p", "--platforms", dest="platforms", default="", help="Build only for the platform namesseparated by comma")
+
+    parser.add_option("-L", "--list-config", action="store_true", dest="list_config",
+                      default=False, help="List the platforms and toolchains in the release in JSON")
+
+    parser.add_option("", "--report-build", dest="report_build_file_name", help="Output the build results to an junit xml file")
+
+    parser.add_option("", "--build-tests", dest="build_tests", help="Build all tests in the given directories (relative to /libraries/tests)")
+
+
+    options, args = parser.parse_args()
+
+
+
+    if options.list_config:
+        print json.dumps(OFFICIAL_MBED_LIBRARY_BUILD, indent=4)
+        sys.exit()
+
+    start = time()
+    build_report = {}
+    build_properties = {}
+
+    platforms = None
+    if options.platforms != "":
+        platforms = set(options.platforms.split(","))
+
+    if options.build_tests:
+        # Get all paths
+        directories = options.build_tests.split(',')
+        for i in range(len(directories)):
+            directories[i] = normpath(join(TEST_DIR, directories[i]))
+
+        test_names = []
+
+        for test_id in TEST_MAP.keys():
+            # Prevents tests with multiple source dirs from being checked
+            if isinstance( TEST_MAP[test_id].source_dir, basestring):
+                test_path = normpath(TEST_MAP[test_id].source_dir)
+                for directory in directories:
+                    if directory in test_path:
+                        test_names.append(test_id)
+
+        mut_counter = 1
+        mut = {}
+        test_spec = {
+            "targets": {}
+        }
+
+        for target_name, toolchain_list in OFFICIAL_MBED_LIBRARY_BUILD:
+            toolchains = None
+            if platforms is not None and not target_name in platforms:
+                print("Excluding %s from release" % target_name)
+                continue
+
+            if options.official_only:
+                toolchains = (getattr(TARGET_MAP[target_name], 'default_toolchain', 'ARM'),)
+            else:
+                toolchains = toolchain_list
+
+            if options.toolchains:
+                print "Only building using the following toolchains: %s" % (options.toolchains)
+                toolchainSet = set(toolchains)
+                toolchains = toolchainSet.intersection(set((options.toolchains).split(',')))
+
+            mut[str(mut_counter)] = {
+                "mcu": target_name
+            }
+
+            mut_counter += 1
+
+            test_spec["targets"][target_name] = toolchains
+
+            single_test = SingleTestRunner(_muts=mut,
+                                           _opts_report_build_file_name=options.report_build_file_name,
+                                           _test_spec=test_spec,
+                                           _opts_test_by_names=",".join(test_names),
+                                           _opts_verbose=options.verbose,
+                                           _opts_only_build_tests=True,
+                                           _opts_suppress_summary=True,
+                                           _opts_jobs=options.jobs,
+                                           _opts_include_non_automated=True,
+                                           _opts_build_report=build_report,
+                                           _opts_build_properties=build_properties)
+            # Runs test suite in CLI mode
+            test_summary, shuffle_seed, test_summary_ext, test_suite_properties_ext, new_build_report, new_build_properties = single_test.execute()
+    else:
+        for target_name, toolchain_list in OFFICIAL_MBED_LIBRARY_BUILD:
+            if platforms is not None and not target_name in platforms:
+                print("Excluding %s from release" % target_name)
+                continue
+
+            if options.official_only:
+                toolchains = (getattr(TARGET_MAP[target_name], 'default_toolchain', 'ARM'),)
+            else:
+                toolchains = toolchain_list
+
+            if options.toolchains:
+                print "Only building using the following toolchains: %s" % (options.toolchains)
+                toolchainSet = set(toolchains)
+                toolchains = toolchainSet.intersection(set((options.toolchains).split(',')))
+
+            for toolchain in toolchains:
+                id = "%s::%s" % (target_name, toolchain)
+
+                try:
+                    built_mbed_lib = build_mbed_libs(TARGET_MAP[target_name], toolchain, verbose=options.verbose, jobs=options.jobs, report=build_report, properties=build_properties)
+
+                except Exception, e:
+                    print str(e)
+
+    # Write summary of the builds
+    if options.report_build_file_name:
+        file_report_exporter = ReportExporter(ResultExporterType.JUNIT, package="build")
+        file_report_exporter.report_to_file(build_report, options.report_build_file_name, test_suite_properties=build_properties)
+
+    print "\n\nCompleted in: (%.2f)s" % (time() - start)
+
+    print_report_exporter = ReportExporter(ResultExporterType.PRINT, package="build")
+    status = print_report_exporter.report(build_report)
+
+    if not status:
+        sys.exit(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build_travis.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,180 @@
+#!/usr/bin/env python2
+
+"""
+Travis-CI build script
+
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+import sys
+
+################################################################################
+# Configure builds here
+# "libs" can contain "dsp", "rtos", "eth", "usb_host", "usb", "ublox", "fat"
+
+build_list = (
+    { "target": "LPC1768",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "eth", "usb_host", "usb", "ublox", "fat"] },
+    { "target": "LPC2368",           "toolchains": "GCC_ARM", "libs": ["fat"]  },
+    { "target": "LPC2460",           "toolchains": "GCC_ARM", "libs": ["rtos", "usb_host", "usb", "fat"]  },
+    { "target": "LPC11U24",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "OC_MBUINO",         "toolchains": "GCC_ARM", "libs": ["fat"]  },
+
+    { "target": "LPC11U24_301",      "toolchains": "GCC_ARM", "libs": ["fat"] },
+
+    { "target": "B96B_F446VE",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_L053R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_L152RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F030R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_F031K6",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_F042K6",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_F070RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_F072RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F091RC",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F103RB",     "toolchains": "GCC_ARM", "libs": ["rtos", "fat"] },
+    { "target": "NUCLEO_F302R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F303K8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F303RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F334R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F401RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F410RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_F411RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NUCLEO_L476RG",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_L073RZ",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NUCLEO_F446RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+
+    { "target": "MOTE_L152RC",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+
+    { "target": "ELMO_F411RE", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+
+    { "target": "MTS_MDOT_F405RG",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
+    { "target": "MTS_MDOT_F411RE",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
+    { "target": "MTS_DRAGONFLY_F411RE", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "ARCH_MAX",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+
+    { "target": "DISCO_F051R8",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "DISCO_F334C8",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "DISCO_F401VC",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "DISCO_F407VG",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "DISCO_F429ZI",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "DISCO_F469NI",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "DISCO_F746NG",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+
+    { "target": "LPC1114",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "LPC11U35_401",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "UBLOX_C027",        "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "LPC11U35_501",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "LPC11U68",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "LPC11U37H_401",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+
+    { "target": "KL05Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "KL25Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
+    { "target": "KL43Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
+    { "target": "KL46Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
+    { "target": "K20D50M",           "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "TEENSY3_1",         "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "K64F",              "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
+    { "target": "LPC4088",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
+    { "target": "ARCH_PRO",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "LPC1549",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
+    { "target": "NRF51822",          "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "DELTA_DFCM_NNN40",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NRF51_DK",          "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "NRF51_MICROBIT",    "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+
+    { "target": "EFM32ZG_STK3200",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
+    { "target": "EFM32HG_STK3400",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
+    { "target": "EFM32LG_STK3600",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
+    { "target": "EFM32GG_STK3700",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
+    { "target": "EFM32WG_STK3800",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
+    { "target": "EFM32PG_STK3401",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
+
+    { "target": "MAXWSNENV",    "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "MAX32600MBED", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+
+    { "target": "RZ_A1H", "toolchains": "GCC_ARM", "libs": ["fat"] },
+
+    { "target": "SAMR21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "SAMD21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "SAMD21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+    { "target": "SAML21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
+)
+
+################################################################################
+# Configure example test building (linking against external mbed SDK libraries liek fat or rtos)
+
+linking_list = [
+    {"target": "LPC1768",
+     "toolchains": "GCC_ARM",
+     "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_15", "MBED_16", "MBED_17"],
+               "eth"  : ["NET_1", "NET_2", "NET_3", "NET_4"],
+               "fat"  : ["MBED_A12", "MBED_19", "PERF_1", "PERF_2", "PERF_3"],
+               "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
+               "usb"  : ["USB_1", "USB_2" ,"USB_3"],
+               }
+     }
+     ]
+
+################################################################################
+
+# Driver
+
+def run_builds(dry_run):
+    for build in build_list:
+        toolchain_list = build["toolchains"]
+        if type(toolchain_list) != type([]): toolchain_list = [toolchain_list]
+        for toolchain in toolchain_list:
+            cmdline = "python tools/build.py -m %s -t %s -j 4 -c --silent "% (build["target"], toolchain)
+            libs = build.get("libs", [])
+            if libs:
+                cmdline = cmdline + " ".join(["--" + l for l in libs])
+            print "Executing: " + cmdline
+            if not dry_run:
+                if os.system(cmdline) != 0:
+                    sys.exit(1)
+
+
+def run_test_linking(dry_run):
+    """ Function run make.py commands to build and link simple mbed SDK
+        tests against few libraries to make sure there are no simple linking errors.
+    """
+    for link in linking_list:
+        toolchain_list = link["toolchains"]
+        if type(toolchain_list) != type([]):
+            toolchain_list = [toolchain_list]
+        for toolchain in toolchain_list:
+            tests = link["tests"]
+            # Call make.py for each test group for particular library
+            for test_lib in tests:
+                test_names = tests[test_lib]
+                test_lib_switch = "--" + test_lib if test_lib else ""
+                cmdline = "python tools/make.py -m %s -t %s -c --silent %s -n %s " % (link["target"], toolchain, test_lib_switch, ",".join(test_names))
+                print "Executing: " + cmdline
+                if not dry_run:
+                    if os.system(cmdline) != 0:
+                        sys.exit(1)
+
+def run_test_testsuite(dry_run):
+    cmdline = "python tools/singletest.py --version"
+    print "Executing: " + cmdline
+    if not dry_run:
+        if os.system(cmdline) != 0:
+            sys.exit(1)
+
+if __name__ == "__main__":
+    run_builds("-s" in sys.argv)
+    run_test_linking("-s" in sys.argv)
+    run_test_testsuite("-s" in sys.argv)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildbot/master.cfg	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,406 @@
+# -*- python -*-
+# ex: set syntax=python:
+
+# This is a sample buildmaster config file. It must be installed as
+# 'master.cfg' in your buildmaster's base directory.
+
+# This is the dictionary that the buildmaster pays attention to. We also use
+# a shorter alias to save typing.
+c = BuildmasterConfig = {}
+
+####### BUILDSLAVES
+
+# The 'slaves' list defines the set of recognized buildslaves. Each element is
+# a BuildSlave object, specifying a unique slave name and password.  The same
+# slave name and password must be configured on the slave.
+from buildbot.buildslave import BuildSlave
+c['slaves'] = [BuildSlave("example-slave", "pass"),
+               BuildSlave("example-slave-2", "pass"),
+               BuildSlave("example-slave-KL25Z", "pass"),
+               BuildSlave("example-slave-LPC1768", "pass"),
+               BuildSlave("example-slave-LPC11U24", "pass"),
+              ]
+
+# 'slavePortnum' defines the TCP port to listen on for connections from slaves.
+# This must match the value configured into the buildslaves (with their
+# --master option)
+c['slavePortnum'] = 9989
+
+####### OFFICIAL_MBED_LIBRARY_BUILD
+
+OFFICIAL_MBED_LIBRARY_BUILD = (
+    ('LPC1768', ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    ('KL05Z', ('ARM', 'uARM', 'GCC_ARM')),
+    ('KL25Z', ('ARM', 'GCC_ARM')),
+    ('LPC11U24', ('ARM', 'uARM')),
+    ('KL46Z', ('ARM', 'GCC_ARM')),
+    ('LPC4088', ('ARM', 'GCC_ARM', 'GCC_CR')),
+    ('LPC1347', ('ARM',)),
+    ('LPC1549', ('uARM',)),
+    ('LPC2368', ('ARM',)),
+    ('LPC812', ('uARM',)),
+    ('LPC11U35_401', ('ARM', 'uARM')),
+    ('LPC1114', ('uARM',)),
+    ('NUCLEO_F103RB', ('ARM', 'uARM')),
+    ('NUCLEO_L152RE', ('ARM', 'uARM')),
+    ('NUCLEO_F401RE', ('ARM', 'uARM')),
+    ('NUCLEO_F030R8', ('ARM', 'uARM')),
+    ('UBLOX_C027', ('ARM', 'GCC_ARM', 'GCC_CR', 'IAR')),
+    # ('NRF51822', ('ARM',)),
+)
+
+# Which hardware platforms are supported for target testing
+OFFICIAL_MBED_TESTBED_SUPPORTED_HARDWARE = (
+    # 'KL25Z',
+    # 'LPC1768',
+    # 'LPC11U24',
+)
+
+####### CHANGESOURCES
+
+# the 'change_source' setting tells the buildmaster how it should find out
+# about source code changes.  Here we point to the buildbot clone of pyflakes.
+
+from buildbot.changes.gitpoller import GitPoller
+c['change_source'] = []
+"""
+c['change_source'].append(GitPoller(
+        'git://github.com/buildbot/pyflakes.git',
+        workdir='gitpoller-workdir', branch='master',
+        pollinterval=300))
+"""
+####### SCHEDULERS
+
+# Configure the Schedulers, which decide how to react to incoming changes.  In this
+# case, just kick off a 'runtests' build
+
+from buildbot.schedulers.basic import SingleBranchScheduler
+from buildbot.schedulers.forcesched import ForceScheduler
+from buildbot.changes import filter
+c['schedulers'] = []
+
+# Create builders to generate one target using all assigned toolchains
+release_builder_name = "BuildRelease"
+builder_names = [release_builder_name]
+for target_name, toolchains in OFFICIAL_MBED_LIBRARY_BUILD:
+    builder_name = "All_TC_%s" % target_name
+    builder_names.append(builder_name)
+c['schedulers'].append(ForceScheduler(name="force", builderNames=builder_names))
+
+####### BUILDERS
+
+# The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
+# what steps, and which slaves can execute them.  Note that any particular build will
+# only take place on one slave.
+
+from buildbot.process.factory import BuildFactory
+from buildbot.steps.source.git import Git
+from buildbot.steps.shell import ShellCommand
+from buildbot.process.buildstep import LogLineObserver
+import buildbot.status.results
+import re
+import pprint
+
+class TestCommand(ShellCommand):
+    failedTestsCount = 0    # FAIL
+    passedTestsCount = 0    # OK
+    errorsTestsCount = 0    # ERROR
+    undefsTestsCount = 0    # UNDEF
+    testsResults = []
+
+    def __init__(self, stage=None,module=None, moduleset=None, **kwargs):
+        ShellCommand.__init__(self, **kwargs)
+        self.failedTestsCount = 0
+        self.passedTestsCount = 0
+        self.errorsTestsCount = 0
+        self.tracebackPyCount = 0
+        self.testsResults = []
+        testFailuresObserver = UnitTestsObserver ()
+        self.addLogObserver('stdio', testFailuresObserver)
+
+    def createSummary(self, log):
+        if self.failedTestsCount >= 0 or self.passedTestsCount >= 0 or self.errorsTestsCount >= 0 or self.undefsTestsCount >= 0:
+            self.addHTMLLog ('tests summary', self.createTestsSummary())
+
+    def getText(self, cmd, results):
+        text = ShellCommand.getText(self, cmd, results)
+        text.append("OK: "    + str(self.passedTestsCount))
+        text.append("FAIL: "  + str(self.failedTestsCount))
+        text.append("ERROR: " + str(self.errorsTestsCount))
+        text.append("UNDEF: " + str(self.undefsTestsCount))
+        text.append("Traceback: " + str(self.tracebackPyCount))
+        return text
+
+    def evaluateCommand(self, cmd):
+        if self.failedTestsCount > 0:
+            return buildbot.status.results.WARNINGS
+        elif self.errorsTestsCount > 0 or self.undefsTestsCount > 0 or self.tracebackPyCount > 0:
+            return buildbot.status.results.FAILURE
+        return buildbot.status.results.SUCCESS
+
+    def find_unique_tc_result_value(self, index):
+        """ Get unique values from each row in data parameter """
+        result = []
+        for tc_result_list in self.testsResults:
+            if tc_result_list[index] not in result:
+                result.append(tc_result_list[index])
+        return result
+
+    def html_view_test_result(self, targets, tests, toolchain):
+        """ Generates simple result table """
+        COLOR_OK      = "LimeGreen"
+        COLOR_FAIL    = "LightCoral"
+        COLOR_UNDEF   = "LightSlateGray"
+        COLOR_NEUTRAL = "Silver"
+
+        STATUS_COLORS = { "OK"    : COLOR_OK,
+                          "FAIL"  : COLOR_FAIL,
+                          "UNDEF" : COLOR_UNDEF}
+
+        result = "<table>"
+        result += "<tr valign='center'><td align='center'><b>" + toolchain + "</b></td>"
+        for test in tests:
+            result += "<td align='center'>" + test + "<br></td>"
+        result += "</tr>"
+
+        for target in targets:
+            result += "<tr><td width='110px'><br>" + target + "<br></td>"
+            for test in tests:
+                for tc_result_list in self.testsResults:
+                    if tc_result_list[1] == target and tc_result_list[2] == toolchain and tc_result_list[3] == test:
+                        status = tc_result_list[4]
+                        bgcolor = STATUS_COLORS[status]
+                        result += "<td align='center' bgcolor='" + bgcolor + "'>" + status + "</td>"
+                        break;
+                else:
+                    result += "<td bgcolor='" + COLOR_NEUTRAL + "'></td>"
+            result += "</tr>"
+        result += "</table>"
+        return result
+
+    def createTestsSummary (self):
+        targets = self.find_unique_tc_result_value(1)
+        toolchains = self.find_unique_tc_result_value(2)
+        tests = self.find_unique_tc_result_value(3)
+        html_result = ""
+        for toolchain in toolchains:
+            html_result += self.html_view_test_result(targets, tests, toolchain)
+            html_result += "<br>"
+        return html_result
+
+
+class UnitTestsObserver(LogLineObserver):
+    reGroupTestResult = []
+    reGroupPyResult = []
+
+    def __init__(self):
+        LogLineObserver.__init__(self)
+        if len(self.reGroupTestResult) == 0:
+            self.reGroupTestResult.append(re.compile("^(\w+Test)::(\w+)::(\w+)::(\w+)::.* \[(\w+)\] in (\d+\.\d+) of (\d+) sec[\r\n]*$"))
+
+    def outLineReceived(self, line):
+        matched = False
+        for r in self.reGroupTestResult:
+            result = r.match(line)
+            if result:
+                self.step.testsResults.append(result.groups())
+                if result.group(5) == 'OK':
+                    self.step.passedTestsCount += 1
+                elif result.group(5) == 'FAIL':
+                    self.step.failedTestsCount += 1
+                elif result.group(5) == 'UNDEF':
+                    self.step.undefsTestsCount += 1
+                elif result.group(5) == 'ERROR':
+                    self.step.errorsTestsCount += 1
+                matched = True
+
+
+class BuildCommand(ShellCommand):
+    warningsCount = 0    # [Warning]
+    errorsCount = 0      # [Error]
+    testsResults = []
+
+    def __init__(self, stage=None,module=None, moduleset=None, **kwargs):
+        ShellCommand.__init__(self, **kwargs)
+        self.warningsCount = 0
+        self.errorsCount = 0
+        self.testsResults = []
+        buildProcessObserver = BuildObserver ()
+        self.addLogObserver('stdio', buildProcessObserver)
+
+    def createSummary(self, log):
+        if self.warningsCount >= 0 or self.errorsCount >= 0:
+            self.addHTMLLog ('tests summary', self.createTestsSummary())
+
+    def getText(self, cmd, results):
+        text = ShellCommand.getText(self, cmd, results)
+        if self.warningsCount > 0 or self.errorsCount > 0:
+            text.append("warnings: " + str(self.warningsCount))
+            text.append("errors: " + str(self.errorsCount))
+        return text
+
+    def evaluateCommand(self, cmd):
+        if self.warningsCount > 0:
+            return buildbot.status.results.WARNINGS
+        elif self.errorsCount > 0:
+            return buildbot.status.results.FAILURE
+        else:
+            return buildbot.status.results.SUCCESS
+
+    def createTestsSummary (self):
+            # Create a string with your html report and return it
+            html = "<h4>Report</h4><table>"
+            #for result in self.testsResults:
+            html += "</table>"
+            return html
+
+class BuildObserver(LogLineObserver):
+    regroupresult = []
+
+    def __init__(self):
+        LogLineObserver.__init__(self)
+        if len(self.regroupresult) == 0:
+            self.regroupresult.append(re.compile("^\[([Ww]arning)\] (.*)"))
+            self.regroupresult.append(re.compile("^\[([Ee]rror)\] (.*)"))
+
+    def outLineReceived(self, line):
+        matched = False
+        for r in self.regroupresult:
+            result = r.match(line)
+            if result:
+                self.step.testsResults.append(result.groups())
+                if result.group(1) == 'Warning':
+                    self.step.warningsCount += 1
+                elif result.group(1) == 'Error':
+                    self.step.errorsCount += 1
+                matched = True
+        #if not matched:
+            # [Future-Dev] Other check...
+
+
+####### BUILDERS - mbed project
+git_clone = Git(repourl='https://github.com/mbedmicro/mbed.git', mode='incremental')
+
+# create the build factory for mbed and add the steps to it
+from buildbot.config import BuilderConfig
+
+c['builders'] = []
+
+copy_private_settings = ShellCommand(name = "copy private_settings.py",
+                                     command = "cp ../private_settings.py workspace_tools/private_settings.py",
+                                     haltOnFailure = True,
+                                     description = "Copy private_settings.py")
+
+mbed_build_release = BuildFactory()
+mbed_build_release.addStep(git_clone)
+mbed_build_release.addStep(copy_private_settings)
+
+for target_name, toolchains in OFFICIAL_MBED_LIBRARY_BUILD:
+    builder_name = "All_TC_%s" % target_name
+    mbed_build = BuildFactory()
+    mbed_build.addStep(git_clone)
+    mbed_build.addStep(copy_private_settings)
+    # Adding all chains for target
+    for toolchain in toolchains:
+        build_py = BuildCommand(name = "Build %s using %s"  % (target_name, toolchain),
+                               command = "python workspace_tools/build.py -m %s -t %s" % (target_name, toolchain),
+                               haltOnFailure = True,
+                               warnOnWarnings = True,
+                               description = "Building %s using %s"  % (target_name, toolchain),
+                               descriptionDone = "Built %s using %s"  % (target_name, toolchain))
+
+        mbed_build.addStep(build_py)
+        mbed_build_release.addStep(build_py)    # For build release we need all toolchains
+
+    if target_name in OFFICIAL_MBED_TESTBED_SUPPORTED_HARDWARE:
+        copy_example_test_spec_json = ShellCommand(name = "Copy example_test_spec.json",
+                                                   command = "cp ../example_test_spec.json workspace_tools/data/example_test_spec.json",
+                                                   haltOnFailure = True,
+                                                   description = "Copy example_test_spec.json")
+
+        autotest_py = ShellCommand(name = "Running autotest.py for %s" % (target_name),
+                                   command = "python workspace_tools/autotest.py workspace_tools/data/example_test_spec.json",
+                                   haltOnFailure = True,
+                                   description = "Running autotest.py")
+
+        mbed_build.addStep(copy_example_test_spec_json)
+        mbed_build.addStep(autotest_py)
+
+        # Add builder with steps for each toolchain
+        c['builders'].append(BuilderConfig(name=builder_name,
+                             slavenames=["example-slave-%s" % (target_name)],
+                             factory=mbed_build))
+    else:
+        # Add builder with steps for each toolchain
+        c['builders'].append(BuilderConfig(name=builder_name,
+                             slavenames=["example-slave"],
+                             factory=mbed_build))
+
+# copy_example_test_spec_json = ShellCommand(name = "Copy example_test_spec.json",
+                                           # command = "cp ../example_test_spec.json workspace_tools/data/example_test_spec.json",
+                                           # haltOnFailure = True,
+                                           # description = "Copy example_test_spec.json")
+
+singletest_py = TestCommand(name = "Running Target Tests",
+                            command = "python workspace_tools/singletest.py -i workspace_tools/test_spec.json -M workspace_tools/muts_all.json",
+                            haltOnFailure = True,
+                            warnOnWarnings = True,
+                            description = "Running Target Tests",
+                            descriptionDone = "Target Testing Finished")
+
+mbed_build_release.addStep(singletest_py)
+# Release build collects all building toolchains
+c['builders'].append(BuilderConfig(name=release_builder_name,
+                     slavenames=["example-slave"],
+                     factory=mbed_build_release))
+
+####### STATUS TARGETS
+
+# 'status' is a list of Status Targets. The results of each build will be
+# pushed to these targets. buildbot/status/*.py has a variety to choose from,
+# including web pages, email senders, and IRC bots.
+
+c['status'] = []
+
+from buildbot.status import html
+from buildbot.status.web import authz, auth
+
+authz_cfg=authz.Authz(
+    # change any of these to True to enable; see the manual for more
+    # options
+    auth=auth.BasicAuth([("pyflakes","pyflakes")]),
+    gracefulShutdown = False,
+    forceBuild = 'auth', # use this to test your slave once it is set up
+    forceAllBuilds = True,
+    pingBuilder = True,
+    stopBuild = True,
+    stopAllBuilds = True,
+    cancelPendingBuild = True,
+)
+c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg, order_console_by_time=True))
+
+####### PROJECT IDENTITY
+
+# the 'title' string will appear at the top of this buildbot
+# installation's html.WebStatus home page (linked to the
+# 'titleURL') and is embedded in the title of the waterfall HTML page.
+
+c['title'] = "Green Tea"
+c['titleURL'] = ""
+
+# the 'buildbotURL' string should point to the location where the buildbot's
+# internal web server (usually the html.WebStatus page) is visible. This
+# typically uses the port number set in the Waterfall 'status' entry, but
+# with an externally-visible host name which the buildbot cannot figure out
+# without some help.
+
+c['buildbotURL'] = "http://localhost:8010/"
+
+####### DB URL
+
+c['db'] = {
+    # This specifies what database buildbot uses to store its state.  You can leave
+    # this at its default for all but the largest installations.
+    'db_url' : "sqlite:///state.sqlite",
+    # 'db_url' : "mysql://buildbot:123456@localhost/buildbot_mbed?max_idle=300",
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/library_build/build_report.html	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,31 @@
+<div class="toggleshow{% if report.failing|length == 0 %} toggleshow-hide{% endif %}">
+  <h3>
+    <a href="#" class="toggleshow-title">
+      <span class="toggleshow-arrow"></span>
+      {% if report.failing|length > 0 %}
+      <span class="redbold">[FAIL]</span>
+      {% else %}
+      <span class="greenbold">[PASS]</span>
+      {% endif %}
+
+      {{report.target}} - Passing: {{report.passing|length}}, Failing: {{report.failing|length}}, Skipped: {{report.skipped|length}}
+    </a>
+  </h3>
+
+  <div class="toggleshow-body">
+    <h4 class="redbold">Failing</h4>
+    {% with build = report.failing %}
+    {% include 'library_build/build_report_table.html' %}
+    {% endwith %}
+
+    <h4 class="greenbold">Passing</h4>
+    {% with build = report.passing %}
+    {% include 'library_build/build_report_table.html' %}
+    {% endwith %}
+
+    <h4>Skipped</h4>
+    {% with build = report.skipped %}
+    {% include 'library_build/build_report_table.html' %}
+    {% endwith %}
+  </div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/library_build/build_report_table.html	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+<table class="sortable pane bigtable stripped-odd">
+  <tr>
+    <th>Toolchain</th>
+  </tr>
+  {% for run in build %}
+  <tr>
+    <td>{{run.toolchain}}</td>
+  </tr>
+  {% endfor %}
+</table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/library_build/report.html	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,11 @@
+<h2>{{failing_builds|length}} Failing Builds</h2>
+{% for report in failing_builds %}
+{% include 'library_build/build_report.html' %}
+{% endfor %}
+
+<h2>{{passing_builds|length}} Passing Builds</h2>
+{% for report in passing_builds %}
+{% include 'library_build/build_report.html' %}
+{% endfor %}
+
+{% include 'scripts.js' %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/scripts.js	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,53 @@
+<script>
+  var elements = document.querySelectorAll(".toggleshow"),
+      hideClass = 'toggleshow-hide';
+
+  for (var i = 0; i < elements.length; i++) {
+    var arrow = elements[i].querySelector(".toggleshow-arrow");
+    // Initial hide/show based on class
+    // Update arrow as well
+    if (containsClass(elements[i], 'toggleshow-hide')) {
+      toggleDisplay(elements[i]);
+      changeArrow(arrow, false);
+    } else {
+      changeArrow(arrow, true);
+    }
+
+    // Add click handler
+    addClick(elements[i], toggleDisplay);
+  }
+
+  function containsClass(element, className) {
+    var eleClassName = ' ' + elements[i].className + ' ';
+    return eleClassName.indexOf(' ' + className + ' ') > -1;
+  }
+
+  function toggleDisplay(parentElement) {
+    var body = parentElement.querySelector(".toggleshow-body"),
+        arrow = parentElement.querySelector(".toggleshow-arrow");
+
+    if (body.style.display == 'block' || body.style.display == '') {
+      body.style.display = 'none';
+      changeArrow(arrow, false);
+    } else {
+      body.style.display = 'block';
+      changeArrow(arrow, true);
+    }
+  }
+
+  function changeArrow(element, visible) {
+    if (visible) {
+      element.innerHTML = '&#9650';
+    } else {
+      element.innerHTML = '&#9660';
+    }
+  }
+
+  function addClick(parentElement, func) {
+    parentElement.querySelector(".toggleshow-title").addEventListener("click", function(e) {
+      func(parentElement);
+      e.preventDefault();
+      return false;
+    });
+  }
+</script>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/tests_build/build_report.html	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,31 @@
+<div class="toggleshow{% if report.failing|length == 0 %} toggleshow-hide{% endif %}">
+  <h3>
+    <a href="#" class="toggleshow-title">
+      <span class="toggleshow-arrow"></span>
+      {% if report.failing|length > 0 %}
+      <span class="redbold">[FAIL]</span>
+      {% else %}
+      <span class="greenbold">[PASS]</span>
+      {% endif %}
+
+      {{report.target}} - Passing: {{report.passing|length}}, Failing: {{report.failing|length}}, Skipped: {{report.skipped|length}}
+    </a>
+  </h3>
+
+  <div class="toggleshow-body">
+    <h4 class="redbold">Failing</h4>
+    {% with build = report.failing %}
+    {% include 'tests_build/build_report_table.html' %}
+    {% endwith %}
+
+    <h4 class="greenbold">Passing</h4>
+    {% with build = report.passing %}
+    {% include 'tests_build/build_report_table.html' %}
+    {% endwith %}
+
+    <h4>Skipped</h4>
+    {% with build = report.skipped %}
+    {% include 'tests_build/build_report_table.html' %}
+    {% endwith %}
+  </div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/tests_build/build_report_table.html	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,12 @@
+<table class="sortable pane bigtable stripped-odd">
+  <tr>
+    <th>Toolchain</th>
+    <th>Project</th>
+  </tr>
+  {% for run in build %}
+  <tr>
+    <td>{{run.toolchain}}</td>
+    <td>{{run.project}}</td>
+  </tr>
+  {% endfor %}
+</table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ci_templates/tests_build/report.html	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,11 @@
+<h2>{{failing_builds|length}} Failing Builds</h2>
+{% for report in failing_builds %}
+{% include 'tests_build/build_report.html' %}
+{% endfor %}
+
+<h2>{{passing_builds|length}} Passing Builds</h2>
+{% for report in passing_builds %}
+{% include 'tests_build/build_report.html' %}
+{% endfor %}
+
+{% include 'scripts.js' %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compliance/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,16 @@
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compliance/ioper_base.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,69 @@
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+
+"""
+
+import sys
+
+try:
+    from colorama import Fore
+except:
+    pass
+
+COLORAMA = 'colorama' in sys.modules
+
+
+class IOperTestCaseBase():
+    """ Interoperability test case base class
+        @return list of tuple (severity, Description)
+                Example:      (result.append((IOperTestSeverity.INFO, ""))
+    """
+
+    def __init__(self, scope=None):
+        self.PASS = 'PASS'
+        self.INFO = 'INFO'
+        self.ERROR = 'ERROR'
+        self.WARN = 'WARN'
+
+        self.scope = scope   # Default test scope (basic, pedantic, mbed-enabled etc...)
+
+    def test(self, param=None):
+        result = []
+        return result
+
+    def RED(self, text):
+        return self.color_text(text, color=Fore.RED, delim=Fore.RESET) if COLORAMA else text
+
+    def GREEN(self, text):
+        return self.color_text(text, color=Fore.GREEN, delim=Fore.RESET) if COLORAMA else text
+
+    def YELLOW(self, text):
+        return self.color_text(text, color=Fore.YELLOW, delim=Fore.RESET) if COLORAMA else text
+
+    def color_text(self, text, color='', delim=''):
+        return color + text + color + delim
+
+    def COLOR(self, severity, text):
+        colors = {
+            self.PASS : self.GREEN,
+            self.ERROR : self.RED,
+            self.WARN : self.YELLOW
+        }
+        if severity in colors:
+            return colors[severity](text)
+        return text
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compliance/ioper_runner.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,125 @@
+#!/usr/bin/env python2
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+
+"""
+
+import sys
+import mbed_lstools
+from prettytable import PrettyTable
+
+try:
+    from colorama import init
+except:
+    pass
+
+COLORAMA = 'colorama' in sys.modules
+
+from ioper_base import IOperTestCaseBase
+from ioper_test_fs import IOperTest_FileStructure_Basic
+from ioper_test_fs import IOperTest_FileStructure_MbedEnabled
+from ioper_test_target_id import IOperTest_TargetID_Basic
+from ioper_test_target_id import IOperTest_TargetID_MbedEnabled
+
+
+TEST_LIST = [IOperTest_TargetID_Basic('basic'),
+             IOperTest_TargetID_MbedEnabled('mbed-enabled'),
+             IOperTest_FileStructure_Basic('basic'),
+             IOperTest_FileStructure_MbedEnabled('mbed-enabled'),
+             IOperTestCaseBase('all'),  # Dummy used to add 'all' option
+            ]
+
+
+class IOperTestRunner():
+    """ Calls all i/face interoperability tests
+    """
+
+    def __init__(self, scope=None):
+        """ Test scope:
+            'pedantic' - all
+            'mbed-enabled' - let's try to check if this device is mbed-enabled
+            'basic' - just simple, passive tests (no device flashing)
+        """
+        self.requested_scope = scope    # Test scope given by user
+        self.raw_test_results = {}      # Raw test results, can be used by exporters: { Platform: [test results]} 
+
+        # Test scope definitions
+        self.SCOPE_BASIC = 'basic'                  # Basic tests, sanity checks
+        self.SCOPE_MBED_ENABLED = 'mbed-enabled'    # Let's try to check if this device is mbed-enabled
+        self.SCOPE_PEDANTIC = 'pedantic'            # Extensive tests
+        self.SCOPE_ALL = 'all'                      # All tests, equal to highest scope level
+
+        # This structure will help us sort test scopes so we can include them
+        # e.g. pedantic also includes basic and mbed-enabled tests
+        self.scopes = {self.SCOPE_BASIC : 0,
+                       self.SCOPE_MBED_ENABLED : 1,
+                       self.SCOPE_PEDANTIC : 2,
+                       self.SCOPE_ALL : 99,
+                    }
+
+        if COLORAMA:
+            init()  # colorama.init()
+
+    def run(self):
+        """ Run tests, calculate overall score and print test results
+        """
+        mbeds = mbed_lstools.create()
+        muts_list = mbeds.list_mbeds()
+        test_base = IOperTestCaseBase()
+
+        self.raw_test_results = {}
+        for i, mut in enumerate(muts_list):
+            result = []
+            self.raw_test_results[mut['platform_name']] = []
+
+            print "MBEDLS: Detected %s, port: %s, mounted: %s"% (mut['platform_name'],
+                                                                 mut['serial_port'],
+                                                                 mut['mount_point'])
+            print "Running interoperability test suite, scope '%s'" % (self.requested_scope)
+            for test_case in TEST_LIST:
+                if self.scopes[self.requested_scope] >= self.scopes[test_case.scope]:
+                    res = test_case.test(param=mut)
+                    result.extend(res)
+                    self.raw_test_results[mut['platform_name']].extend(res)
+
+            columns = ['Platform', 'Test Case', 'Result', 'Scope', 'Description']
+            pt = PrettyTable(columns)
+            for col in columns:
+                pt.align[col] = 'l'
+
+            for tr in result:
+                severity, tr_name, tr_scope, text = tr
+                tr = (test_base.COLOR(severity, mut['platform_name']),
+                      test_base.COLOR(severity, tr_name),
+                      test_base.COLOR(severity, severity),
+                      test_base.COLOR(severity, tr_scope),
+                      test_base.COLOR(severity, text))
+                pt.add_row(list(tr))
+            print pt.get_string(border=True, sortby='Result')
+            if i + 1 < len(muts_list):
+                print
+        return self.raw_test_results
+
+def get_available_oper_test_scopes():
+    """ Get list of available test scopes
+    """
+    scopes = set()
+    for oper_test in TEST_LIST:
+        if oper_test.scope is not None:
+            scopes.add(oper_test.scope)
+    return list(scopes)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compliance/ioper_test_fs.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,69 @@
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+
+"""
+
+import os.path
+from ioper_base import IOperTestCaseBase
+
+
+class IOperTest_FileStructure(IOperTestCaseBase):
+
+    def __init__(self, scope=None):
+        IOperTestCaseBase.__init__(self, scope)
+
+    def if_file_exist(self, fname, fail_severity=None):
+        file_path = os.path.join(self.param['mount_point'], fname)
+        exist = os.path.isfile(file_path)
+        tr_name = "FILE_EXIST(%s)" % fname.upper()
+        if exist:
+            self.result.append((self.PASS, tr_name, self.scope, "File '%s' exists" % file_path))
+        else:
+            self.result.append((fail_severity if fail_severity else self.ERROR, tr_name, self.scope, "File '%s' not found" % file_path))
+
+    def test(self, param=None):
+        self.result = []
+        if param:
+            pass
+        return self.result
+
+
+class IOperTest_FileStructure_Basic(IOperTest_FileStructure):
+    def __init__(self, scope=None):
+        IOperTest_FileStructure.__init__(self, scope)
+
+    def test(self, param=None):
+        self.param = param
+        self.result = []
+        if param:
+            self.if_file_exist('mbed.htm', self.ERROR)
+        return self.result
+
+
+class IOperTest_FileStructure_MbedEnabled(IOperTest_FileStructure):
+    def __init__(self, scope=None):
+        IOperTest_FileStructure.__init__(self, scope)
+
+    def test(self, param=None):
+        self.param = param
+        self.result = []
+        if param:
+            self.if_file_exist('mbed.htm', self.ERROR)
+            self.if_file_exist('DETAILS.TXT', self.ERROR)
+            self.if_file_exist('FAIL.TXT', self.INFO)
+        return self.result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compliance/ioper_test_target_id.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+
+"""
+
+from ioper_base import IOperTestCaseBase
+
+
+class IOperTest_TargetID(IOperTestCaseBase):
+    """ tests related to target_id value
+    """
+
+    def __init__(self, scope=None):
+        IOperTestCaseBase.__init__(self, scope)
+        self.TARGET_ID_LEN = 24
+
+    def test_target_id_format(self, target_id, target_id_name):
+        # Expected length == 24, eg. "02400203D94B0E7724B7F3CF"
+        result = []
+        target_id_len = len(target_id) if target_id else 0
+        if target_id_len == self.TARGET_ID_LEN:
+            result.append((self.PASS, "TARGET_ID_LEN", self.scope, "%s '%s' is %d chars long " % (target_id_name, target_id, target_id_len)))
+            result.append((self.INFO, "FW_VER_STR", self.scope, "%s Version String is %s.%s.%s " % (target_id_name,
+                                                                                      target_id[0:4],
+                                                                                      target_id[4:8],
+                                                                                      target_id[8:24],
+                                                                                      )))
+        else:
+            result.append((self.ERROR, "TARGET_ID_LEN", self.scope, "%s '%s' is %d chars long. Expected %d chars" % (target_id_name, target_id, target_id_len, self.TARGET_ID_LEN)))
+        return result
+
+    def test_decode_target_id(self, target_id, target_id_name):
+        result = []
+        target_id_len = len(target_id) if target_id else 0
+        if target_id_len >= 4:
+            result.append((self.INFO, "FW_VEN_CODE", self.scope, "%s Vendor Code is '%s'" % (target_id_name, target_id[0:2])))
+            result.append((self.INFO, "FW_PLAT_CODE", self.scope, "%s Platform Code is '%s'" % (target_id_name, target_id[2:4])))
+            result.append((self.INFO, "FW_VER", self.scope, "%s Firmware Version is '%s'" % (target_id_name, target_id[4:8])))
+            result.append((self.INFO, "FW_HASH_SEC", self.scope, "%s Hash of secret is '%s'" % (target_id_name, target_id[8:24])))
+        return result
+
+    def test(self, param=None):
+        result = []
+        if param:
+            pass
+        return result
+
+
+class IOperTest_TargetID_Basic(IOperTest_TargetID):
+    """ Basic interoperability tests checking TargetID compliance
+    """
+
+    def __init__(self, scope=None):
+        IOperTest_TargetID.__init__(self, scope)
+
+    def test(self, param=None):
+        result = []
+
+        if param:
+            result.append((self.PASS, "TARGET_ID", self.scope, "TargetID '%s' found" % param['target_id']))
+
+            # Check if target name can be decoded with mbed-ls
+            if param['platform_name']:
+                result.append((self.PASS, "TARGET_ID_DECODE", self.scope, "TargetID '%s' decoded as '%s'" % (param['target_id'][0:4], param['platform_name'])))
+            else:
+                result.append((self.ERROR, "TARGET_ID_DECODE", self.scope, "TargetID '%s'... not decoded" % (param['target_id'] if param['target_id'] else '')))
+
+            # Test for USBID and mbed.htm consistency
+            if param['target_id_mbed_htm'] == param['target_id_usb_id']:
+                result.append((self.PASS, "TARGET_ID_MATCH", self.scope, "TargetID (USBID) and TargetID (mbed.htm) match"))
+            else:
+                text = "TargetID (USBID) and TargetID (mbed.htm) don't match: '%s' != '%s'" % (param['target_id_usb_id'], param['target_id_mbed_htm'])
+                result.append((self.WARN, "TARGET_ID_MATCH", self.scope, text))
+        else:
+            result.append((self.ERROR, "TARGET_ID", self.scope, "TargetID not found"))
+        return result
+
+class IOperTest_TargetID_MbedEnabled(IOperTest_TargetID):
+    """ Basic interoperability tests checking TargetID compliance
+    """
+
+    def __init__(self, scope=None):
+        IOperTest_TargetID.__init__(self, scope)
+
+    def test(self, param=None):
+        result = []
+
+        if param:
+            # Target ID tests:
+            result += self.test_target_id_format(param['target_id_usb_id'], "TargetId (USBID)")
+            result += self.test_target_id_format(param['target_id_mbed_htm'], "TargetId (mbed.htm)")
+
+            # Some extra info about TargetID itself
+            result += self.test_decode_target_id(param['target_id_usb_id'], "TargetId (USBID)")
+            result += self.test_decode_target_id(param['target_id_mbed_htm'], "TargetId (mbed.htm)")
+        return result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,16 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/support.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,27 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from tools.targets import TARGETS
+
+DEFAULT_SUPPORT = {}
+CORTEX_ARM_SUPPORT = {}
+
+for target in TARGETS:
+    DEFAULT_SUPPORT[target.name] = target.supported_toolchains
+
+    if target.core.startswith('Cortex'):
+        CORTEX_ARM_SUPPORT[target.name] = [t for t in target.supported_toolchains
+                                           if (t=='ARM' or t=='uARM')]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/default_settings.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,67 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from os.path import join, abspath, dirname
+import logging
+
+ROOT = abspath(join(dirname(__file__), ".."))
+
+# These default settings have two purposes:
+#    1) Give a template for writing local "private_settings.py"
+#    2) Give default initialization fields for the "toolchains.py" constructors
+
+##############################################################################
+# Build System Settings
+##############################################################################
+BUILD_DIR = abspath(join(ROOT, "build"))
+
+# ARM
+ARM_PATH = "C:/Program Files/ARM"
+ARM_BIN = join(ARM_PATH, "bin")
+ARM_INC = join(ARM_PATH, "include")
+ARM_LIB = join(ARM_PATH, "lib")
+
+ARM_CPPLIB = join(ARM_LIB, "cpplib")
+MY_ARM_CLIB = join(ARM_PATH, "lib", "microlib")
+
+# GCC ARM
+GCC_ARM_PATH = ""
+
+# GCC CodeRed
+GCC_CR_PATH = "C:/code_red/RedSuite_4.2.0_349/redsuite/Tools/bin"
+
+# IAR
+IAR_PATH = "C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.0/arm"
+
+# Goanna static analyser. Please overload it in private_settings.py
+GOANNA_PATH = "c:/Program Files (x86)/RedLizards/Goanna Central 3.2.3/bin"
+
+# cppcheck path (command) and output message format
+CPPCHECK_CMD = ["cppcheck", "--enable=all"]
+CPPCHECK_MSG_FORMAT = ["--template=[{severity}] {file}@{line}: {id}:{message}"]
+
+BUILD_OPTIONS = []
+
+# mbed.org username
+MBED_ORG_USER = ""
+
+##############################################################################
+# Private Settings
+##############################################################################
+try:
+    # Allow to overwrite the default settings without the need to edit the
+    # settings file stored in the repository
+    from mbed_settings import *
+except ImportError:
+    print '[WARNING] Using default settings. Define your settings in the file "./mbed_settings.py"'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,16 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/dsp_fir.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,89 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from numpy import sin, arange, pi
+from scipy.signal import lfilter, firwin
+from pylab import figure, plot, grid, show
+
+#------------------------------------------------
+# Create a signal for demonstration.
+#------------------------------------------------
+# 320 samples of (1000Hz + 15000 Hz) at 48 kHz
+sample_rate = 48000.
+nsamples = 320
+
+F_1KHz = 1000.
+A_1KHz = 1.0
+
+F_15KHz = 15000.
+A_15KHz = 0.5
+
+t = arange(nsamples) / sample_rate
+signal = A_1KHz * sin(2*pi*F_1KHz*t) + A_15KHz*sin(2*pi*F_15KHz*t)
+
+#------------------------------------------------
+# Create a FIR filter and apply it to signal.
+#------------------------------------------------
+# The Nyquist rate of the signal.
+nyq_rate = sample_rate / 2.
+
+# The cutoff frequency of the filter: 6KHz
+cutoff_hz = 6000.0
+
+# Length of the filter (number of coefficients, i.e. the filter order + 1)
+numtaps = 29
+
+# Use firwin to create a lowpass FIR filter
+fir_coeff = firwin(numtaps, cutoff_hz/nyq_rate)
+
+# Use lfilter to filter the signal with the FIR filter
+filtered_signal = lfilter(fir_coeff, 1.0, signal)
+
+#------------------------------------------------
+# Plot the original and filtered signals.
+#------------------------------------------------
+
+# The first N-1 samples are "corrupted" by the initial conditions
+warmup = numtaps - 1
+
+# The phase delay of the filtered signal
+delay = (warmup / 2) / sample_rate
+
+figure(1)
+# Plot the original signal
+plot(t, signal)
+
+# Plot the filtered signal, shifted to compensate for the phase delay
+plot(t-delay, filtered_signal, 'r-')
+
+# Plot just the "good" part of the filtered signal.  The first N-1
+# samples are "corrupted" by the initial conditions.
+plot(t[warmup:]-delay, filtered_signal[warmup:], 'g', linewidth=4)
+
+grid(True)
+
+show()
+
+#------------------------------------------------
+# Print values
+#------------------------------------------------
+def print_values(label, values):
+    var = "float32_t %s[%d]" % (label, len(values))
+    print "%-30s = {%s}" % (var, ', '.join(["%+.10f" % x for x in values]))
+
+print_values('signal', signal)
+print_values('fir_coeff', fir_coeff)
+print_values('filtered_signal', filtered_signal)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/intel_hex_utils.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,31 @@
+from intelhex import IntelHex
+from cStringIO import StringIO
+
+
+def sections(h):
+    start, last_address = None, None
+    for a in h.addresses():
+        if last_address is None:
+            start, last_address = a, a
+            continue
+
+        if a > last_address + 1:
+            yield (start, last_address)
+            start = a
+
+        last_address = a
+
+    if start:
+        yield (start, last_address)
+
+
+def print_sections(h):
+    for s in sections(h):
+        print "[0x%08X - 0x%08X]" % s
+
+
+def decode(record):
+    h = IntelHex()
+    f = StringIO(record)
+    h.loadhex(f)
+    h.dump()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/rpc_classes.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,190 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from os.path import join
+from jinja2 import Template
+
+from tools.paths import TOOLS_DATA, MBED_RPC
+
+RPC_TEMPLATES_PATH = join(TOOLS_DATA, "rpc")
+
+RPC_TEMPLATE = "RPCClasses.h"
+CLASS_TEMPLATE = "class.cpp"
+RPC_CLASSES_PATH = join(MBED_RPC, RPC_TEMPLATE)
+
+
+def get_template(name):
+    return Template(open(join(RPC_TEMPLATES_PATH, name)).read())
+
+
+def write_rpc_classes(classes):
+    template = get_template(RPC_TEMPLATE)
+    open(RPC_CLASSES_PATH, "w").write(template.render({"classes":classes}))
+
+
+RPC_CLASSES = (
+    {
+        "name": "DigitalOut",
+        "cons_args": ["PinName"],
+        "methods": [
+            (None , "write", ["int"]),
+            ("int", "read" , []),
+        ]
+    },
+    {
+        "name": "DigitalIn",
+        "cons_args": ["PinName"],
+        "methods": [
+            ("int", "read" , []),
+        ]
+    },
+    {
+        "name": "DigitalInOut",
+        "cons_args": ["PinName"],
+        "methods": [
+            ("int", "read"  , []),
+            (None , "write" , ["int"]),
+            (None , "input" , []),
+            (None , "output", []),
+        ]
+    },
+    {
+        "name": "AnalogIn",
+        "required": "ANALOGIN",
+        "cons_args": ["PinName"],
+        "methods": [
+            ("float"         , "read"    , []),
+            ("unsigned short", "read_u16", []),
+        ]
+    },
+    {
+        "name": "AnalogOut",
+        "required": "ANALOGOUT",
+        "cons_args": ["PinName"],
+        "methods": [
+            ("float", "read"     , []),
+            (None   , "write"    , ["float"]),
+            (None   , "write_u16", ["unsigned short"]),
+        ]
+    },
+    {
+        "name": "PwmOut",
+        "required": "PWMOUT",
+        "cons_args": ["PinName"],
+        "methods": [
+            ("float", "read"         , []),
+            (None   , "write"        , ["float"]),
+            (None   , "period"       , ["float"]),
+            (None   , "period_ms"    , ["int"]),
+            (None   , "pulsewidth"   , ["float"]),
+            (None   , "pulsewidth_ms", ["int"]),
+        ]
+    },
+    {
+        "name": "SPI",
+        "required": "SPI",
+        "cons_args": ["PinName", "PinName", "PinName"],
+        "methods": [
+            (None , "format"   , ["int", "int"]),
+            (None , "frequency", ["int"]),
+            ("int", "write"    , ["int"]),
+        ]
+    },
+    {
+        "name": "Serial",
+        "required": "SERIAL",
+        "cons_args": ["PinName", "PinName"],
+        "methods": [
+            (None , "baud"     , ["int"]),
+            ("int", "readable" , []),
+            ("int", "writeable", []),
+            ("int", "putc"     , ["int"]),
+            ("int", "getc"     , []),
+            ("int", "puts"     , ["const char *"]),
+        ]
+    },
+    {
+        "name": "Timer",
+        "cons_args": [],
+        "methods": [
+            (None   , "start"  , []),
+            (None   , "stop"   , []),
+            (None   , "reset"  , []),
+            ("float", "read"   , []),
+            ("int"  , "read_ms", []),
+            ("int"  , "read_us", []),
+        ]
+    }
+)
+
+
+def get_args_proto(args_types, extra=None):
+    args = ["%s a%d" % (s, n) for n, s in enumerate(args_types)]
+    if extra:
+        args.extend(extra)
+    return ', '.join(args)
+
+
+def get_args_call(args):
+    return ', '.join(["a%d"    % (n)    for n in range(len(args))])
+
+
+classes = []
+class_template = get_template(CLASS_TEMPLATE)
+
+for c in RPC_CLASSES:
+    c_args = c['cons_args']
+    data = {
+        'name': c['name'],
+        'cons_type': ', '.join(c_args + ['const char*']),
+        "cons_proto": get_args_proto(c_args, ["const char *name=NULL"]),
+        "cons_call": get_args_call(c_args)
+    }
+
+    c_name = "Rpc" +  c['name']
+
+    methods = []
+    rpc_methods = []
+    for r, m, a in c['methods']:
+        ret_proto = r if r else "void"
+        args_proto = "void"
+
+        ret_defin = "return " if r else ""
+        args_defin = ""
+
+        if a:
+            args_proto = get_args_proto(a)
+            args_defin = get_args_call(a)
+
+        proto = "%s %s(%s)"   % (ret_proto, m, args_proto)
+        defin = "{%so.%s(%s);}" % (ret_defin, m, args_defin)
+        methods.append("%s %s" % (proto, defin))
+
+        rpc_method_type = [r] if r else []
+        rpc_method_type.append(c_name)
+        rpc_method_type.extend(a)
+        rpc_methods.append('{"%s", rpc_method_caller<%s, &%s::%s>}' % (m, ', '.join(rpc_method_type), c_name, m))
+
+    data['methods'] = "\n    ".join(methods)
+    data['rpc_methods'] = ",\n            ".join(rpc_methods)
+
+    class_decl = class_template.render(data)
+    if 'required' in c:
+        class_decl = "#if DEVICE_%s\n%s\n#endif" % (c['required'], class_decl)
+
+    classes.append(class_decl)
+
+write_rpc_classes('\n\n'.join(classes))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/syms.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,75 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+Utility to find which libraries could define a given symbol
+"""
+from argparse import ArgumentParser
+from os.path import join, splitext
+from os import walk
+from subprocess import Popen, PIPE
+
+
+OBJ_EXT = ['.o', '.a', '.ar']
+
+
+def find_sym_in_lib(sym, obj_path):
+    contain_symbol = False
+
+    out = Popen(["nm", "-C", obj_path], stdout=PIPE, stderr=PIPE).communicate()[0]
+    for line in out.splitlines():
+            tokens = line.split()
+            n = len(tokens)
+            if n == 2:
+                sym_type = tokens[0]
+                sym_name = tokens[1]
+            elif n == 3:
+                sym_type = tokens[1]
+                sym_name = tokens[2]
+            else:
+                continue
+
+            if sym_type == "U":
+                # This object is using this symbol, not defining it
+                continue
+
+            if sym_name == sym:
+                contain_symbol = True
+
+    return contain_symbol
+
+
+def find_sym_in_path(sym, dir_path):
+    for root, _, files in walk(dir_path):
+        for file in files:
+
+            _, ext = splitext(file)
+            if ext not in OBJ_EXT: continue
+
+            path = join(root, file)
+            if find_sym_in_lib(sym, path):
+                print path
+
+
+if __name__ == '__main__':
+    parser = ArgumentParser(description='Find Symbol')
+    parser.add_argument('-s', '--sym',  required=True,
+                        help='The symbol to be searched')
+    parser.add_argument('-p', '--path',  required=True,
+                        help='The path where to search')
+    args = parser.parse_args()
+
+    find_sym_in_path(args.sym, args.path)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/README.md	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1148 @@
+Exporter IDE/Platform Support
+-----------------------------------
+
+<table>
+    <tr>
+        <th>Platform</th>
+        <th>codesourcery</th>
+        <th>coide</th>
+        <th>ds5_5</th>
+        <th>emblocks</th>
+        <th>gcc_arm</th>
+        <th>iar</th>
+        <th>kds</th>
+        <th>lpcxpresso</th>
+        <th>uvision</th>
+    </tr>
+    <tr>
+        <td>APPNEARME_MICRONFCBOARD</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARCH_BLE</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>ARCH_GPRS</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARCH_MAX</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>ARCH_PRO</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2_M0</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2_M0P</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2_M1</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2_M3</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2_M4</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>ARM_MPS2_M7</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DELTA_DFCM_NNN40</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>DELTA_DFCM_NNN40_OTA</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_F051R8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_F100RB</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_F303VC</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_F334C8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_F401VC</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_F407VG</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>DISCO_F429ZI</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>DISCO_L053C8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>HRM1017</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>K20D50M</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>K22F</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>K64F</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>KL05Z</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>KL25Z</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>KL43Z</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>KL46Z</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC1114</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC11C24</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC11U24</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC11U24_301</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC11U34_421</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC11U35_401</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC11U35_501</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC11U35_Y5_MBUG</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC11U37H_401</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC11U37_501</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC11U68</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC1347</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC1549</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC1768</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC2368</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC4088</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC4088_DM</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC4330_M0</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC4330_M4</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC4337</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC810</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>LPC812</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPC824</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>LPCCAPPUCCINO</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>MTS_DRAGONFLY_F411RE</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>MTS_GAMBIT</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>MTS_MDOT_F405RG</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>MTS_MDOT_F411RE</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>NRF51822</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NRF51822_BOOT</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>NRF51822_OTA</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>NRF51822_Y5_MBUG</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>NRF51_DK</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NRF51_DK_BOOT</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>NRF51_DK_OTA</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>NRF51_DONGLE</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F030R8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F070RB</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F072RB</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F091RC</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F103RB</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F302R8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F303RE</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F334R8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F401RE</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_F411RE</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_L053R8</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_L073RZ</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>NUCLEO_L152RE</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>OC_MBUINO</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>RBLAB_BLENANO</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>RBLAB_NRF51822</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>RZ_A1H</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>SEEED_TINY_BLE</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>SEEED_TINY_BLE_BOOT</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>SEEED_TINY_BLE_OTA</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>SSCI824</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>STM32F3XX</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>STM32F407</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>TEENSY3_1</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>UBLOX_C027</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>&#10003;</td>
+    </tr>
+    <tr>
+        <td>UBLOX_C029</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>WALLBOT_BLE</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+    <tr>
+        <td>XADOW_M0</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>&#10003;</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+        <td>-</td>
+    </tr>
+</table>
+Total IDEs: 9
+<br>Total platforms: 94
+<br>Total permutations: 288
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,222 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import os, tempfile
+from os.path import join, exists, basename
+from shutil import copytree, rmtree, copy
+import yaml
+
+from tools.utils import mkdir
+from tools.export import uvision4, codered, gccarm, ds5_5, iar, emblocks, coide, kds, zip, simplicityv3, atmelstudio, sw4stm32
+from tools.export.exporters import zip_working_directory_and_clean_up, OldLibrariesException
+from tools.targets import TARGET_NAMES, EXPORT_MAP, TARGET_MAP
+
+from project_generator_definitions.definitions import ProGenDef
+
+EXPORTERS = {
+    'uvision': uvision4.Uvision4,
+    'lpcxpresso': codered.CodeRed,
+    'gcc_arm': gccarm.GccArm,
+    'ds5_5': ds5_5.DS5_5,
+    'iar': iar.IAREmbeddedWorkbench,
+    'emblocks' : emblocks.IntermediateFile,
+    'coide' : coide.CoIDE,
+    'kds' : kds.KDS,
+    'simplicityv3' : simplicityv3.SimplicityV3,
+    'atmelstudio' : atmelstudio.AtmelStudio,
+    'sw4stm32'    : sw4stm32.Sw4STM32,
+}
+
+ERROR_MESSAGE_UNSUPPORTED_TOOLCHAIN = """
+Sorry, the target %s is not currently supported on the %s toolchain.
+Please refer to <a href='/handbook/Exporting-to-offline-toolchains' target='_blank'>Exporting to offline toolchains</a> for more information.
+"""
+
+ERROR_MESSAGE_NOT_EXPORT_LIBS = """
+To export this project please <a href='http://mbed.org/compiler/?import=http://mbed.org/users/mbed_official/code/mbed-export/k&mode=lib' target='_blank'>import the export version of the mbed library</a>.
+"""
+
+def online_build_url_resolver(url):
+    # TODO: Retrieve the path and name of an online library build URL
+    return {'path':'', 'name':''}
+
+
+def export(project_path, project_name, ide, target, destination='/tmp/',
+           tempdir=None, clean=True, extra_symbols=None, zip=True, build_url_resolver=online_build_url_resolver, relative=False):
+    # Convention: we are using capitals for toolchain and target names
+    if target is not None:
+        target = target.upper()
+
+    if tempdir is None:
+        tempdir = tempfile.mkdtemp()
+
+    report = {'success': False, 'errormsg':''}
+    if ide is None or ide == "zip":
+        # Simple ZIP exporter
+        try:
+            ide = "zip"
+            exporter = zip.ZIP(target, tempdir, project_name, build_url_resolver, extra_symbols=extra_symbols)
+            exporter.scan_and_copy_resources(project_path, tempdir)
+            exporter.generate()
+            report['success'] = True
+        except OldLibrariesException, e:
+            report['errormsg'] = ERROR_MESSAGE_NOT_EXPORT_LIBS
+    else:
+        if ide not in EXPORTERS:
+            report['errormsg'] = ERROR_MESSAGE_UNSUPPORTED_TOOLCHAIN % (target, ide)
+        else:
+            Exporter = EXPORTERS[ide]
+            target = EXPORT_MAP.get(target, target)
+            # use progen targets or mbed exporters targets, check progen attribute
+            use_progen = False
+            supported = True
+            try:
+                if Exporter.PROGEN_ACTIVE:
+                    use_progen = True
+            except AttributeError:
+                pass
+            if use_progen:
+                if not ProGenDef(ide).is_supported(TARGET_MAP[target].progen['target']):
+                    supported = False
+            else:
+                if target not in Exporter.TARGETS:
+                    supported = False
+
+            if supported:
+                # target checked, export
+                try:
+                    exporter = Exporter(target, tempdir, project_name, build_url_resolver, extra_symbols=extra_symbols)
+                    exporter.scan_and_copy_resources(project_path, tempdir, relative)
+                    exporter.generate()
+                    report['success'] = True
+                except OldLibrariesException, e:
+                    report['errormsg'] = ERROR_MESSAGE_NOT_EXPORT_LIBS
+            else:
+                report['errormsg'] = ERROR_MESSAGE_UNSUPPORTED_TOOLCHAIN % (target, ide)
+
+    zip_path = None
+    if report['success']:
+        # readme.txt to contain more exported data
+        exporter_yaml = { 
+            'project_generator': {
+                'active' : False,
+            }
+        }
+        if use_progen:
+            try:
+                import pkg_resources
+                version = pkg_resources.get_distribution('project_generator').version
+                exporter_yaml['project_generator']['version'] = version
+                exporter_yaml['project_generator']['active'] =  True;
+                exporter_yaml['project_generator_definitions'] = {}
+                version = pkg_resources.get_distribution('project_generator_definitions').version
+                exporter_yaml['project_generator_definitions']['version'] = version
+            except ImportError:
+                pass
+        with open(os.path.join(tempdir, 'exporter.yaml'), 'w') as outfile:
+            yaml.dump(exporter_yaml, outfile, default_flow_style=False)
+        # add readme file to every offline export.
+        open(os.path.join(tempdir, 'GettingStarted.htm'),'w').write('<meta http-equiv="refresh" content="0; url=http://mbed.org/handbook/Getting-Started-mbed-Exporters#%s"/>'% (ide))
+        # copy .hgignore file to exported direcotry as well.
+        if exists(os.path.join(exporter.TEMPLATE_DIR,'.hgignore')):
+            copy(os.path.join(exporter.TEMPLATE_DIR,'.hgignore'),tempdir)
+
+        if zip:
+            zip_path = zip_working_directory_and_clean_up(tempdir, destination, project_name, clean)
+        else:
+            zip_path = destination
+
+    return zip_path, report
+
+
+###############################################################################
+# Generate project folders following the online conventions
+###############################################################################
+def copy_tree(src, dst, clean=True):
+    if exists(dst):
+        if clean:
+            rmtree(dst)
+        else:
+            return
+
+    copytree(src, dst)
+
+
+def setup_user_prj(user_dir, prj_path, lib_paths=None):
+    """
+    Setup a project with the same directory structure of the mbed online IDE
+    """
+    mkdir(user_dir)
+
+    # Project Path
+    copy_tree(prj_path, join(user_dir, "src"))
+
+    # Project Libraries
+    user_lib = join(user_dir, "lib")
+    mkdir(user_lib)
+
+    if lib_paths is not None:
+        for lib_path in lib_paths:
+            copy_tree(lib_path, join(user_lib, basename(lib_path)))
+
+def mcu_ide_matrix(verbose_html=False, platform_filter=None):
+    """  Shows target map using prettytable """
+    supported_ides = []
+    for key in EXPORTERS.iterkeys():
+        supported_ides.append(key)
+    supported_ides.sort()
+    from prettytable import PrettyTable, ALL # Only use it in this function so building works without extra modules
+
+    # All tests status table print
+    columns = ["Platform"] + supported_ides
+    pt = PrettyTable(columns)
+    # Align table
+    for col in columns:
+        pt.align[col] = "c"
+    pt.align["Platform"] = "l"
+
+    perm_counter = 0
+    target_counter = 0
+    for target in sorted(TARGET_NAMES):
+        target_counter += 1
+
+        row = [target]  # First column is platform name
+        for ide in supported_ides:
+            text = "-"
+            if target in EXPORTERS[ide].TARGETS:
+                if verbose_html:
+                    text = "&#10003;"
+                else:
+                    text = "x"
+                perm_counter += 1
+            row.append(text)
+        pt.add_row(row)
+
+    pt.border = True
+    pt.vrules = ALL
+    pt.hrules = ALL
+    # creates a html page suitable for a browser
+    # result = pt.get_html_string(format=True) if verbose_html else pt.get_string()
+    # creates a html page in a shorter format suitable for readme.md
+    result = pt.get_html_string() if verbose_html else pt.get_string()
+    result += "\n"
+    result += "Total IDEs: %d\n"% (len(supported_ides))
+    if verbose_html: result += "<br>"
+    result += "Total platforms: %d\n"% (target_counter)
+    if verbose_html: result += "<br>"
+    result += "Total permutations: %d"% (perm_counter)
+    if verbose_html: result = result.replace("&amp;", "&")
+    return result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/atmelstudio.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,75 @@
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import uuid
+from exporters import Exporter
+from os.path import splitext, basename, dirname
+
+
+class AtmelStudio(Exporter):
+    NAME = 'AtmelStudio'
+    TOOLCHAIN = 'GCC_ARM'
+
+    TARGETS = [
+        'SAMD21J18A',
+        'SAMR21G18A',
+        'SAMD21G18A',
+        'SAML21J18A',
+    ]
+
+    DOT_IN_RELATIVE_PATH = True
+
+    def generate(self):
+
+        source_files = []
+        dirs = []
+        for r_type in ['s_sources', 'c_sources', 'cpp_sources']:
+            r = getattr(self.resources, r_type)
+            if r:
+                for source in r:
+                    source_files.append(source[2:])
+                    dirs.append(dirname(source[2:]))
+
+        source_folders = []
+        for e in dirs:
+            if e and e not in source_folders:
+                source_folders.append(e)
+
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+		
+        solution_uuid = '{' + str(uuid.uuid4()) + '}'
+        project_uuid = '{' + str(uuid.uuid4()) + '}'
+
+        ctx = {
+            'target': self.target,
+            'name': self.program_name,
+            'source_files': source_files,
+            'source_folders': source_folders,
+            'object_files': self.resources.objects,
+            'include_paths': self.resources.inc_dirs,
+            'library_paths': self.resources.lib_dirs,
+            'linker_script': self.resources.linker_script,
+            'libraries': libraries,
+            'symbols': self.get_symbols(),
+            'solution_uuid': solution_uuid.upper(),
+            'project_uuid': project_uuid.upper()
+        }
+        target = self.target.lower()
+        self.gen_file('atmelstudio6_2.atsln.tmpl', ctx, '%s.atsln' % self.program_name)
+        self.gen_file('atmelstudio6_2.cppproj.tmpl', ctx, '%s.cppproj' % self.program_name)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/atmelstudio6_2.atsln.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Atmel Studio Solution File, Format Version 11.00
+Project("{{solution_uuid}}") = "{{name}}", "{{name}}.cppproj", "{{project_uuid}}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|ARM = Debug|ARM
+		Release|ARM = Release|ARM
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{{project_uuid}}.Debug|ARM.ActiveCfg = Debug|ARM
+		{{project_uuid}}.Debug|ARM.Build.0 = Debug|ARM
+		{{project_uuid}}.Release|ARM.ActiveCfg = Release|ARM
+		{{project_uuid}}.Release|ARM.Build.0 = Release|ARM
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/atmelstudio6_2.cppproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectVersion>6.2</ProjectVersion>
+    <ToolchainName>com.Atmel.ARMGCC.CPP</ToolchainName>
+    <ProjectGuid>{{project_uuid}}</ProjectGuid>
+    <avrdevice>AT{{target}}</avrdevice>
+    <avrdeviceseries>none</avrdeviceseries>
+    <OutputType>Executable</OutputType>
+    <Language>CPP</Language>
+    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
+    <OutputFileExtension>.elf</OutputFileExtension>
+    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
+    <AssemblyName>AtmelStudio6_2</AssemblyName>
+    <Name>AtmelStudio6_2</Name>
+    <RootNamespace>AtmelStudio6_2</RootNamespace>
+    <ToolchainFlavour>Native</ToolchainFlavour>
+    <KeepTimersRunning>true</KeepTimersRunning>
+    <OverrideVtor>false</OverrideVtor>
+    <CacheFlash>true</CacheFlash>
+    <ProgFlashFromRam>true</ProgFlashFromRam>
+    <RamSnippetAddress />
+    <UncachedRange />
+    <preserveEEPROM>true</preserveEEPROM>
+    <OverrideVtorValue />
+    <BootSegment>2</BootSegment>
+    <eraseonlaunchrule>1</eraseonlaunchrule>
+    <AsfFrameworkConfig>
+      <framework-data xmlns="">
+  <options />
+  <configurations />
+  <files />
+  <documentation help="" />
+  <offline-documentation help="" />
+</framework-data>
+    </AsfFrameworkConfig>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+    <ToolchainSettings>
+      <ArmGccCpp>
+  <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex>
+  <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss>
+  <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep>
+  <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin>
+  <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec>
+  <armgcc.compiler.symbols.DefSymbols>
+    <ListValues>
+      <Value>NDEBUG</Value>
+      {% for s in symbols %}<Value>{{s}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcc.compiler.symbols.DefSymbols>
+  <armgcc.compiler.directories.IncludePaths>
+    <ListValues>
+      {% for i in include_paths %}<Value>../{{i}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcc.compiler.directories.IncludePaths>
+  <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level>
+  <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
+  <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
+  <armgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcc.compiler.miscellaneous.OtherFlags>
+  <armgcccpp.compiler.symbols.DefSymbols>
+    <ListValues>
+      <Value>NDEBUG</Value>
+      {% for s in symbols %}<Value>{{s}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcccpp.compiler.symbols.DefSymbols>
+  <armgcccpp.compiler.directories.IncludePaths>
+    <ListValues>
+      {% for i in include_paths %}<Value>../{{i}}</Value> 
+      {% endfor %}
+   </ListValues>
+  </armgcccpp.compiler.directories.IncludePaths>
+  <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level>
+  <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>
+  <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings>
+  <armgcccpp.compiler.miscellaneous.OtherFlags>-std=gnu++98 -fno-rtti -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcccpp.compiler.miscellaneous.OtherFlags>
+  <armgcccpp.linker.libraries.Libraries>
+    <ListValues>
+      <Value>libm</Value>
+    </ListValues>
+  </armgcccpp.linker.libraries.Libraries>
+  <armgcccpp.linker.libraries.LibrarySearchPaths>
+    <ListValues>
+    </ListValues>
+  </armgcccpp.linker.libraries.LibrarySearchPaths>
+  <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections>
+  <armgcccpp.linker.miscellaneous.LinkerFlags>{% for p in library_paths %}-L../{{p}} {% endfor %} {% for f in object_files %}../{{f}} {% endfor %} {% for lib in libraries %}-l{{lib}} {% endfor %} -T../{{linker_script}} -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,--cref -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group </armgcccpp.linker.miscellaneous.LinkerFlags>
+  <armgcccpp.preprocessingassembler.general.IncludePaths>
+    <ListValues>
+      {% for i in include_paths %}<Value>../{{i}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcccpp.preprocessingassembler.general.IncludePaths>
+</ArmGccCpp>
+    </ToolchainSettings>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+    <ToolchainSettings>
+      <ArmGccCpp>
+  <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex>
+  <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss>
+  <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep>
+  <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin>
+  <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec>
+  <armgcc.compiler.symbols.DefSymbols>
+    <ListValues>
+      <Value>DEBUG</Value>
+      {% for s in symbols %}<Value>{{s}}</Value>
+      {% endfor %}
+    </ListValues>
+  </armgcc.compiler.symbols.DefSymbols>
+  <armgcc.compiler.directories.IncludePaths>
+    <ListValues>
+      {% for i in include_paths %}<Value>../{{i}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcc.compiler.directories.IncludePaths>
+  <armgcc.compiler.optimization.level>Optimize (-O1)</armgcc.compiler.optimization.level>
+  <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
+  <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel>
+  <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
+  <armgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcc.compiler.miscellaneous.OtherFlags>    
+  <armgcccpp.compiler.symbols.DefSymbols>
+    <ListValues>
+      <Value>DEBUG</Value>
+      {% for s in symbols %}<Value>{{s}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcccpp.compiler.symbols.DefSymbols>
+  <armgcccpp.compiler.directories.IncludePaths>
+    <ListValues>
+      {% for i in include_paths %}<Value>../{{i}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcccpp.compiler.directories.IncludePaths>
+  <armgcccpp.compiler.optimization.level>Optimize (-O1)</armgcccpp.compiler.optimization.level>
+  <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>
+  <armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel>
+  <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings>
+  <armgcccpp.compiler.miscellaneous.OtherFlags>-std=gnu++98 -fno-rtti -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP</armgcccpp.compiler.miscellaneous.OtherFlags>
+  <armgcccpp.linker.libraries.Libraries>
+    <ListValues>
+      <Value>libm</Value>
+    </ListValues>
+  </armgcccpp.linker.libraries.Libraries>
+  <armgcccpp.linker.libraries.LibrarySearchPaths>
+    <ListValues>
+    </ListValues>
+  </armgcccpp.linker.libraries.LibrarySearchPaths>
+  <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections>
+  <armgcccpp.linker.miscellaneous.LinkerFlags>{% for p in library_paths %}-L../{{p}} {% endfor %} {% for f in object_files %}../{{f}} {% endfor %} {% for lib in libraries %}-l{{lib}} {% endfor %} -T../{{linker_script}} -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,--cref -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group </armgcccpp.linker.miscellaneous.LinkerFlags>
+  <armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel>
+  <armgcccpp.preprocessingassembler.general.IncludePaths>
+    <ListValues>
+      {% for i in include_paths %}<Value>../{{i}}</Value> 
+      {% endfor %}
+    </ListValues>
+  </armgcccpp.preprocessingassembler.general.IncludePaths>
+  <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel>
+</ArmGccCpp>
+    </ToolchainSettings>
+  </PropertyGroup>
+  <ItemGroup>
+    {% for f in source_folders %}<Folder Include="{{f}}" />
+    {% endfor %}
+    {% for s in source_files %}<Compile Include="{{s}}">
+      <SubType>compile</SubType>
+    </Compile>
+    {% endfor %}
+  </ItemGroup>
+  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
+</Project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,57 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import splitext, basename
+
+
+class CodeRed(Exporter):
+    NAME = 'CodeRed'
+    TOOLCHAIN = 'GCC_CR'
+
+    TARGETS = [
+        'LPC1768',
+        'LPC4088',
+        'LPC4088_DM',
+        'LPC4330_M4',
+        'LPC1114',
+        'LPC11U35_401',
+        'LPC11U35_501',
+        'UBLOX_C027',
+        'ARCH_PRO',
+        'LPC1549',
+        'LPC11U68',
+        'LPCCAPPUCCINO',
+        'LPC824',
+        'LPC11U37H_401',
+    ]
+
+    def generate(self):
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+
+        ctx = {
+            'name': self.program_name,
+            'include_paths': self.resources.inc_dirs,
+            'linker_script': self.resources.linker_script,
+            'object_files': self.resources.objects,
+            'libraries': libraries,
+            'symbols': self.get_symbols()
+        }
+        self.gen_file('codered_%s_project.tmpl' % self.target.lower(), ctx, '.project')
+        self.gen_file('codered_%s_cproject.tmpl' % self.target.lower(), ctx, '.cproject')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_arch_pro_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,79 @@
+{% extends "codered_cproject_cortexm3_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc176x.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC1768" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC1768" package="lpc17_lqfp100.xml"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC1768&lt;/name&gt;&#13;
+&lt;family&gt;LPC17xx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/&gt;&#13;
+&lt;prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/&gt;&#13;
+&lt;prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;amp;0x1" id="TIMER0" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;amp;0x1" id="TIMER1" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;amp;0x1" id="TIMER2" location="0x40090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;amp;0x1" id="TIMER3" location="0x40094000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;amp;0x1" id="RIT" location="0x400B0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO0" location="0x2009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO1" location="0x2009C020"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO2" location="0x2009C040"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO3" location="0x2009C060"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO4" location="0x2009C080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;amp;0x08000000" id="I2S" location="0x400A8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;amp;0x2=2" id="DAC" location="0x4008C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;amp;0x1" id="UART0" location="0x4000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;amp;0x1" id="UART1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;amp;0x1" id="UART2" location="0x40098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;amp;0x1" id="UART3" location="0x4009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;amp;0x1" id="SPI" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;amp;0x1" id="SSP0" location="0x40088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;amp;0x1" id="SSP1" location="0x40030000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;amp;0x1" id="ADC" location="0x40034000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x12=0x12" id="USBDEV" location="0x5000C200"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;amp;0x1" id="PWM" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;amp;0x1" id="I2C0" location="0x4001C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;amp;0x1" id="I2C1" location="0x4005C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;amp;0x1" id="I2C2" location="0x400A0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;amp;0x1" id="DMA" location="0x50004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;amp;0x1" id="ENET" location="0x50000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;amp;0x1" id="QEI" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x11=0x11" id="USBHOST" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;amp;0x1" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANAFR" location="0x4003C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCEN" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1" id="CANCON1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCON2" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;amp;0x1" id="MCPWM" location="0x400B8000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m3"&gt;Cortex-M3&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_arch_pro_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_cproject_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1850 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+    <storageModule moduleId="org.eclipse.cdt.core.settings">
+        <cconfiguration id="com.crt.advproject.config.exe.debug.2019491857">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.debug.2019491857" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Debug build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.debug.2019491857" name="Debug" parent="com.crt.advproject.config.exe.debug" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; # checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;  ">
+                    <folderInfo id="com.crt.advproject.config.exe.debug.2019491857." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.debug.305863439" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.debug">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.debug.1056224942" name="ARM-based MCU (Debug)" superClass="com.crt.advproject.platform.exe.debug"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Debug}" id="com.crt.advproject.builder.exe.debug.921640983" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.debug"/>
+                            <tool id="com.crt.advproject.cpp.exe.debug.88038757" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.debug">
+                                <option id="com.crt.advproject.cpp.arch.91244724" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.{% block core %}{% endblock %}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.509442564" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.347637870" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1100343989" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.1011871574" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1370967818" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.debug.529082641" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug">
+                                <option id="com.crt.advproject.gcc.arch.1733119111" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.570577864" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.784082637" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.1824535269" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.1521041525" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.c.compiler.option.include.paths.1293117680" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.input.205113874" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
+                                <option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.debug.1997879384" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.debug">
+                                <option id="com.crt.advproject.link.cpp.arch.93048844" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1932742266" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.1663456123"
+                                        name="Linker script"
+                                        superClass="com.crt.advproject.link.cpp.script"
+                                        value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1404088829" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.851870479" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1647176917" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.286729066" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+
+                                <option id="gnu.cpp.link.option.paths.504050220" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                   {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.libs.1301785862" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    {% for lib in libraries %}
+                                    <listOptionValue builtIn="false" value="{{lib}}"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.userobjs.433052051" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1671719885" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.debug.1712095989" name="MCU Linker" superClass="com.crt.advproject.link.exe.debug"/>
+                        </toolChain>
+                    </folderInfo>
+                    <fileInfo id="com.crt.advproject.config.exe.debug.2019491857.src/{% block startup_file %}{% endblock %}" name="{{ self.startup_file() }}" rcbsApplicability="disable" resourcePath="src/{{ self.startup_file() }}" toolsToInvoke="com.crt.advproject.gcc.exe.debug.529082641.1914238712">
+                        <tool id="com.crt.advproject.gcc.exe.debug.529082641.1914238712" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug.529082641">
+                            <option id="gnu.c.compiler.option.optimization.flags.316755676" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                            <inputType id="com.crt.advproject.compiler.input.627153917" superClass="com.crt.advproject.compiler.input"/>
+                        </tool>
+                    </fileInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+        <cconfiguration id="com.crt.advproject.config.exe.release.1977230950">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.release.1977230950" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Release build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.release.1977230950" name="Release" parent="com.crt.advproject.config.exe.release" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; #checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;">
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.756613197" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release.1775167776" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Release}" id="com.crt.advproject.builder.exe.release.600748344" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.822772966" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release">
+                                <option id="com.crt.advproject.cpp.arch.2116463586" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.189747400" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.874410253" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1338090461" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.cpp.compiler.option.optimization.flags.475225500" name="Other optimization flags" superClass="gnu.cpp.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.17539784" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1172589171" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.563782464" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release">
+                                <option id="com.crt.advproject.gcc.arch.538870649" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.486202735" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.966879133" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.740543529" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.2015545820" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.c.compiler.option.optimization.flags.675461365" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                                <inputType id="com.crt.advproject.compiler.input.1938378962" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
+                                <option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DNDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.1927521706" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release">
+                                <option id="com.crt.advproject.link.cpp.arch.1449152453" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.{{ self.core() }}" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1116035810" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.653073282" name="Linker script" superClass="com.crt.advproject.link.cpp.script" value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1855989551" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.1541555749" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1799120411" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.259007915" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+                                <option id="gnu.cpp.link.option.libs.6254811" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    <listOptionValue builtIn="false" value="mbed"/>
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.paths.813959094" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.userobjs.1313579148" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.486207182" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.release.1417379956" name="MCU Linker" superClass="com.crt.advproject.link.exe.release"/>
+                        </toolChain>
+                    </folderInfo>
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950.180082224" name="/" resourcePath="mbed">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.1962091265" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release" unusedChildren="">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.930589045" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release.822772966">
+                                
+                                <option id="gnu.cpp.compiler.option.include.paths.1413630517" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1706370613" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.536058616" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release.563782464">
+                                <inputType id="com.crt.advproject.compiler.input.1565281352" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.607817423" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release.579950187">
+                                <inputType id="com.crt.advproject.assembler.input.21606274" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.941965043" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release.1927521706"/>
+                            <tool id="com.crt.advproject.link.exe.release.1836661645" name="MCU Linker" superClass="com.crt.advproject.link.exe.release.1417379956"/>
+                        </toolChain>
+                    </folderInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+    </storageModule>
+    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+        <project id="{{name}}.com.crt.advproject.projecttype.exe.609645090" name="Executable" projectType="com.crt.advproject.projecttype.exe"/>
+    </storageModule>
+    <storageModule moduleId="com.crt.config">
+        <projectStorage>{% block cpu_config %}{% endblock %}</projectStorage>
+    </storageModule>
+</cproject>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_cproject_cortexm0_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,3 @@
+{% extends "codered_cproject_common.tmpl" %}
+
+{% block core %}cm0{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_cproject_cortexm3_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,3 @@
+{% extends "codered_cproject_common.tmpl" %}
+
+{% block core %}cm3{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc1114_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,48 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc11xx.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC11_12_13_32K_4K.cfx" property_3="NXP" property_4="LPC1114FN/102" property_count="5" version="60100"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC1114FN/102" flash_driver="LPC11_12_13_32K_4K.cfx" match_id="0x0A40902B,0x1A40902B" name="LPC1114FN/102" stub="crt_emu_lpc11_13_nxp"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC1114FN/102&lt;/name&gt;&#13;
+&lt;family&gt;LPC11xx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash32" location="0x0" size="0x8000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc4" location="0x10000000" size="0x1000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART" determined="infoFile" id="UART" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO0" determined="infoFile" id="GPIO0" location="0x50000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO1" determined="infoFile" id="GPIO1" location="0x50010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO2" determined="infoFile" id="GPIO2" location="0x50020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO3" determined="infoFile" id="GPIO3" location="0x50030000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="LPC11xx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc1114_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u35_401_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,51 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc11xx.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U35/401" property_count="5" version="70002"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC11U35/401" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U35/401" stub="crt_emu_lpc11_13_nxp"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC11U35/401&lt;/name&gt;&#13;
+&lt;family&gt;LPC11Uxx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u35_401_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u35_501_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,51 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc11xx.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U35/501" property_count="5" version="70002"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC11U35/501" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U35/501" stub="crt_emu_lpc11_13_nxp"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC11U35/501&lt;/name&gt;&#13;
+&lt;family&gt;LPC11Uxx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u35_501_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u37h_401_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,51 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc11xx.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U37H/401" property_count="5" version="70002"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC11U37H/401" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U37H/401" stub="crt_emu_lpc11_13_nxp"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC11U37H/401&lt;/name&gt;&#13;
+&lt;family&gt;LPC11Uxx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u37h_401_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u68_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,60 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}startup_LPC11U68.cpp{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC11U6x_256K.cfx" property_3="NXP" property_4="LPC11U68" property_count="5" version="70200"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;&lt;info chip="LPC11U68" flash_driver="LPC11U6x_256K.cfx" match_id="0x0" name="LPC11U68" stub="crt_emu_cm3_gen"&gt;&#13;&lt;chip&gt;&#13;&lt;name&gt;&#13;LPC11U68&lt;/name&gt;&#13;
+&lt;family&gt;&#13;LPC11U6x&lt;/family&gt;&#13;
+&lt;vendor&gt;&#13;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash256" location="0x0" size="0x40000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="Ram0_32" location="0x10000000" size="0x8000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="Ram1_2" location="0x20000000" size="0x800"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="Ram2USB_2" location="0x20004000" size="0x800"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART0" determined="infoFile" id="USART0" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C1" determined="infoFile" id="I2C1" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="RTC" determined="infoFile" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="DMATRIGMUX" determined="infoFile" id="DMATRIGMUX" location="0x40028000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART4" determined="infoFile" id="USART4" location="0x4004c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GINT0" determined="infoFile" id="GINT0" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GINT1" determined="infoFile" id="GINT1" location="0x40060000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART1" determined="infoFile" id="USART1" location="0x4006c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART2" determined="infoFile" id="USART2" location="0x40070000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART3" determined="infoFile" id="USART3" location="0x40074000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x50000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x50004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCT0" determined="infoFile" id="SCT0" location="0x5000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCT1" determined="infoFile" id="SCT1" location="0x5000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0xa0000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PINT" determined="infoFile" id="PINT" location="0xa0004000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc11u68_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc1549_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,69 @@
+{% extends "codered_cproject_cortexm3_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc15xx.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC15xx_256K.cfx" property_3="NXP" property_4="LPC1549" property_count="5" version="70200"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC1549" connectscript="LPC15RunBootRomConnect.scp" flash_driver="LPC15xx_256K.cfx" match_id="0x0" name="LPC1549" resetscript="LPC15RunBootRomReset.scp" stub="crt_emu_cm3_gen"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC1549&lt;/name&gt;&#13;
+&lt;family&gt;LPC15xx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash256" location="0x0" size="0x40000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="Ram0_16" location="0x2000000" size="0x4000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="Ram1_16" location="0x2004000" size="0x4000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="Ram2_4" location="0x2008000" size="0x1000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC15_MPU" determined="infoFile" id="MPU" location="0xe000ed90"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC15_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC15_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC15_ITM" determined="infoFile" id="ITM" location="0xe0000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x1c000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x1c004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x1c00c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x1c010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCT0" determined="infoFile" id="SCT0" location="0x1c018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCT1" determined="infoFile" id="SCT1" location="0x1c01c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCT2" determined="infoFile" id="SCT2" location="0x1c020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCT3" determined="infoFile" id="SCT3" location="0x1c024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC0" determined="infoFile" id="ADC0" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="DAC" determined="infoFile" id="DAC" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ACMP" determined="infoFile" id="ACMP" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="INMUX" determined="infoFile" id="INMUX" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="RTC" determined="infoFile" id="RTC" location="0x40028000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SWM" determined="infoFile" id="SWM" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART0" determined="infoFile" id="USART0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART1" determined="infoFile" id="USART1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI1" determined="infoFile" id="SPI1" location="0x4004c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40050000"/&gt;&#13;
+&lt;peripheralInstance derived_from="QEI" determined="infoFile" id="QEI" location="0x40058000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40074000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC1" determined="infoFile" id="ADC1" location="0x40080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MRT" determined="infoFile" id="MRT" location="0x400a0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PINT" determined="infoFile" id="PINT" location="0x400a4000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GINT0" determined="infoFile" id="GINT0" location="0x400a8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GINT1" determined="infoFile" id="GINT1" location="0x400ac000"/&gt;&#13;
+&lt;peripheralInstance derived_from="RIT" determined="infoFile" id="RIT" location="0x400b4000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SCTIPU" determined="infoFile" id="SCTIPU" location="0x400b8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART2" determined="infoFile" id="USART2" location="0x400c0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="C-CAN0" determined="infoFile" id="C-CAN0" location="0x400f0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x400f8000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m3"&gt;Cortex-M3&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc1549_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc1768_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,79 @@
+{% extends "codered_cproject_cortexm3_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc176x.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC1768" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC1768" package="lpc17_lqfp100.xml"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC1768&lt;/name&gt;&#13;
+&lt;family&gt;LPC17xx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/&gt;&#13;
+&lt;prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/&gt;&#13;
+&lt;prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;amp;0x1" id="TIMER0" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;amp;0x1" id="TIMER1" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;amp;0x1" id="TIMER2" location="0x40090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;amp;0x1" id="TIMER3" location="0x40094000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;amp;0x1" id="RIT" location="0x400B0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO0" location="0x2009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO1" location="0x2009C020"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO2" location="0x2009C040"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO3" location="0x2009C060"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO4" location="0x2009C080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;amp;0x08000000" id="I2S" location="0x400A8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;amp;0x2=2" id="DAC" location="0x4008C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;amp;0x1" id="UART0" location="0x4000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;amp;0x1" id="UART1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;amp;0x1" id="UART2" location="0x40098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;amp;0x1" id="UART3" location="0x4009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;amp;0x1" id="SPI" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;amp;0x1" id="SSP0" location="0x40088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;amp;0x1" id="SSP1" location="0x40030000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;amp;0x1" id="ADC" location="0x40034000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x12=0x12" id="USBDEV" location="0x5000C200"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;amp;0x1" id="PWM" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;amp;0x1" id="I2C0" location="0x4001C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;amp;0x1" id="I2C1" location="0x4005C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;amp;0x1" id="I2C2" location="0x400A0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;amp;0x1" id="DMA" location="0x50004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;amp;0x1" id="ENET" location="0x50000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;amp;0x1" id="QEI" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x11=0x11" id="USBHOST" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;amp;0x1" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANAFR" location="0x4003C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCEN" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1" id="CANCON1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCON2" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;amp;0x1" id="MCPWM" location="0x400B8000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m3"&gt;Cortex-M3&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc1768_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc4088_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1922 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+    <storageModule moduleId="org.eclipse.cdt.core.settings">
+        <cconfiguration id="com.crt.advproject.config.exe.debug.2019491857">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.debug.2019491857" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Debug build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.debug.2019491857" name="Debug" parent="com.crt.advproject.config.exe.debug" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; # checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;  ">
+                    <folderInfo id="com.crt.advproject.config.exe.debug.2019491857." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.debug.305863439" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.debug">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.debug.1056224942" name="ARM-based MCU (Debug)" superClass="com.crt.advproject.platform.exe.debug"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Debug}" id="com.crt.advproject.builder.exe.debug.921640983" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.debug"/>
+                            <tool id="com.crt.advproject.cpp.exe.debug.88038757" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.debug">
+								<option id="com.crt.advproject.cpp.arch.91244724" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.509442564" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.347637870" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1100343989" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.1011871574" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+								<option id="com.crt.advproject.cpp.fpu.192009095" name="Floating point" superClass="com.crt.advproject.cpp.fpu" value="com.crt.advproject.cpp.fpu.fpv4" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1370967818" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.debug.529082641" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug">
+								<option id="com.crt.advproject.gcc.arch.1733119111" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.570577864" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.784082637" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.1824535269" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.1521041525" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.c.compiler.option.include.paths.1293117680" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+								<option id="com.crt.advproject.gcc.fpu.759979004" name="Floating point" superClass="com.crt.advproject.gcc.fpu" value="com.crt.advproject.gcc.fpu.fpv4" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.compiler.input.205113874" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
+								<option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+								<option id="com.crt.advproject.gas.fpu.478766821" name="Floating point" superClass="com.crt.advproject.gas.fpu" value="com.crt.advproject.gas.fpu.fpv4" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.debug.1997879384" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.debug">
+								<option id="com.crt.advproject.link.cpp.arch.93048844" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1932742266" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.1663456123"
+                                        name="Linker script"
+                                        superClass="com.crt.advproject.link.cpp.script"
+                                        value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1404088829" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.851870479" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1647176917" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.286729066" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+
+                                <option id="gnu.cpp.link.option.paths.504050220" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                   {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.libs.1301785862" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    {% for lib in libraries %}
+                                    <listOptionValue builtIn="false" value="{{lib}}"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.userobjs.433052051" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+				<option id="com.crt.advproject.link.cpp.fpu.1448877425" name="Floating point" superClass="com.crt.advproject.link.cpp.fpu" value="com.crt.advproject.link.cpp.fpu.fpv4" valueType="enumerated"/>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1671719885" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.debug.1712095989" name="MCU Linker" superClass="com.crt.advproject.link.exe.debug"/>
+                        </toolChain>
+                    </folderInfo>
+                    <fileInfo id="com.crt.advproject.config.exe.debug.2019491857.src/cr_startup_lpc176x.c" name="cr_startup_lpc176x.c" rcbsApplicability="disable" resourcePath="src/cr_startup_lpc176x.c" toolsToInvoke="com.crt.advproject.gcc.exe.debug.529082641.1914238712">
+                        <tool id="com.crt.advproject.gcc.exe.debug.529082641.1914238712" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug.529082641">
+                            <option id="gnu.c.compiler.option.optimization.flags.316755676" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                            <inputType id="com.crt.advproject.compiler.input.627153917" superClass="com.crt.advproject.compiler.input"/>
+                        </tool>
+                    </fileInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+        <cconfiguration id="com.crt.advproject.config.exe.release.1977230950">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.release.1977230950" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Release build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.release.1977230950" name="Release" parent="com.crt.advproject.config.exe.release" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; #checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;">
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.756613197" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release.1775167776" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Release}" id="com.crt.advproject.builder.exe.release.600748344" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.822772966" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release">
+                                <option id="com.crt.advproject.cpp.arch.2116463586" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.189747400" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.874410253" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1338090461" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.cpp.compiler.option.optimization.flags.475225500" name="Other optimization flags" superClass="gnu.cpp.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.17539784" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1172589171" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.563782464" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release">
+                                <option id="com.crt.advproject.gcc.arch.538870649" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.486202735" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.966879133" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.740543529" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.2015545820" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.c.compiler.option.optimization.flags.675461365" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                                <inputType id="com.crt.advproject.compiler.input.1938378962" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
+                                <option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DNDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.1927521706" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release">
+                                <option id="com.crt.advproject.link.cpp.arch.1449152453" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1116035810" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.653073282" name="Linker script" superClass="com.crt.advproject.link.cpp.script" value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1855989551" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.1541555749" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1799120411" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.259007915" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+                                <option id="gnu.cpp.link.option.libs.6254811" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    <listOptionValue builtIn="false" value="mbed"/>
+                                    <listOptionValue builtIn="false" value="capi"/>
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.paths.813959094" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.userobjs.1313579148" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.486207182" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.release.1417379956" name="MCU Linker" superClass="com.crt.advproject.link.exe.release"/>
+                        </toolChain>
+                    </folderInfo>
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950.180082224" name="/" resourcePath="mbed">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.1962091265" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release" unusedChildren="">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.930589045" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release.822772966">
+                                
+                                <option id="gnu.cpp.compiler.option.include.paths.1413630517" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1706370613" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.536058616" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release.563782464">
+                                <inputType id="com.crt.advproject.compiler.input.1565281352" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.607817423" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release.579950187">
+                                <inputType id="com.crt.advproject.assembler.input.21606274" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.941965043" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release.1927521706"/>
+                            <tool id="com.crt.advproject.link.exe.release.1836661645" name="MCU Linker" superClass="com.crt.advproject.link.exe.release.1417379956"/>
+                        </toolChain>
+                    </folderInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+    </storageModule>
+    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+        <project id="{{name}}.com.crt.advproject.projecttype.exe.609645090" name="Executable" projectType="com.crt.advproject.projecttype.exe"/>
+    </storageModule>
+    <storageModule moduleId="com.crt.config">
+		<projectStorage>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC177x_8x_407x_8x_512.cfx" property_3="NXP" property_4="LPC4088" property_count="5" version="1"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&lt;info chip="LPC4088" flash_driver="LPC177x_8x_407x_8x_512.cfx" match_id="0x481D3F47" name="LPC4088" stub="crt_emu_cm3_nxp"&gt;&lt;chip&gt;&lt;name&gt;LPC4088&lt;/name&gt;&#13;
+&lt;family&gt;LPC407x_8x&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash512" location="0x0" size="0x80000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc64" location="0x10000000" size="0x10000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamPeriph32" location="0x20000000" size="0x8000"/&gt;&#13;
+&lt;prog_flash blocksz="0x1000" location="0x0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/&gt;&#13;
+&lt;prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_MPU" id="MPU" location="0xe000ed90"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_NVIC" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_DCR" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_ITM" id="ITM" location="0xe0000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" id="FLASHCTRL" location="0x200000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPDMA" id="GPDMA" location="0x20080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ETHERNET" id="ETHERNET" location="0x20084000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LCD" id="LCD" location="0x20088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" id="USB" location="0x2008c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CRC" id="CRC" location="0x20090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO" id="GPIO" location="0x20098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="EMC" id="EMC" location="0x2009c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" id="WWDT" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER0" id="TIMER0" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER1" id="TIMER1" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART0" id="UART0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART1" id="UART1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PWM0" id="PWM0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PWM1" id="PWM1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C0" id="I2C0" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="COMPARATOR" id="COMPARATOR" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="RTC" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIOINT" id="GPIOINT" location="0x40028080"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" id="IOCON" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" id="SSP1" location="0x40030000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" id="ADC" location="0x40034000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CANAFRAM" id="CANAFRAM" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CANAF" id="CANAF" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CCAN" id="CCAN" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CAN1" id="CAN1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CAN2" id="CAN2" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C1" id="I2C1" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" id="SSP0" location="0x40088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="DAC" id="DAC" location="0x4008c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER2" id="TIMER2" location="0x40090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER3" id="TIMER3" location="0x40094000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART2" id="UART2" location="0x40098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART3" id="UART3" location="0x4009c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C2" id="I2C2" location="0x400a0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART4" id="UART4" location="0x400a4000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2S" id="I2S" location="0x400a8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP2" id="SSP2" location="0x400ac000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MCPWM" id="MCPWM" location="0x400b8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="QEI" id="QEI" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SDMMC" id="SDMMC" location="0x400c0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" id="SYSCON" location="0x400fc000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&lt;name gcc_name="cortex-m4"&gt;Cortex-M4&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpc407x_8x_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;</projectStorage>
+    </storageModule>
+</cproject>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc4088_dm_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1922 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+    <storageModule moduleId="org.eclipse.cdt.core.settings">
+        <cconfiguration id="com.crt.advproject.config.exe.debug.2019491857">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.debug.2019491857" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Debug build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.debug.2019491857" name="Debug" parent="com.crt.advproject.config.exe.debug" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; # checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;  ">
+                    <folderInfo id="com.crt.advproject.config.exe.debug.2019491857." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.debug.305863439" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.debug">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.debug.1056224942" name="ARM-based MCU (Debug)" superClass="com.crt.advproject.platform.exe.debug"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Debug}" id="com.crt.advproject.builder.exe.debug.921640983" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.debug"/>
+                            <tool id="com.crt.advproject.cpp.exe.debug.88038757" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.debug">
+								<option id="com.crt.advproject.cpp.arch.91244724" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.509442564" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.347637870" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1100343989" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.1011871574" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+								<option id="com.crt.advproject.cpp.fpu.192009095" name="Floating point" superClass="com.crt.advproject.cpp.fpu" value="com.crt.advproject.cpp.fpu.fpv4" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1370967818" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.debug.529082641" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug">
+								<option id="com.crt.advproject.gcc.arch.1733119111" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.570577864" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.784082637" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.1824535269" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.1521041525" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.c.compiler.option.include.paths.1293117680" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+								<option id="com.crt.advproject.gcc.fpu.759979004" name="Floating point" superClass="com.crt.advproject.gcc.fpu" value="com.crt.advproject.gcc.fpu.fpv4" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.compiler.input.205113874" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
+								<option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+								<option id="com.crt.advproject.gas.fpu.478766821" name="Floating point" superClass="com.crt.advproject.gas.fpu" value="com.crt.advproject.gas.fpu.fpv4" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.debug.1997879384" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.debug">
+								<option id="com.crt.advproject.link.cpp.arch.93048844" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.cm4" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1932742266" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.1663456123"
+                                        name="Linker script"
+                                        superClass="com.crt.advproject.link.cpp.script"
+                                        value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1404088829" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.851870479" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1647176917" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.286729066" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+
+                                <option id="gnu.cpp.link.option.paths.504050220" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                   {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.libs.1301785862" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    {% for lib in libraries %}
+                                    <listOptionValue builtIn="false" value="{{lib}}"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.userobjs.433052051" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+				<option id="com.crt.advproject.link.cpp.fpu.1448877425" name="Floating point" superClass="com.crt.advproject.link.cpp.fpu" value="com.crt.advproject.link.cpp.fpu.fpv4" valueType="enumerated"/>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1671719885" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.debug.1712095989" name="MCU Linker" superClass="com.crt.advproject.link.exe.debug"/>
+                        </toolChain>
+                    </folderInfo>
+                    <fileInfo id="com.crt.advproject.config.exe.debug.2019491857.src/cr_startup_lpc176x.c" name="cr_startup_lpc176x.c" rcbsApplicability="disable" resourcePath="src/cr_startup_lpc176x.c" toolsToInvoke="com.crt.advproject.gcc.exe.debug.529082641.1914238712">
+                        <tool id="com.crt.advproject.gcc.exe.debug.529082641.1914238712" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug.529082641">
+                            <option id="gnu.c.compiler.option.optimization.flags.316755676" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                            <inputType id="com.crt.advproject.compiler.input.627153917" superClass="com.crt.advproject.compiler.input"/>
+                        </tool>
+                    </fileInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+        <cconfiguration id="com.crt.advproject.config.exe.release.1977230950">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.release.1977230950" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Release build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.release.1977230950" name="Release" parent="com.crt.advproject.config.exe.release" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; #checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;">
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.756613197" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release.1775167776" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Release}" id="com.crt.advproject.builder.exe.release.600748344" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.822772966" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release">
+                                <option id="com.crt.advproject.cpp.arch.2116463586" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.189747400" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.874410253" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1338090461" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.cpp.compiler.option.optimization.flags.475225500" name="Other optimization flags" superClass="gnu.cpp.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.17539784" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1172589171" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.563782464" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release">
+                                <option id="com.crt.advproject.gcc.arch.538870649" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.486202735" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.966879133" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.740543529" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.2015545820" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.c.compiler.option.optimization.flags.675461365" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                                <inputType id="com.crt.advproject.compiler.input.1938378962" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
+                                <option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DNDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.1927521706" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release">
+                                <option id="com.crt.advproject.link.cpp.arch.1449152453" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1116035810" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.653073282" name="Linker script" superClass="com.crt.advproject.link.cpp.script" value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1855989551" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.1541555749" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1799120411" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.259007915" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+                                <option id="gnu.cpp.link.option.libs.6254811" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    <listOptionValue builtIn="false" value="mbed"/>
+                                    <listOptionValue builtIn="false" value="capi"/>
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.paths.813959094" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.userobjs.1313579148" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.486207182" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.release.1417379956" name="MCU Linker" superClass="com.crt.advproject.link.exe.release"/>
+                        </toolChain>
+                    </folderInfo>
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950.180082224" name="/" resourcePath="mbed">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.1962091265" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release" unusedChildren="">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.930589045" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release.822772966">
+                                
+                                <option id="gnu.cpp.compiler.option.include.paths.1413630517" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1706370613" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.536058616" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release.563782464">
+                                <inputType id="com.crt.advproject.compiler.input.1565281352" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.607817423" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release.579950187">
+                                <inputType id="com.crt.advproject.assembler.input.21606274" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.941965043" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release.1927521706"/>
+                            <tool id="com.crt.advproject.link.exe.release.1836661645" name="MCU Linker" superClass="com.crt.advproject.link.exe.release.1417379956"/>
+                        </toolChain>
+                    </folderInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+    </storageModule>
+    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+        <project id="{{name}}.com.crt.advproject.projecttype.exe.609645090" name="Executable" projectType="com.crt.advproject.projecttype.exe"/>
+    </storageModule>
+    <storageModule moduleId="com.crt.config">
+		<projectStorage>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC177x_8x_407x_8x_512.cfx" property_3="NXP" property_4="LPC4088" property_count="5" version="1"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&lt;info chip="LPC4088" flash_driver="LPC177x_8x_407x_8x_512.cfx" match_id="0x481D3F47" name="LPC4088" stub="crt_emu_cm3_nxp"&gt;&lt;chip&gt;&lt;name&gt;LPC4088&lt;/name&gt;&#13;
+&lt;family&gt;LPC407x_8x&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash512" location="0x0" size="0x80000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc64" location="0x10000000" size="0x10000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamPeriph32" location="0x20000000" size="0x8000"/&gt;&#13;
+&lt;prog_flash blocksz="0x1000" location="0x0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/&gt;&#13;
+&lt;prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_MPU" id="MPU" location="0xe000ed90"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_NVIC" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_DCR" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="V7M_ITM" id="ITM" location="0xe0000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" id="FLASHCTRL" location="0x200000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPDMA" id="GPDMA" location="0x20080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ETHERNET" id="ETHERNET" location="0x20084000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LCD" id="LCD" location="0x20088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" id="USB" location="0x2008c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CRC" id="CRC" location="0x20090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO" id="GPIO" location="0x20098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="EMC" id="EMC" location="0x2009c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" id="WWDT" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER0" id="TIMER0" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER1" id="TIMER1" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART0" id="UART0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART1" id="UART1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PWM0" id="PWM0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PWM1" id="PWM1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C0" id="I2C0" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="COMPARATOR" id="COMPARATOR" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="RTC" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIOINT" id="GPIOINT" location="0x40028080"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" id="IOCON" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" id="SSP1" location="0x40030000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" id="ADC" location="0x40034000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CANAFRAM" id="CANAFRAM" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CANAF" id="CANAF" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CCAN" id="CCAN" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CAN1" id="CAN1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CAN2" id="CAN2" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C1" id="I2C1" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" id="SSP0" location="0x40088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="DAC" id="DAC" location="0x4008c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER2" id="TIMER2" location="0x40090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER3" id="TIMER3" location="0x40094000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART2" id="UART2" location="0x40098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART3" id="UART3" location="0x4009c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C2" id="I2C2" location="0x400a0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="UART4" id="UART4" location="0x400a4000"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2S" id="I2S" location="0x400a8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP2" id="SSP2" location="0x400ac000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MCPWM" id="MCPWM" location="0x400b8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="QEI" id="QEI" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SDMMC" id="SDMMC" location="0x400c0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" id="SYSCON" location="0x400fc000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&lt;name gcc_name="cortex-m4"&gt;Cortex-M4&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpc407x_8x_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;</projectStorage>
+    </storageModule>
+</cproject>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc4088_dm_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc4088_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc4330_m4_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1924 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+    <storageModule moduleId="org.eclipse.cdt.core.settings">
+        <cconfiguration id="com.crt.advproject.config.exe.debug.2019491857">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.debug.2019491857" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Debug build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.debug.2019491857" name="Debug" parent="com.crt.advproject.config.exe.debug" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; # checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;  ">
+                    <folderInfo id="com.crt.advproject.config.exe.debug.2019491857." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.debug.305863439" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.debug">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.debug.1056224942" name="ARM-based MCU (Debug)" superClass="com.crt.advproject.platform.exe.debug"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Debug}" id="com.crt.advproject.builder.exe.debug.921640983" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.debug"/>
+                            <tool id="com.crt.advproject.cpp.exe.debug.88038757" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.debug">
+                                <option id="com.crt.advproject.cpp.arch.91244724" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.509442564" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.347637870" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1100343989" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.1011871574" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1370967818" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.debug.529082641" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug">
+                                <option id="com.crt.advproject.gcc.arch.1733119111" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.570577864" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.784082637" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.1824535269" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.1521041525" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+
+                                <option id="gnu.c.compiler.option.include.paths.1293117680" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.input.205113874" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
+                                <option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.debug.1997879384" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.debug">
+                                <option id="com.crt.advproject.link.cpp.arch.93048844" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1932742266" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.1663456123"
+                                        name="Linker script"
+                                        superClass="com.crt.advproject.link.cpp.script"
+                                        value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1404088829" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.851870479" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1647176917" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.286729066" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+
+                                <option id="gnu.cpp.link.option.paths.504050220" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                   {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.libs.1301785862" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    {% for lib in libraries %}
+                                    <listOptionValue builtIn="false" value="{{lib}}"/>
+                                    {% endfor %}
+                                </option>
+
+                                <option id="gnu.cpp.link.option.userobjs.433052051" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1671719885" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.debug.1712095989" name="MCU Linker" superClass="com.crt.advproject.link.exe.debug"/>
+                        </toolChain>
+                    </folderInfo>
+                    <fileInfo id="com.crt.advproject.config.exe.debug.2019491857.src/cr_startup_lpc43xx.c" name="cr_startup_lpc43xx.c" rcbsApplicability="disable" resourcePath="src/cr_startup_lpc43xx.c" toolsToInvoke="com.crt.advproject.gcc.exe.debug.529082641.1914238712">
+                        <tool id="com.crt.advproject.gcc.exe.debug.529082641.1914238712" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug.529082641">
+                            <option id="gnu.c.compiler.option.optimization.flags.316755676" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                            <inputType id="com.crt.advproject.compiler.input.627153917" superClass="com.crt.advproject.compiler.input"/>
+                        </tool>
+                    </fileInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+        <cconfiguration id="com.crt.advproject.config.exe.release.1977230950">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.release.1977230950" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                <externalSettings/>
+                <extensions>
+                    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                    <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                    <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                </extensions>
+            </storageModule>
+            <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                <configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Release build" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.release.1977230950" name="Release" parent="com.crt.advproject.config.exe.release" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;; arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileName}&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; ; #checksum -p ${TargetChip} -d &quot;${BuildArtifactFileBaseName}.bin&quot;;">
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950." name="/" resourcePath="">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.756613197" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release.1775167776" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <builder buildPath="${workspace_loc:/{{name}}/Release}" id="com.crt.advproject.builder.exe.release.600748344" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.822772966" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release">
+                                <option id="com.crt.advproject.cpp.arch.2116463586" name="Architecture" superClass="com.crt.advproject.cpp.arch" value="com.crt.advproject.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.cpp.thumb.189747400" name="Thumb mode" superClass="com.crt.advproject.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.compiler.option.preprocessor.def.874410253" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.cpp.compiler.option.other.other.1338090461" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.cpp.compiler.option.optimization.flags.475225500" name="Other optimization flags" superClass="gnu.cpp.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+
+                                <option id="gnu.cpp.compiler.option.include.paths.17539784" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1172589171" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.563782464" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release">
+                                <option id="com.crt.advproject.gcc.arch.538870649" name="Architecture" superClass="com.crt.advproject.gcc.arch" value="com.crt.advproject.gcc.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gcc.thumb.486202735" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.gcc.hdrlib.966879133" name="Use headers for C library" superClass="com.crt.advproject.gcc.hdrlib" value="com.crt.advproject.gcc.hdrlib.newlib" valueType="enumerated"/>
+                                <option id="gnu.c.compiler.option.preprocessor.def.symbols.740543529" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+                                    <listOptionValue builtIn="false" value="__NEWLIB__"/>
+                                    <listOptionValue builtIn="false" value="__CODE_RED"/>
+                                    <listOptionValue builtIn="false" value="CPP_USE_HEAP"/>
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+                                </option>
+                                <option id="gnu.c.compiler.option.misc.other.2015545820" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti" valueType="string"/>
+                                <option id="gnu.c.compiler.option.optimization.flags.675461365" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
+                                <inputType id="com.crt.advproject.compiler.input.1938378962" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
+                                <option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
+                                <option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__  -DNDEBUG -D__CODE_RED " valueType="string"/>
+                                <option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
+                                <inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.1927521706" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release">
+                                <option id="com.crt.advproject.link.cpp.arch.1449152453" name="Architecture" superClass="com.crt.advproject.link.cpp.arch" value="com.crt.advproject.link.cpp.target.cm3" valueType="enumerated"/>
+                                <option id="com.crt.advproject.link.cpp.thumb.1116035810" name="Thumb mode" superClass="com.crt.advproject.link.cpp.thumb" value="true" valueType="boolean"/>
+                                <option id="com.crt.advproject.link.cpp.script.653073282" name="Linker script" superClass="com.crt.advproject.link.cpp.script" value="&quot;${workspace_loc:/${ProjName}/{{linker_script}}}&quot;" valueType="string"/>
+                                <option id="com.crt.advproject.link.cpp.manage.1855989551" name="Manage linker script" superClass="com.crt.advproject.link.cpp.manage" value="false" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.nostdlibs.1541555749" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" value="true" valueType="boolean"/>
+                                <option id="gnu.cpp.link.option.other.1799120411" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                    <listOptionValue builtIn="false" value="-Map=&quot;${BuildArtifactFileBaseName}.map&quot;"/>
+                                    <listOptionValue builtIn="false" value="--gc-sections"/>
+                                </option>
+                                <option id="com.crt.advproject.link.cpp.hdrlib.259007915" name="Use C library" superClass="com.crt.advproject.link.cpp.hdrlib" value="com.crt.advproject.cpp.link.hdrlib.newlib.semihost" valueType="enumerated"/>
+                                <option id="gnu.cpp.link.option.libs.6254811" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                    <listOptionValue builtIn="false" value="mbed"/>
+                                    <listOptionValue builtIn="false" value="capi"/>
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.paths.813959094" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <option id="gnu.cpp.link.option.userobjs.1313579148" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.486207182" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                    <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                    <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                </inputType>
+                            </tool>
+                            <tool id="com.crt.advproject.link.exe.release.1417379956" name="MCU Linker" superClass="com.crt.advproject.link.exe.release"/>
+                        </toolChain>
+                    </folderInfo>
+                    <folderInfo id="com.crt.advproject.config.exe.release.1977230950.180082224" name="/" resourcePath="mbed">
+                        <toolChain id="com.crt.advproject.toolchain.exe.release.1962091265" name="Code Red MCU Tools" superClass="com.crt.advproject.toolchain.exe.release" unusedChildren="">
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.release" name="ARM-based MCU (Release)" superClass="com.crt.advproject.platform.exe.release"/>
+                            <tool id="com.crt.advproject.cpp.exe.release.930589045" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.release.822772966">
+                                
+                                <option id="gnu.cpp.compiler.option.include.paths.1413630517" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                
+                                <inputType id="com.crt.advproject.compiler.cpp.input.1706370613" superClass="com.crt.advproject.compiler.cpp.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gcc.exe.release.536058616" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.release.563782464">
+                                <inputType id="com.crt.advproject.compiler.input.1565281352" superClass="com.crt.advproject.compiler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.gas.exe.release.607817423" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release.579950187">
+                                <inputType id="com.crt.advproject.assembler.input.21606274" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
+                            </tool>
+                            <tool id="com.crt.advproject.link.cpp.exe.release.941965043" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.release.1927521706"/>
+                            <tool id="com.crt.advproject.link.exe.release.1836661645" name="MCU Linker" superClass="com.crt.advproject.link.exe.release.1417379956"/>
+                        </toolChain>
+                    </folderInfo>
+                    <sourceEntries>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+                    </sourceEntries>
+                </configuration>
+            </storageModule>
+            <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+            <storageModule moduleId="scannerConfiguration">
+                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="false" filePath=""/>
+                        <parser enabled="false"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="com.crt.advproject.specsFile">
+                        <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="makefileGenerator">
+                        <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                    <buildOutputProvider>
+                        <openAction enabled="true" filePath=""/>
+                        <parser enabled="true"/>
+                    </buildOutputProvider>
+                    <scannerInfoProvider id="specsFile">
+                        <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                        <parser enabled="true"/>
+                    </scannerInfoProvider>
+                </profile>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gcc.exe.release.536058616;com.crt.advproject.compiler.input.1565281352">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gas.exe.release.579950187;com.crt.advproject.assembler.input.812068162">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.gcc.exe.release.563782464;com.crt.advproject.compiler.input.1938378962">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.gas.exe.release.607817423;com.crt.advproject.assembler.input.21606274">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfile"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.;com.crt.advproject.cpp.exe.release.822772966;com.crt.advproject.compiler.cpp.input.1172589171">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+                <scannerConfigBuildInfo instanceId="com.crt.advproject.config.exe.release.1977230950;com.crt.advproject.config.exe.release.1977230950.180082224;com.crt.advproject.cpp.exe.release.930589045;com.crt.advproject.compiler.cpp.input.1706370613">
+                    <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.crt.advproject.GCCManagedMakePerProjectProfileCPP"/>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-c++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file} " command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="com.crt.advproject.GASManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="false" filePath=""/>
+                            <parser enabled="false"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="com.crt.advproject.specsFile">
+                            <runAction arguments="-x assembler-with-cpp -E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-none-eabi-gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="makefileGenerator">
+                            <runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                    <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+                        <buildOutputProvider>
+                            <openAction enabled="true" filePath=""/>
+                            <parser enabled="true"/>
+                        </buildOutputProvider>
+                        <scannerInfoProvider id="specsFile">
+                            <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+                            <parser enabled="true"/>
+                        </scannerInfoProvider>
+                    </profile>
+                </scannerConfigBuildInfo>
+            </storageModule>
+        </cconfiguration>
+    </storageModule>
+    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+        <project id="{{name}}.com.crt.advproject.projecttype.exe.609645090" name="Executable" projectType="com.crt.advproject.projecttype.exe"/>
+    </storageModule>
+    <storageModule moduleId="com.crt.config">
+        <projectStorage>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC4330" property_count="5" version="1"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC4330" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC4330" package="LPC43_lqfp100.xml"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC4330&lt;/name&gt;&#13;
+&lt;family&gt;LPC43xx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/&gt;&#13;
+&lt;prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/&gt;&#13;
+&lt;prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;amp;0x1" id="TIMER0" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;amp;0x1" id="TIMER1" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;amp;0x1" id="TIMER2" location="0x40090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;amp;0x1" id="TIMER3" location="0x40094000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;amp;0x1" id="RIT" location="0x400B0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO0" location="0x2009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO1" location="0x2009C020"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO2" location="0x2009C040"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO3" location="0x2009C060"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO4" location="0x2009C080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;amp;0x08000000" id="I2S" location="0x400A8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;amp;0x2=2" id="DAC" location="0x4008C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;amp;0x1" id="UART0" location="0x4000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;amp;0x1" id="UART1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;amp;0x1" id="UART2" location="0x40098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;amp;0x1" id="UART3" location="0x4009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;amp;0x1" id="SPI" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;amp;0x1" id="SSP0" location="0x40088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;amp;0x1" id="SSP1" location="0x40030000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;amp;0x1" id="ADC" location="0x40034000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x12=0x12" id="USBDEV" location="0x5000C200"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;amp;0x1" id="PWM" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;amp;0x1" id="I2C0" location="0x4001C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;amp;0x1" id="I2C1" location="0x4005C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;amp;0x1" id="I2C2" location="0x400A0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;amp;0x1" id="DMA" location="0x50004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;amp;0x1" id="ENET" location="0x50000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_PCB" determined="infoFile" id="PCB" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;amp;0x1" id="QEI" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x11=0x11" id="USBHOST" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;amp;0x1" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC4x_WDT" determined="infoFile" id="WDT" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANAFR" location="0x4003C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCEN" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1" id="CANCON1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCON2" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC43_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;amp;0x1" id="MCPWM" location="0x400B8000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m4"&gt;Cortex-M4&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;</projectStorage>
+    </storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc4330_m4_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc824_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,53 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}startup_LPC824_CR.cpp{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;
+&lt;Properties property_0="" property_2="LPC800_32.cfx" property_3="NXP" property_4="LPC824" property_count="5" version="70200"/&gt;
+&lt;infoList vendor="NXP"&gt;&lt;info chip="LPC824" flash_driver="LPC800_32.cfx" match_id="0x0" name="LPC824" stub="crt_emu_cm3_gen"&gt;&lt;chip&gt;&lt;name&gt;LPC824&lt;/name&gt;
+&lt;family&gt;LPC82x&lt;/family&gt;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;
+&lt;reset board="None" core="Real" sys="Real"/&gt;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;
+&lt;memory id="RAM" type="RAM"/&gt;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;
+&lt;memoryInstance derived_from="Flash" id="MFlash32" location="0x0" size="0x8000"/&gt;
+&lt;memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/&gt;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40000000"/&gt;
+&lt;peripheralInstance derived_from="MRT" determined="infoFile" id="MRT" location="0x40004000"/&gt;
+&lt;peripheralInstance derived_from="WKT" determined="infoFile" id="WKT" location="0x40008000"/&gt;
+&lt;peripheralInstance derived_from="SWM" determined="infoFile" id="SWM" location="0x4000c000"/&gt;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40020000"/&gt;
+&lt;peripheralInstance derived_from="CMP" determined="infoFile" id="CMP" location="0x40024000"/&gt;
+&lt;peripheralInstance derived_from="DMATRIGMUX" determined="infoFile" id="DMATRIGMUX" location="0x40028000"/&gt;
+&lt;peripheralInstance derived_from="INPUTMUX" determined="infoFile" id="INPUTMUX" location="0x4002c000"/&gt;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x40040000"/&gt;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;
+&lt;peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40050000"/&gt;
+&lt;peripheralInstance derived_from="I2C1" determined="infoFile" id="I2C1" location="0x40054000"/&gt;
+&lt;peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x40058000"/&gt;
+&lt;peripheralInstance derived_from="SPI1" determined="infoFile" id="SPI1" location="0x4005c000"/&gt;
+&lt;peripheralInstance derived_from="USART0" determined="infoFile" id="USART0" location="0x40064000"/&gt;
+&lt;peripheralInstance derived_from="USART1" determined="infoFile" id="USART1" location="0x40068000"/&gt;
+&lt;peripheralInstance derived_from="USART2" determined="infoFile" id="USART2" location="0x4006c000"/&gt;
+&lt;peripheralInstance derived_from="I2C2" determined="infoFile" id="I2C2" location="0x40070000"/&gt;
+&lt;peripheralInstance derived_from="I2C3" determined="infoFile" id="I2C3" location="0x40074000"/&gt;
+&lt;peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x50000000"/&gt;
+&lt;peripheralInstance derived_from="SCT" determined="infoFile" id="SCT" location="0x50004000"/&gt;
+&lt;peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x50008000"/&gt;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0xa0000000"/&gt;
+&lt;peripheralInstance derived_from="PIN-INT" determined="infoFile" id="PIN-INT" location="0xa0004000"/&gt;
+&lt;/chip&gt;
+&lt;processor&gt;&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;
+&lt;family&gt;Cortex-M&lt;/family&gt;
+&lt;/processor&gt;
+&lt;link href="LPC82x_peripheral.xme" show="embed" type="simple"/&gt;
+&lt;/info&gt;
+&lt;/infoList&gt;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpc824_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpccappuccino_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,51 @@
+{% extends "codered_cproject_cortexm0_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc11xx.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U37/501" property_count="5" version="70002"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC11U37/501" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U37/501" stub="crt_emu_lpc11_13_nxp"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC11U37/501&lt;/name&gt;&#13;
+&lt;family&gt;LPC11Uxx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/&gt;&#13;
+&lt;peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/&gt;&#13;
+&lt;peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/&gt;&#13;
+&lt;peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m0"&gt;Cortex-M0&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_lpccappuccino_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_project_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+    <name>{{name}}</name>
+    <comment>This file was automagically generated by mbed.org. For more information, see http://mbed.org/handbook/Exporting-To-Code-Red</comment>
+    <projects>
+    </projects>
+    <buildSpec>
+        <buildCommand>
+            <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+            <triggers>clean,full,incremental,</triggers>
+            <arguments>
+                <dictionary>
+                    <key>?name?</key>
+                    <value></value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.append_environment</key>
+                    <value>true</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+                    <value>all</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.buildArguments</key>
+                    <value></value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.buildCommand</key>
+                    <value>make</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.buildLocation</key>
+                    <value>${workspace_loc:/{{name}}/Debug}</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+                    <value>clean</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.contents</key>
+                    <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+                    <value>false</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+                    <value>true</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+                    <value>true</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+                    <value>all</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.stopOnError</key>
+                    <value>true</value>
+                </dictionary>
+                <dictionary>
+                    <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+                    <value>true</value>
+                </dictionary>
+            </arguments>
+        </buildCommand>
+        <buildCommand>
+            <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+            <triggers>full,incremental,</triggers>
+            <arguments>
+            </arguments>
+        </buildCommand>
+    </buildSpec>
+    <natures>
+        <nature>org.eclipse.cdt.core.cnature</nature>
+        <nature>org.eclipse.cdt.core.ccnature</nature>
+        <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+        <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+    </natures>
+</projectDescription>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_ublox_c027_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,79 @@
+{% extends "codered_cproject_cortexm3_common.tmpl" %}
+
+{% block startup_file %}cr_startup_lpc176x.c{% endblock %}
+
+{% block cpu_config %}&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;TargetConfig&gt;&#13;
+&lt;Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/&gt;&#13;
+&lt;infoList vendor="NXP"&gt;&#13;
+&lt;info chip="LPC1768" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC1768" package="lpc17_lqfp100.xml"&gt;&#13;
+&lt;chip&gt;&#13;
+&lt;name&gt;LPC1768&lt;/name&gt;&#13;
+&lt;family&gt;LPC17xx&lt;/family&gt;&#13;
+&lt;vendor&gt;NXP (formerly Philips)&lt;/vendor&gt;&#13;
+&lt;reset board="None" core="Real" sys="Real"/&gt;&#13;
+&lt;clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/&gt;&#13;
+&lt;memory can_program="true" id="Flash" is_ro="true" type="Flash"/&gt;&#13;
+&lt;memory id="RAM" type="RAM"/&gt;&#13;
+&lt;memory id="Periph" is_volatile="true" type="Peripheral"/&gt;&#13;
+&lt;memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/&gt;&#13;
+&lt;memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/&gt;&#13;
+&lt;prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/&gt;&#13;
+&lt;prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;amp;0x1" id="TIMER0" location="0x40004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;amp;0x1" id="TIMER1" location="0x40008000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;amp;0x1" id="TIMER2" location="0x40090000"/&gt;&#13;
+&lt;peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;amp;0x1" id="TIMER3" location="0x40094000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;amp;0x1" id="RIT" location="0x400B0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO0" location="0x2009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO1" location="0x2009C020"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO2" location="0x2009C040"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO3" location="0x2009C060"/&gt;&#13;
+&lt;peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;amp;0x1" id="GPIO4" location="0x2009C080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;amp;0x08000000" id="I2S" location="0x400A8000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;amp;0x2=2" id="DAC" location="0x4008C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;amp;0x1" id="UART0" location="0x4000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;amp;0x1" id="UART1" location="0x40010000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;amp;0x1" id="UART2" location="0x40098000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;amp;0x1" id="UART3" location="0x4009C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;amp;0x1" id="SPI" location="0x40020000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;amp;0x1" id="SSP0" location="0x40088000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;amp;0x1" id="SSP1" location="0x40030000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;amp;0x1" id="ADC" location="0x40034000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x12=0x12" id="USBDEV" location="0x5000C200"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;amp;0x1" id="PWM" location="0x40018000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;amp;0x1" id="I2C0" location="0x4001C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;amp;0x1" id="I2C1" location="0x4005C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;amp;0x1" id="I2C2" location="0x400A0000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;amp;0x1" id="DMA" location="0x50004000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;amp;0x1" id="ENET" location="0x50000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;amp;0x1" id="QEI" location="0x400bc000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x11=0x11" id="USBHOST" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;amp;0x1" id="RTC" location="0x40024000"/&gt;&#13;
+&lt;peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/&gt;&#13;
+&lt;peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANAFR" location="0x4003C000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1|SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCEN" location="0x40040000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;amp;0x1" id="CANCON1" location="0x40044000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;amp;0x1" id="CANCON2" location="0x40048000"/&gt;&#13;
+&lt;peripheralInstance derived_from="LPC17_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;amp;0x1" id="MCPWM" location="0x400B8000"/&gt;&#13;
+&lt;/chip&gt;&#13;
+&lt;processor&gt;&#13;
+&lt;name gcc_name="cortex-m3"&gt;Cortex-M3&lt;/name&gt;&#13;
+&lt;family&gt;Cortex-M&lt;/family&gt;&#13;
+&lt;/processor&gt;&#13;
+&lt;link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/&gt;&#13;
+&lt;/info&gt;&#13;
+&lt;/infoList&gt;&#13;
+&lt;/TargetConfig&gt;{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/codered_ublox_c027_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "codered_project_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,110 @@
+"""
+mbed SDK
+Copyright (c) 2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import splitext, basename
+
+
+class CoIDE(Exporter):
+    NAME = 'CoIDE'
+    TOOLCHAIN = 'GCC_ARM'
+
+    TARGETS = [
+        'KL25Z',
+        'KL05Z',
+        'LPC1768',
+        'ARCH_PRO',
+        'ARCH_MAX',
+        'UBLOX_C027',
+        'NUCLEO_L053R8',
+        'NUCLEO_L152RE',
+        'NUCLEO_F030R8',
+        'NUCLEO_F042K6',
+        'NUCLEO_F070RB',
+        'NUCLEO_F072RB',
+        'NUCLEO_F091RC',
+        'NUCLEO_F103RB',
+        'NUCLEO_F302R8',
+        'NUCLEO_F303K8',
+        'NUCLEO_F303RE',
+        'NUCLEO_F334R8',
+        'NUCLEO_F401RE',
+        'NUCLEO_F410RB',
+        'NUCLEO_F411RE',
+        'NUCLEO_F446RE',
+        'DISCO_L053C8',
+        'DISCO_F051R8',
+        'DISCO_F100RB',
+        'DISCO_F303VC',
+        'DISCO_F334C8',
+        'DISCO_F401VC',
+        'DISCO_F407VG',
+        'DISCO_F429ZI',
+        'DISCO_F469NI',
+        'MTS_MDOT_F405RG',
+        'MTS_MDOT_F411RE',
+        'MOTE_L152RC',
+        'NZ32_SC151',
+    ]
+
+    # seems like CoIDE currently supports only one type
+    FILE_TYPES = {
+        'c_sources':'1',
+        'cpp_sources':'1',
+        's_sources':'1'
+    }
+    FILE_TYPES2 = {
+        'headers':'1'
+    }
+
+    def generate(self):
+        self.resources.win_to_unix()
+        source_files = []
+        for r_type, n in CoIDE.FILE_TYPES.iteritems():
+            for file in getattr(self.resources, r_type):
+                source_files.append({
+                    'name': basename(file), 'type': n, 'path': file
+                })
+        header_files = []
+        for r_type, n in CoIDE.FILE_TYPES2.iteritems():
+            for file in getattr(self.resources, r_type):
+                header_files.append({
+                    'name': basename(file), 'type': n, 'path': file
+                })
+
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+
+        if self.resources.linker_script is None:
+            self.resources.linker_script = ''
+            
+        ctx = {
+            'name': self.program_name,
+            'source_files': source_files,
+            'header_files': header_files,
+            'include_paths': self.resources.inc_dirs,
+            'scatter_file': self.resources.linker_script,
+            'library_paths': self.resources.lib_dirs,
+            'object_files': self.resources.objects,
+            'libraries': libraries,
+            'symbols': self.get_symbols()
+        }
+        target = self.target.lower()
+
+        # Project file
+        self.gen_file('coide_%s.coproj.tmpl' % target, ctx, '%s.coproj' % self.program_name)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_arch_max.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="344" chipName="STM32F407VG" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u_printf_float; -u_scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00100000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FE78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00010000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="CMSIS-DAP"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_1024.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_arch_pro.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="7" manufacturerName="NXP" chipId="165" chipName="LPC1768" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %}; {% for p in library_paths %}-L{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x00000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00008000" startValue="0x10000000"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00008000" startValue="0x2007C000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="CMSIS-DAP"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="LPC17xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f051r8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Release" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="249" chipName="STM32F051R8" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./STM32F05xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Target name="Debug" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="249" chipName="STM32F051R8" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./STM32F05xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f100rb.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Release" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="257" chipName="STM32F100RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001E30" startValue="0x200001D0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f10x_md_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Target name="Debug" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="257" chipName="STM32F100RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001E30" startValue="0x200001D0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f10x_md_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f303vc.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="520" chipName="STM32F303VC" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00040000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00009E78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00002000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f3xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f334c8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F411RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00002E78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00001000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f3xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f401vc.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Release" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="502" chipName="STM32F401VC" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00040000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x000FE6C" startValue="0x20000194"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_256.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Target name="Debug" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="502" chipName="STM32F401VC" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00040000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x000FE6C" startValue="0x20000194"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_256.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f407vg.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="344" chipName="STM32F407VG" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00100000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FE78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00010000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_1024.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_f429zi.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="775" chipName="STM32F429ZI" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00200000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0002FE54" startValue="0x200001AC"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00010000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f4xx_2048.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_disco_l053c8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Release" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="878" chipName="STM32L053C8T6" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32l0xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Target name="Debug" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="878" chipName="STM32L053C8T6" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32l0xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_kl05z.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="4" manufacturerName="Freescale" chipId="49" chipName="MKL05Z32VFM4" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x00000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001000" startValue="0x1FFFF000"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="CMSIS-DAP"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="KLxx_32_PRG_NO_CFG.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_kl25z.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="4" manufacturerName="Freescale" chipId="86" chipName="MKL25Z128VLK4" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x00000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001000" startValue="0x1FFFF000"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="CMSIS-DAP"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="KLxx_128_PRG_NO_CFG.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_lpc1768.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="7" manufacturerName="NXP" chipId="165" chipName="LPC1768" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %}; {% for p in library_paths %}-L{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x00000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00008000" startValue="0x10000000"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00008000" startValue="0x2007C000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="CMSIS-DAP"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="LPC17xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_mote_l152rc.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 2.0.1" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="932" chipName="STM32L152RCT6" boardId="" boardName="" coreId="3" coreName="Cortex M3"/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00040000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00007EC4" startValue="0x2000013C"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32l1xx_256.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_mts_mdot_f405rg.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.7" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="342" chipName="STM32F405RG" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00100000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FF44" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00010000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="STM32F4xx_1024.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_mts_mdot_f411re.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.7" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F411RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FE68" startValue="0x20000198"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f030r8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="438" chipName="STM32F030R8T6" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f05xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f042k6.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="577" chipName="STM32F042K6" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00007FFF" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001740" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f05xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f070rb.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="480" chipName="STM32F070RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u_printf_float; -u_scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00003F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f07xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f072rb.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="480" chipName="STM32F072RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00003F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f07xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f091rc.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="847" chipName="STM32F091RC" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00040000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00007F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32f09x_256.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f103rb.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Release" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="310" chipName="STM32F103RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00004F14" startValue="0x200000EC"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./STM32F10x_MD_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Target name="Debug" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="310" chipName="STM32F103RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00004F14" startValue="0x200000EC"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./STM32F10x_MD_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f302r8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="511" chipName="STM32F302RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00003E78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f3xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f303re.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="517" chipName="STM32F303RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00003E78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f3xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f334r8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F411RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00002E78" startValue="0x20000188"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00001000" startValue="0x10000000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f3xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f401re.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F401RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00017E6C" startValue="0x20000194"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f410rb.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F410RB" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00020000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00007E38" startValue="0x200001C8"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_128.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f411re.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F411RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FE68" startValue="0x20000198"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_f446re.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Debug" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F446RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u_printf_float; -u_scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FE68" startValue="0x20000198"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Target name="Release" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="499" chipName="STM32F446RE" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u_printf_float; -u_scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x0001FE68" startValue="0x20000198"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32f4xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_l053r8.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="Release" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="882" chipName="STM32L053R8T6" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32l0xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Target name="Debug" isCurrent="0">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="882" chipName="STM32L053R8T6" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="0"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00010000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00001F40" startValue="0x200000C0"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="./stm32l0xx_64.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nucleo_l152re.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="561" chipName="STM32L152RD" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00013EC4" startValue="0x2000013C"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32l1xx_384.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_nz32_sc151.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="9" manufacturerName="ST" chipId="546" chipName="STM32L151RC" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Option name="FPU" value="1"/>
+        <Option name="SupportCPlusplus" value="1"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="1"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="-Wl,--wrap,main; --specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %} {% for p in library_paths %}-L${project.path}/{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00040000" startValue="0x08000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00007EC4" startValue="0x2000013C"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="" startValue=""/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="ST-Link"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="stm32l1xx_384.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/coide_ublox_c027.coproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project version="2G - 1.7.5" name="{{name}}">
+  <Target name="{{name}}" isCurrent="1">
+    <Device manufacturerId="7" manufacturerName="NXP" chipId="165" chipName="LPC1768" boardId="" boardName=""/>
+    <BuildOption>
+      <Compile>
+        <Option name="OptimizationLevel" value="4"/>
+        <Option name="UseFPU" value="0"/>
+        <Option name="UserEditCompiler" value="-fno-common; -fmessage-length=0; -Wall; -fno-strict-aliasing; -fno-rtti; -fno-exceptions; -ffunction-sections; -fdata-sections; -std=gnu++98"/>
+        <Includepaths>
+          {% for path in include_paths %} <Includepath path="{{path}}"/> {% endfor %}
+        </Includepaths>
+        <DefinedSymbols>
+          {% for s in symbols %} <Define name="{{s}}"/> {% endfor %}
+        </DefinedSymbols>
+      </Compile>
+      <Link useDefault="0">
+        <Option name="DiscardUnusedSection" value="0"/>
+        <Option name="UserEditLinkder" value=""/>
+        <Option name="UseMemoryLayout" value="0"/>
+        <Option name="LTO" value="0"/>
+        <Option name="IsNewStartupCode" value="1"/>
+        <Option name="Library" value="Not use C Library"/>
+        <Option name="nostartfiles" value="0"/>
+        <Option name="UserEditLinker" value="--specs=nano.specs; -u _printf_float; -u _scanf_float; {% for file in object_files %}
+        ${project.path}/{{file}}; {% endfor %}; {% for p in library_paths %}-L{{p}}; {% endfor %}"/>
+        <LinkedLibraries>
+          {% for lib in libraries %}
+          <Libset dir="" libs="{{lib}}"/>
+          {% endfor %}
+          <Libset dir="" libs="stdc++"/>
+          <Libset dir="" libs="supc++"/>
+          <Libset dir="" libs="m"/>
+          <Libset dir="" libs="gcc"/>
+          <Libset dir="" libs="c"/>
+          <Libset dir="" libs="nosys"/>
+        </LinkedLibraries>
+        <MemoryAreas debugInFlashNotRAM="1">
+          <Memory name="IROM1" type="ReadOnly" size="0x00080000" startValue="0x00000000"/>
+          <Memory name="IRAM1" type="ReadWrite" size="0x00008000" startValue="0x10000000"/>
+          <Memory name="IROM2" type="ReadOnly" size="" startValue=""/>
+          <Memory name="IRAM2" type="ReadWrite" size="0x00008000" startValue="0x2007C000"/>
+        </MemoryAreas>
+        <LocateLinkFile path="{{scatter_file}}" type="0"/>
+      </Link>
+      <Output>
+        <Option name="OutputFileType" value="0"/>
+        <Option name="Path" value="./"/>
+        <Option name="Name" value="{{name}}"/>
+        <Option name="HEX" value="1"/>
+        <Option name="BIN" value="1"/>
+      </Output>
+      <User>
+        <UserRun name="Run#1" type="Before" checked="0" value=""/>
+        <UserRun name="Run#1" type="After" checked="0" value=""/>
+      </User>
+    </BuildOption>
+    <DebugOption>
+      <Option name="org.coocox.codebugger.gdbjtag.core.adapter" value="CMSIS-DAP"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.debugMode" value="SWD"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.clockDiv" value="1M"/>
+      <Option name="org.coocox.codebugger.gdbjtag.corerunToMain" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkgdbserver" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.userDefineGDBScript" value=""/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.targetEndianess" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.jlinkResetMode" value="Type 0: Normal"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.resetMode" value="SYSRESETREQ"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifSemihost" value="0"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ifCacheRom" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.ipAddress" value="127.0.0.1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.portNumber" value="2009"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.autoDownload" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.verify" value="1"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.downloadFuction" value="Erase Effected"/>
+      <Option name="org.coocox.codebugger.gdbjtag.core.defaultAlgorithm" value="LPC17xx_512.elf"/>
+    </DebugOption>
+    <ExcludeFile/>
+  </Target>
+  <Components path="./"/>
+  <Files>
+    {% for file in source_files %}
+    <File name="sources/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+    {% for file in header_files %}
+    <File name="headers/{{file.path}}" path="{{file.path}}" type="{{file.type}}"/>
+    {% endfor %}
+  </Files>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,67 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import basename
+
+
+class DS5_5(Exporter):
+    NAME = 'DS5'
+
+    TARGETS = [
+        'LPC1768',
+        'LPC11U24',
+        'LPC812',
+        'UBLOX_C027',
+        'ARCH_PRO',
+        'RZ_A1H',
+    ]
+
+    USING_MICROLIB = [
+        'LPC812',
+    ]
+
+    FILE_TYPES = {
+        'c_sources':'1',
+        'cpp_sources':'8',
+        's_sources':'2'
+    }
+
+    def get_toolchain(self):
+        return 'uARM' if (self.target in self.USING_MICROLIB) else 'ARM'
+
+    def generate(self):
+        source_files = []
+        for r_type, n in DS5_5.FILE_TYPES.iteritems():
+            for file in getattr(self.resources, r_type):
+                source_files.append({
+                    'name': basename(file), 'type': n, 'path': file
+                })
+
+        ctx = {
+            'name': self.program_name,
+            'include_paths': self.resources.inc_dirs,
+            'scatter_file': self.resources.linker_script,
+            'object_files': self.resources.objects + self.resources.libraries,
+            'source_files': source_files,
+            'symbols': self.get_symbols()
+        }
+        target = self.target.lower()
+
+        # Project file
+        self.gen_file('ds5_5_%s.project.tmpl' % target, ctx, '.project')
+        self.gen_file('ds5_5_%s.cproject.tmpl' % target, ctx, '.cproject')
+        self.gen_file('ds5_5_%s.launch.tmpl' % target, ctx, 'ds5_%s.launch' % target)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_arch_pro.cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" moduleId="org.eclipse.cdt.core.settings" name="Build">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" name="Build" parent="com.arm.eclipse.build.config.baremetal.exe.debug" postbuildStep="fromelf --bin &quot;${ProjDirPath}/Build/${ProjName}.axf&quot; -o &quot;../${ProjName}.bin&quot;">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.debug.1293445387" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.debug">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576..2093450286" name=""/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/ds5_lpc1768/Build}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.2019880438" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.debug.518028859" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.debug"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.debug">
+								<option id="com.arm.tool.c.compiler.option.incpath.337015821" name="Include path (-I)" superClass="com.arm.tool.c.compiler.option.incpath" valueType="includePath">
+									{% for path in include_paths %}
+										<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="com.arm.tool.c.compiler.option.targetcpu.1479931161" name="Target CPU (--cpu)" superClass="com.arm.tool.c.compiler.option.targetcpu" value="Cortex-M3" valueType="string"/>
+								<option id="com.arm.tool.c.compiler.option.defmac.278202630" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+                                {% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.982666453" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.1990808204" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1188306347" name="ARM Assembler" superClass="com.arm.tool.assembler">
+								<option id="com.arm.tool.assembler.option.cpu.1673465082" name="Target CPU (--cpu)" superClass="com.arm.tool.assembler.option.cpu" value="Cortex-M3" valueType="string"/>
+							</tool>
+							<tool id="com.arm.tool.c.linker.2036393580" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<option id="com.arm.tool.c.linker.option.cpu.419580654" name="Target CPU (--cpu)" superClass="com.arm.tool.c.linker.option.cpu" value="Cortex-M3" valueType="string"/>
+								<option id="com.arm.tool.c.linker.option.scatter.1235987457" name="Scatter file (--scatter)" superClass="com.arm.tool.c.linker.option.scatter" value="${ProjDirPath}/{{ scatter_file }}" valueType="string"/>
+								<option id="com.arm.tool.c.linker.userobjs.1389137013" name="Other object files" superClass="com.arm.tool.c.linker.userobjs" valueType="userObjs">
+    								{% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.linker.input.806269116" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinputdependency" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.731120140" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.release.751106089">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" name="Release" parent="com.arm.eclipse.build.config.baremetal.exe.release">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.release.751106089." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.release.531116686" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.release">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.release.751106089..723232367" name=""/>
+							<builder buildPath="${workspace_loc:/ds5_lpc1768/Release}" id="com.arm.toolchain.baremetal.builder.2017314066" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.arm.toolchain.baremetal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.release.920331842" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.release"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.release.487140164" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.release">
+								<option id="com.arm.tool.c.compiler.option.defmac.813110551" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+									{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+									{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.79502875" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.192669519" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1423278729" name="ARM Assembler" superClass="com.arm.tool.assembler"/>
+							<tool id="com.arm.tool.c.linker.1149702455" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<inputType id="com.arm.tool.c.linker.input.2130902749" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.710017326" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="ds5_lpc1768.com.arm.eclipse.build.project.baremetal.exe.579849103" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="1">
+		<resource resourceType="PROJECT" workspacePath="/ds5_lpc1768"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.cpp.compiler.input.1990808204">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.c.compiler.input.982666453">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_arch_pro.launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.arm.debugger.launcher2">
+<stringAttribute key="ANDROID_ACTIVITY_NAME" value=""/>
+<stringAttribute key="ANDROID_APPLICATION" value=""/>
+<stringAttribute key="ANDROID_APP_DIR" value=""/>
+<stringAttribute key="ANDROID_PROCESS_NAME" value=""/>
+<intAttribute key="DEBUG_TAB..RESOURCES.COUNT" value="0"/>
+<booleanAttribute key="EVENT_VIEWER_ENABLED" value="false"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH" value="1Mb"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH_NUMBER" value="1048576"/>
+<intAttribute key="FILES.CONNECT_TO_GDB_SERVER.RESOURCES.COUNT" value="0"/>
+<intAttribute key="FILES.DEBUG_EXISTING_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_ANDROID"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_APP"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.TYPE" value="APPLICATION_ON_TARGET"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.DOWNLOAD_AND_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.COUNT" value="3"/>
+<listAttribute key="FILES.DOWNLOAD_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.COUNT" value="3"/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.ICE_DEBUG">
+<listEntry value="ON_DEMAND_LOAD"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.TYPE" value="SYMBOLS_FILE"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.VALUE" value="${workspace_loc:/ds5_lpc1768/Build/ds5_lpc1768.axf}"/>
+<intAttribute key="FILES.ICE_DEBUG.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.COUNT" value="1"/>
+<stringAttribute key="FILES.SELECTED_DEBUG_OPEATION" value="ICE_DEBUG"/>
+<stringAttribute key="HOST_WORKING_DIR" value="${workspace_loc}"/>
+<booleanAttribute key="HOST_WORKING_DIR_USE_DEFAULT" value="true"/>
+<listAttribute key="ITM_CHANNEL_LIST">
+<listEntry value="ITM_CHANNEL_port0"/>
+</listAttribute>
+<booleanAttribute key="ITM_CHANNEL_port0_ENABLED" value="true"/>
+<stringAttribute key="ITM_CHANNEL_port0_FILE" value=""/>
+<stringAttribute key="ITM_CHANNEL_port0_FORMAT" value="raw"/>
+<intAttribute key="ITM_CHANNEL_port0_ID" value="0"/>
+<intAttribute key="ITM_CHANNEL_port0_OUTPUT" value="0"/>
+<booleanAttribute key="KEY_COMMANDS_AFTER_CONNECT" value="true"/>
+<stringAttribute key="KEY_COMMANDS_AFTER_CONNECT_TEXT" value="interrupt&#13;&#10;set $PC=Reset_Handler&#13;&#10;"/>
+<booleanAttribute key="RSE_USE_HOSTNAME" value="true"/>
+<stringAttribute key="TCP_DISABLE_EXTENDED_MODE" value="true"/>
+<booleanAttribute key="TCP_KILL_ON_EXIT" value="false"/>
+<booleanAttribute key="VFS_ENABLED" value="true"/>
+<stringAttribute key="VFS_LOCAL_DIR" value="${workspace_loc}"/>
+<stringAttribute key="VFS_REMOTE_MOUNT" value="/writeable"/>
+<stringAttribute key="breakpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;breakpoints order=&quot;ALPHA&quot;&gt;&#13;&#10;&lt;/breakpoints&gt;&#13;&#10;"/>
+<stringAttribute key="config_db_activity_name" value="Debug Cortex-M3 via VSTREAM"/>
+<stringAttribute key="config_db_connection_keys" value="rvi_address config_file TCP_KILL_ON_EXIT TCP_DISABLE_EXTENDED_MODE"/>
+<stringAttribute key="config_db_connection_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_platform_name" value="MBED - LPC1768"/>
+<stringAttribute key="config_db_project_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_project_type_id" value="BARE_METAL"/>
+<stringAttribute key="config_file" value="CDB://mbed_dap.rvc"/>
+<booleanAttribute key="connectOnly" value="true"/>
+<stringAttribute key="dtsl_options_file" value="default"/>
+<booleanAttribute key="linuxOS" value="false"/>
+<stringAttribute key="rddi_type" value="rddi-debug-rvi"/>
+<booleanAttribute key="runAfterConnect" value="false"/>
+<stringAttribute key="rvi_address" value="TCP:E106295"/>
+<stringAttribute key="watchpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;watchpoint&gt;&#13;&#10;&lt;/watchpoint&gt;&#13;&#10;"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_arch_pro.project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}_ds5_lpc1768</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/ds5_lpc1768/Build}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc11u24.cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777" moduleId="org.eclipse.cdt.core.settings" name="Build">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator;com.arm.eclipse.builder.armcc.error" id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777" name="Build" parent="com.arm.eclipse.build.config.baremetal.exe.debug" postannouncebuildStep="" postbuildStep="fromelf --bin &quot;${ProjDirPath}/Build/${ProjName}.axf&quot; -o &quot;../${ProjName}.bin&quot;" preannouncebuildStep="" prebuildStep="">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777." name="/" resourcePath="">
+						<toolChain errorParsers="com.arm.eclipse.builder.armcc.error" id="com.arm.toolchain.baremetal.exe.debug.1781361929" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.debug">
+							<targetPlatform binaryParser="" id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777..1121504975" name=""/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/ds5_lpc11u24/Build}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.1955892657" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.debug.1694050615" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.debug"/>
+							<tool command="armcc" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="" id="com.arm.tool.cpp.compiler.baremetal.exe.debug.1642314243" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.debug">
+								<option id="com.arm.tool.c.compiler.option.targetcpu.235324898" name="Target CPU (--cpu)" superClass="com.arm.tool.c.compiler.option.targetcpu" value="Cortex-M0" valueType="string"/>
+								<option id="com.arm.tool.c.compiler.option.incpath.1328570024" name="Include path (-I)" superClass="com.arm.tool.c.compiler.option.incpath" valueType="includePath">
+									{% for path in include_paths %}
+										<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.51293980" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.2068563074" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool command="armasm" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="" id="com.arm.tool.assembler.1597855725" name="ARM Assembler" superClass="com.arm.tool.assembler">
+								<option id="com.arm.tool.assembler.option.cpu.1268314117" name="Target CPU (--cpu)" superClass="com.arm.tool.assembler.option.cpu" value="Cortex-M0" valueType="string"/>
+							</tool>
+							<tool command="armlink" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="" id="com.arm.tool.c.linker.2036393580" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<option id="com.arm.tool.c.linker.option.cpu.419580654" name="Target CPU (--cpu)" superClass="com.arm.tool.c.linker.option.cpu" value="Cortex-M0" valueType="string"/>
+								<option id="com.arm.tool.c.linker.option.scatter.1235987457" name="Scatter file (--scatter)" superClass="com.arm.tool.c.linker.option.scatter" value="${ProjDirPath}/{{ scatter_file }}" valueType="string"/>
+								<option id="com.arm.tool.c.linker.userobjs.1389137013" name="Other object files" superClass="com.arm.tool.c.linker.userobjs" valueType="userObjs">
+									{% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.linker.input.806269116" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinputdependency" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.1693045804" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027" name="Release" parent="com.arm.eclipse.build.config.baremetal.exe.release">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.release.855323040" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.release">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027..61103736" name=""/>
+							<builder buildPath="${workspace_loc:/ds5_lpc11u24/Release}" id="com.arm.toolchain.baremetal.builder.155956859" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.arm.toolchain.baremetal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.release.8403098" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.release"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.release.724046879" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.release">
+								<inputType id="com.arm.tool.c.compiler.input.2054513225" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.1205595081" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1688115594" name="ARM Assembler" superClass="com.arm.tool.assembler"/>
+							<tool id="com.arm.tool.c.linker.901819873" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<inputType id="com.arm.tool.c.linker.input.730137058" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.1880062119" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="test.com.arm.eclipse.build.project.baremetal.exe.683746772" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="1"/>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777;com.arm.eclipse.build.config.baremetal.exe.debug.1914396777.;com.arm.tool.cpp.compiler.baremetal.exe.debug.1642314243;com.arm.tool.cpp.compiler.input.2068563074">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777;com.arm.eclipse.build.config.baremetal.exe.debug.1914396777.;com.arm.tool.cpp.compiler.baremetal.exe.debug.1642314243;com.arm.tool.c.compiler.input.51293980">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc11u24.launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.arm.debugger.launcher2">
+<stringAttribute key="ANDROID_ACTIVITY_NAME" value=""/>
+<stringAttribute key="ANDROID_APPLICATION" value=""/>
+<stringAttribute key="ANDROID_APP_DIR" value=""/>
+<stringAttribute key="ANDROID_PROCESS_NAME" value=""/>
+<intAttribute key="DEBUG_TAB..RESOURCES.COUNT" value="0"/>
+<booleanAttribute key="EVENT_VIEWER_ENABLED" value="false"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH" value="1Mb"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH_NUMBER" value="1048576"/>
+<intAttribute key="FILES.CONNECT_TO_GDB_SERVER.RESOURCES.COUNT" value="0"/>
+<intAttribute key="FILES.DEBUG_EXISTING_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_ANDROID"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_APP"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.TYPE" value="APPLICATION_ON_TARGET"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.DOWNLOAD_AND_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.COUNT" value="3"/>
+<listAttribute key="FILES.DOWNLOAD_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.COUNT" value="3"/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.ICE_DEBUG">
+<listEntry value="ON_DEMAND_LOAD"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.TYPE" value="SYMBOLS_FILE"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.VALUE" value="${workspace_loc:/ds5_lpc11u24/Build/ds5_lpc11u24.axf}"/>
+<intAttribute key="FILES.ICE_DEBUG.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.COUNT" value="1"/>
+<stringAttribute key="FILES.SELECTED_DEBUG_OPEATION" value="ICE_DEBUG"/>
+<stringAttribute key="HOST_WORKING_DIR" value="${workspace_loc}"/>
+<booleanAttribute key="HOST_WORKING_DIR_USE_DEFAULT" value="true"/>
+<listAttribute key="ITM_CHANNEL_LIST">
+<listEntry value="ITM_CHANNEL_port0"/>
+</listAttribute>
+<booleanAttribute key="ITM_CHANNEL_port0_ENABLED" value="true"/>
+<stringAttribute key="ITM_CHANNEL_port0_FILE" value=""/>
+<stringAttribute key="ITM_CHANNEL_port0_FORMAT" value="raw"/>
+<intAttribute key="ITM_CHANNEL_port0_ID" value="0"/>
+<intAttribute key="ITM_CHANNEL_port0_OUTPUT" value="0"/>
+<booleanAttribute key="KEY_COMMANDS_AFTER_CONNECT" value="true"/>
+<stringAttribute key="KEY_COMMANDS_AFTER_CONNECT_TEXT" value="interrupt&#13;&#10;set $PC=Reset_Handler&#13;&#10;"/>
+<booleanAttribute key="RSE_USE_HOSTNAME" value="true"/>
+<stringAttribute key="TCP_DISABLE_EXTENDED_MODE" value="true"/>
+<booleanAttribute key="TCP_KILL_ON_EXIT" value="false"/>
+<booleanAttribute key="VFS_ENABLED" value="true"/>
+<stringAttribute key="VFS_LOCAL_DIR" value="${workspace_loc}"/>
+<stringAttribute key="VFS_REMOTE_MOUNT" value="/writeable"/>
+<stringAttribute key="breakpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;breakpoints order=&quot;ALPHA&quot;&gt;&#13;&#10;&lt;/breakpoints&gt;&#13;&#10;"/>
+<stringAttribute key="config_db_activity_name" value="Debug Cortex-M0 via VSTREAM"/>
+<stringAttribute key="config_db_connection_keys" value="rvi_address config_file TCP_KILL_ON_EXIT TCP_DISABLE_EXTENDED_MODE"/>
+<stringAttribute key="config_db_connection_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_platform_name" value="MBED - LPC11U24"/>
+<stringAttribute key="config_db_project_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_project_type_id" value="BARE_METAL"/>
+<stringAttribute key="config_file" value="CDB://mbed_dap.rvc"/>
+<booleanAttribute key="connectOnly" value="true"/>
+<stringAttribute key="dtsl_options_file" value="default"/>
+<booleanAttribute key="linuxOS" value="false"/>
+<stringAttribute key="rddi_type" value="rddi-debug-rvi"/>
+<booleanAttribute key="runAfterConnect" value="false"/>
+<stringAttribute key="rvi_address" value="TCP:E106295"/>
+<stringAttribute key="watchpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;watchpoint&gt;&#13;&#10;&lt;/watchpoint&gt;&#13;&#10;"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc11u24.project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}_ds5_lpc11u24</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/ds5_lpc11u24/Build}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc1768.cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" moduleId="org.eclipse.cdt.core.settings" name="Build">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" name="Build" parent="com.arm.eclipse.build.config.baremetal.exe.debug" postbuildStep="fromelf --bin &quot;${ProjDirPath}/Build/${ProjName}.axf&quot; -o &quot;../${ProjName}.bin&quot;">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.debug.1293445387" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.debug">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576..2093450286" name=""/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/ds5_lpc1768/Build}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.2019880438" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.debug.518028859" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.debug"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.debug">
+								<option id="com.arm.tool.c.compiler.option.incpath.337015821" name="Include path (-I)" superClass="com.arm.tool.c.compiler.option.incpath" valueType="includePath">
+									{% for path in include_paths %}
+										<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="com.arm.tool.c.compiler.option.targetcpu.1479931161" name="Target CPU (--cpu)" superClass="com.arm.tool.c.compiler.option.targetcpu" value="Cortex-M3" valueType="string"/>
+								<option id="com.arm.tool.c.compiler.option.defmac.278202630" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+                                {% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.982666453" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.1990808204" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1188306347" name="ARM Assembler" superClass="com.arm.tool.assembler">
+								<option id="com.arm.tool.assembler.option.cpu.1673465082" name="Target CPU (--cpu)" superClass="com.arm.tool.assembler.option.cpu" value="Cortex-M3" valueType="string"/>
+							</tool>
+							<tool id="com.arm.tool.c.linker.2036393580" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<option id="com.arm.tool.c.linker.option.cpu.419580654" name="Target CPU (--cpu)" superClass="com.arm.tool.c.linker.option.cpu" value="Cortex-M3" valueType="string"/>
+								<option id="com.arm.tool.c.linker.option.scatter.1235987457" name="Scatter file (--scatter)" superClass="com.arm.tool.c.linker.option.scatter" value="${ProjDirPath}/{{ scatter_file }}" valueType="string"/>
+								<option id="com.arm.tool.c.linker.userobjs.1389137013" name="Other object files" superClass="com.arm.tool.c.linker.userobjs" valueType="userObjs">
+    								{% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.linker.input.806269116" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinputdependency" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.731120140" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.release.751106089">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" name="Release" parent="com.arm.eclipse.build.config.baremetal.exe.release">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.release.751106089." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.release.531116686" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.release">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.release.751106089..723232367" name=""/>
+							<builder buildPath="${workspace_loc:/ds5_lpc1768/Release}" id="com.arm.toolchain.baremetal.builder.2017314066" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.arm.toolchain.baremetal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.release.920331842" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.release"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.release.487140164" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.release">
+								<option id="com.arm.tool.c.compiler.option.defmac.813110551" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+									{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+									{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.79502875" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.192669519" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1423278729" name="ARM Assembler" superClass="com.arm.tool.assembler"/>
+							<tool id="com.arm.tool.c.linker.1149702455" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<inputType id="com.arm.tool.c.linker.input.2130902749" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.710017326" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="ds5_lpc1768.com.arm.eclipse.build.project.baremetal.exe.579849103" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="1">
+		<resource resourceType="PROJECT" workspacePath="/ds5_lpc1768"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.cpp.compiler.input.1990808204">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.c.compiler.input.982666453">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc1768.launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.arm.debugger.launcher2">
+<stringAttribute key="ANDROID_ACTIVITY_NAME" value=""/>
+<stringAttribute key="ANDROID_APPLICATION" value=""/>
+<stringAttribute key="ANDROID_APP_DIR" value=""/>
+<stringAttribute key="ANDROID_PROCESS_NAME" value=""/>
+<intAttribute key="DEBUG_TAB..RESOURCES.COUNT" value="0"/>
+<booleanAttribute key="EVENT_VIEWER_ENABLED" value="false"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH" value="1Mb"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH_NUMBER" value="1048576"/>
+<intAttribute key="FILES.CONNECT_TO_GDB_SERVER.RESOURCES.COUNT" value="0"/>
+<intAttribute key="FILES.DEBUG_EXISTING_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_ANDROID"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_APP"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.TYPE" value="APPLICATION_ON_TARGET"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.DOWNLOAD_AND_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.COUNT" value="3"/>
+<listAttribute key="FILES.DOWNLOAD_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.COUNT" value="3"/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.ICE_DEBUG">
+<listEntry value="ON_DEMAND_LOAD"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.TYPE" value="SYMBOLS_FILE"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.VALUE" value="${workspace_loc:/ds5_lpc1768/Build/ds5_lpc1768.axf}"/>
+<intAttribute key="FILES.ICE_DEBUG.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.COUNT" value="1"/>
+<stringAttribute key="FILES.SELECTED_DEBUG_OPEATION" value="ICE_DEBUG"/>
+<stringAttribute key="HOST_WORKING_DIR" value="${workspace_loc}"/>
+<booleanAttribute key="HOST_WORKING_DIR_USE_DEFAULT" value="true"/>
+<listAttribute key="ITM_CHANNEL_LIST">
+<listEntry value="ITM_CHANNEL_port0"/>
+</listAttribute>
+<booleanAttribute key="ITM_CHANNEL_port0_ENABLED" value="true"/>
+<stringAttribute key="ITM_CHANNEL_port0_FILE" value=""/>
+<stringAttribute key="ITM_CHANNEL_port0_FORMAT" value="raw"/>
+<intAttribute key="ITM_CHANNEL_port0_ID" value="0"/>
+<intAttribute key="ITM_CHANNEL_port0_OUTPUT" value="0"/>
+<booleanAttribute key="KEY_COMMANDS_AFTER_CONNECT" value="true"/>
+<stringAttribute key="KEY_COMMANDS_AFTER_CONNECT_TEXT" value="interrupt&#13;&#10;set $PC=Reset_Handler&#13;&#10;"/>
+<booleanAttribute key="RSE_USE_HOSTNAME" value="true"/>
+<stringAttribute key="TCP_DISABLE_EXTENDED_MODE" value="true"/>
+<booleanAttribute key="TCP_KILL_ON_EXIT" value="false"/>
+<booleanAttribute key="VFS_ENABLED" value="true"/>
+<stringAttribute key="VFS_LOCAL_DIR" value="${workspace_loc}"/>
+<stringAttribute key="VFS_REMOTE_MOUNT" value="/writeable"/>
+<stringAttribute key="breakpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;breakpoints order=&quot;ALPHA&quot;&gt;&#13;&#10;&lt;/breakpoints&gt;&#13;&#10;"/>
+<stringAttribute key="config_db_activity_name" value="Debug Cortex-M3 via VSTREAM"/>
+<stringAttribute key="config_db_connection_keys" value="rvi_address config_file TCP_KILL_ON_EXIT TCP_DISABLE_EXTENDED_MODE"/>
+<stringAttribute key="config_db_connection_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_platform_name" value="MBED - LPC1768"/>
+<stringAttribute key="config_db_project_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_project_type_id" value="BARE_METAL"/>
+<stringAttribute key="config_file" value="CDB://mbed_dap.rvc"/>
+<booleanAttribute key="connectOnly" value="true"/>
+<stringAttribute key="dtsl_options_file" value="default"/>
+<booleanAttribute key="linuxOS" value="false"/>
+<stringAttribute key="rddi_type" value="rddi-debug-rvi"/>
+<booleanAttribute key="runAfterConnect" value="false"/>
+<stringAttribute key="rvi_address" value="TCP:E106295"/>
+<stringAttribute key="watchpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;watchpoint&gt;&#13;&#10;&lt;/watchpoint&gt;&#13;&#10;"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc1768.project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}_ds5_lpc1768</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/ds5_lpc1768/Build}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc812.cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777" moduleId="org.eclipse.cdt.core.settings" name="Build">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator;com.arm.eclipse.builder.armcc.error" id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777" name="Build" parent="com.arm.eclipse.build.config.baremetal.exe.debug" postannouncebuildStep="" postbuildStep="fromelf --bin &quot;${ProjDirPath}/Build/${ProjName}.axf&quot; -o &quot;../${ProjName}.bin&quot;" preannouncebuildStep="" prebuildStep="">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777." name="/" resourcePath="">
+						<toolChain errorParsers="com.arm.eclipse.builder.armcc.error" id="com.arm.toolchain.baremetal.exe.debug.1781361929" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.debug">
+							<targetPlatform binaryParser="" id="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777..1121504975" name=""/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/ds5_lpc812/Build}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.1955892657" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.debug.1694050615" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.debug"/>
+							<tool command="armcc" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="" id="com.arm.tool.cpp.compiler.baremetal.exe.debug.1642314243" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.debug">
+								<option id="com.arm.tool.c.compiler.option.targetcpu.235324898" name="Target CPU (--cpu)" superClass="com.arm.tool.c.compiler.option.targetcpu" value="Cortex-M0" valueType="string"/>
+								<option id="com.arm.tool.c.compiler.option.incpath.1328570024" name="Include path (-I)" superClass="com.arm.tool.c.compiler.option.incpath" valueType="includePath">
+									{% for path in include_paths %}
+										<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.51293980" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.2068563074" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool command="armasm" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="" id="com.arm.tool.assembler.1597855725" name="ARM Assembler" superClass="com.arm.tool.assembler">
+								<option id="com.arm.tool.assembler.option.cpu.1268314117" name="Target CPU (--cpu)" superClass="com.arm.tool.assembler.option.cpu" value="Cortex-M0" valueType="string"/>
+							</tool>
+							<tool command="armlink" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="" id="com.arm.tool.c.linker.2036393580" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<option id="com.arm.tool.c.linker.option.cpu.419580654" name="Target CPU (--cpu)" superClass="com.arm.tool.c.linker.option.cpu" value="Cortex-M0" valueType="string"/>
+								<option id="com.arm.tool.c.linker.option.scatter.1235987457" name="Scatter file (--scatter)" superClass="com.arm.tool.c.linker.option.scatter" value="${ProjDirPath}/{{ scatter_file }}" valueType="string"/>
+								<option id="com.arm.tool.c.linker.userobjs.1389137013" name="Other object files" superClass="com.arm.tool.c.linker.userobjs" valueType="userObjs">
+									{% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.linker.input.806269116" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinputdependency" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.1693045804" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027" name="Release" parent="com.arm.eclipse.build.config.baremetal.exe.release">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.release.855323040" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.release">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.release.1532514027..61103736" name=""/>
+							<builder buildPath="${workspace_loc:/ds5_lpc812/Release}" id="com.arm.toolchain.baremetal.builder.155956859" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.arm.toolchain.baremetal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.release.8403098" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.release"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.release.724046879" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.release">
+								<inputType id="com.arm.tool.c.compiler.input.2054513225" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.1205595081" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1688115594" name="ARM Assembler" superClass="com.arm.tool.assembler"/>
+							<tool id="com.arm.tool.c.linker.901819873" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<inputType id="com.arm.tool.c.linker.input.730137058" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.1880062119" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="test.com.arm.eclipse.build.project.baremetal.exe.683746772" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="1"/>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777;com.arm.eclipse.build.config.baremetal.exe.debug.1914396777.;com.arm.tool.cpp.compiler.baremetal.exe.debug.1642314243;com.arm.tool.cpp.compiler.input.2068563074">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1914396777;com.arm.eclipse.build.config.baremetal.exe.debug.1914396777.;com.arm.tool.cpp.compiler.baremetal.exe.debug.1642314243;com.arm.tool.c.compiler.input.51293980">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc812.launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.arm.debugger.launcher2">
+<stringAttribute key="ANDROID_ACTIVITY_NAME" value=""/>
+<stringAttribute key="ANDROID_APPLICATION" value=""/>
+<stringAttribute key="ANDROID_APP_DIR" value=""/>
+<stringAttribute key="ANDROID_PROCESS_NAME" value=""/>
+<intAttribute key="DEBUG_TAB..RESOURCES.COUNT" value="0"/>
+<booleanAttribute key="EVENT_VIEWER_ENABLED" value="false"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH" value="1Mb"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH_NUMBER" value="1048576"/>
+<intAttribute key="FILES.CONNECT_TO_GDB_SERVER.RESOURCES.COUNT" value="0"/>
+<intAttribute key="FILES.DEBUG_EXISTING_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_ANDROID"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_APP"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.TYPE" value="APPLICATION_ON_TARGET"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.DOWNLOAD_AND_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.COUNT" value="3"/>
+<listAttribute key="FILES.DOWNLOAD_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.COUNT" value="3"/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.ICE_DEBUG">
+<listEntry value="ON_DEMAND_LOAD"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.TYPE" value="SYMBOLS_FILE"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.VALUE" value="${workspace_loc:/ds5_lpc812/Build/ds5_lpc812.axf}"/>
+<intAttribute key="FILES.ICE_DEBUG.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.COUNT" value="1"/>
+<stringAttribute key="FILES.SELECTED_DEBUG_OPEATION" value="ICE_DEBUG"/>
+<stringAttribute key="HOST_WORKING_DIR" value="${workspace_loc}"/>
+<booleanAttribute key="HOST_WORKING_DIR_USE_DEFAULT" value="true"/>
+<listAttribute key="ITM_CHANNEL_LIST">
+<listEntry value="ITM_CHANNEL_port0"/>
+</listAttribute>
+<booleanAttribute key="ITM_CHANNEL_port0_ENABLED" value="true"/>
+<stringAttribute key="ITM_CHANNEL_port0_FILE" value=""/>
+<stringAttribute key="ITM_CHANNEL_port0_FORMAT" value="raw"/>
+<intAttribute key="ITM_CHANNEL_port0_ID" value="0"/>
+<intAttribute key="ITM_CHANNEL_port0_OUTPUT" value="0"/>
+<booleanAttribute key="KEY_COMMANDS_AFTER_CONNECT" value="true"/>
+<stringAttribute key="KEY_COMMANDS_AFTER_CONNECT_TEXT" value="interrupt&#13;&#10;set $PC=Reset_Handler&#13;&#10;"/>
+<booleanAttribute key="RSE_USE_HOSTNAME" value="true"/>
+<stringAttribute key="TCP_DISABLE_EXTENDED_MODE" value="true"/>
+<booleanAttribute key="TCP_KILL_ON_EXIT" value="false"/>
+<booleanAttribute key="VFS_ENABLED" value="true"/>
+<stringAttribute key="VFS_LOCAL_DIR" value="${workspace_loc}"/>
+<stringAttribute key="VFS_REMOTE_MOUNT" value="/writeable"/>
+<stringAttribute key="breakpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;breakpoints order=&quot;ALPHA&quot;&gt;&#13;&#10;&lt;/breakpoints&gt;&#13;&#10;"/>
+<stringAttribute key="config_db_activity_name" value="Debug Cortex-M0 via VSTREAM"/>
+<stringAttribute key="config_db_connection_keys" value="rvi_address config_file TCP_KILL_ON_EXIT TCP_DISABLE_EXTENDED_MODE"/>
+<stringAttribute key="config_db_connection_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_platform_name" value="MBED - LPC812"/>
+<stringAttribute key="config_db_project_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_project_type_id" value="BARE_METAL"/>
+<stringAttribute key="config_file" value="CDB://mbed_dap.rvc"/>
+<booleanAttribute key="connectOnly" value="true"/>
+<stringAttribute key="dtsl_options_file" value="default"/>
+<booleanAttribute key="linuxOS" value="false"/>
+<stringAttribute key="rddi_type" value="rddi-debug-rvi"/>
+<booleanAttribute key="runAfterConnect" value="false"/>
+<stringAttribute key="rvi_address" value="TCP:E106295"/>
+<stringAttribute key="watchpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;watchpoint&gt;&#13;&#10;&lt;/watchpoint&gt;&#13;&#10;"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_lpc812.project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}_ds5_lpc812</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/ds5_lpc812/Build}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_rz_a1h.cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" moduleId="org.eclipse.cdt.core.settings" name="Build">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" name="Build" parent="com.arm.eclipse.build.config.baremetal.exe.debug" postbuildStep="fromelf --bin &quot;${ProjDirPath}/Build/${ProjName}.axf&quot; -o &quot;../${ProjName}.bin&quot;">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.debug.1293445387" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.debug">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576..2093450286" name=""/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/ds5_rz_a1h/Build}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.2019880438" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.debug.518028859" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.debug"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.debug">
+								<option id="com.arm.tool.c.compiler.option.incpath.337015821" name="Include path (-I)" superClass="com.arm.tool.c.compiler.option.incpath" valueType="includePath">
+									{% for path in include_paths %}
+										<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="com.arm.tool.c.compiler.option.targetcpu.1479931161" name="Target CPU (--cpu)" superClass="com.arm.tool.c.compiler.option.targetcpu" value="Cortex-A9" valueType="string"/>
+								<option id="com.arm.tool.c.compiler.option.defmac.278202630" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+                                {% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.982666453" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.1990808204" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1188306347" name="ARM Assembler" superClass="com.arm.tool.assembler">
+								<option id="com.arm.tool.assembler.option.cpu.1673465082" name="Target CPU (--cpu)" superClass="com.arm.tool.assembler.option.cpu" value="Cortex-A9" valueType="string"/>
+							</tool>
+							<tool id="com.arm.tool.c.linker.2036393580" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<option id="com.arm.tool.c.linker.option.cpu.419580654" name="Target CPU (--cpu)" superClass="com.arm.tool.c.linker.option.cpu" value="Cortex-A9" valueType="string"/>
+								<option id="com.arm.tool.c.linker.option.scatter.1235987457" name="Scatter file (--scatter)" superClass="com.arm.tool.c.linker.option.scatter" value="${ProjDirPath}/{{ scatter_file }}" valueType="string"/>
+								<option id="com.arm.tool.c.linker.userobjs.1389137013" name="Other object files" superClass="com.arm.tool.c.linker.userobjs" valueType="userObjs">
+    								{% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.linker.input.806269116" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinputdependency" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.731120140" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.release.751106089">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" name="Release" parent="com.arm.eclipse.build.config.baremetal.exe.release">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.release.751106089." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.release.531116686" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.release">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.release.751106089..723232367" name=""/>
+							<builder buildPath="${workspace_loc:/ds5_rz_a1h/Release}" id="com.arm.toolchain.baremetal.builder.2017314066" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.arm.toolchain.baremetal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.release.920331842" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.release"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.release.487140164" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.release">
+								<option id="com.arm.tool.c.compiler.option.defmac.813110551" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+									{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+									{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.79502875" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.192669519" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1423278729" name="ARM Assembler" superClass="com.arm.tool.assembler"/>
+							<tool id="com.arm.tool.c.linker.1149702455" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<inputType id="com.arm.tool.c.linker.input.2130902749" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.710017326" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="ds5_rz_a1h.com.arm.eclipse.build.project.baremetal.exe.579849103" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="1">
+		<resource resourceType="PROJECT" workspacePath="/ds5_rz_a1h"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.cpp.compiler.input.1990808204">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.c.compiler.input.982666453">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_rz_a1h.launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.arm.debugger.launcher2">
+<stringAttribute key="ANDROID_ACTIVITY_NAME" value=""/>
+<stringAttribute key="ANDROID_APPLICATION" value=""/>
+<stringAttribute key="ANDROID_APP_DIR" value=""/>
+<stringAttribute key="ANDROID_PROCESS_NAME" value=""/>
+<intAttribute key="DEBUG_TAB..RESOURCES.COUNT" value="0"/>
+<booleanAttribute key="EVENT_VIEWER_ENABLED" value="false"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH" value="1Mb"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH_NUMBER" value="1048576"/>
+<intAttribute key="FILES.CONNECT_TO_GDB_SERVER.RESOURCES.COUNT" value="0"/>
+<intAttribute key="FILES.DEBUG_EXISTING_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_ANDROID"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_APP"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.TYPE" value="APPLICATION_ON_TARGET"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.DOWNLOAD_AND_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.COUNT" value="3"/>
+<listAttribute key="FILES.DOWNLOAD_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.COUNT" value="3"/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.ICE_DEBUG">
+<listEntry value="ON_DEMAND_LOAD"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.TYPE" value="SYMBOLS_FILE"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.VALUE" value="${workspace_loc:/ds5_rz_a1h/Build/ds5_rz_a1h.axf}"/>
+<intAttribute key="FILES.ICE_DEBUG.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.COUNT" value="1"/>
+<stringAttribute key="FILES.SELECTED_DEBUG_OPEATION" value="ICE_DEBUG"/>
+<stringAttribute key="HOST_WORKING_DIR" value="${workspace_loc}"/>
+<booleanAttribute key="HOST_WORKING_DIR_USE_DEFAULT" value="true"/>
+<listAttribute key="ITM_CHANNEL_LIST">
+<listEntry value="ITM_CHANNEL_port0"/>
+</listAttribute>
+<booleanAttribute key="ITM_CHANNEL_port0_ENABLED" value="true"/>
+<stringAttribute key="ITM_CHANNEL_port0_FILE" value=""/>
+<stringAttribute key="ITM_CHANNEL_port0_FORMAT" value="raw"/>
+<intAttribute key="ITM_CHANNEL_port0_ID" value="0"/>
+<intAttribute key="ITM_CHANNEL_port0_OUTPUT" value="0"/>
+<booleanAttribute key="KEY_COMMANDS_AFTER_CONNECT" value="true"/>
+<stringAttribute key="KEY_COMMANDS_AFTER_CONNECT_TEXT" value="interrupt&#13;&#10;set $PC=Reset_Handler&#13;&#10;"/>
+<booleanAttribute key="RSE_USE_HOSTNAME" value="true"/>
+<stringAttribute key="TCP_DISABLE_EXTENDED_MODE" value="true"/>
+<booleanAttribute key="TCP_KILL_ON_EXIT" value="false"/>
+<booleanAttribute key="VFS_ENABLED" value="true"/>
+<stringAttribute key="VFS_LOCAL_DIR" value="${workspace_loc}"/>
+<stringAttribute key="VFS_REMOTE_MOUNT" value="/writeable"/>
+<stringAttribute key="breakpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;breakpoints order=&quot;ALPHA&quot;&gt;&#13;&#10;&lt;/breakpoints&gt;&#13;&#10;"/>
+<stringAttribute key="config_db_activity_name" value="Debug Cortex-A9 via VSTREAM"/>
+<stringAttribute key="config_db_connection_keys" value="rvi_address config_file TCP_KILL_ON_EXIT TCP_DISABLE_EXTENDED_MODE"/>
+<stringAttribute key="config_db_connection_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_platform_name" value="MBED - LPC1768"/>
+<stringAttribute key="config_db_project_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_project_type_id" value="BARE_METAL"/>
+<stringAttribute key="config_file" value="CDB://mbed_dap.rvc"/>
+<booleanAttribute key="connectOnly" value="true"/>
+<stringAttribute key="dtsl_options_file" value="default"/>
+<booleanAttribute key="linuxOS" value="false"/>
+<stringAttribute key="rddi_type" value="rddi-debug-rvi"/>
+<booleanAttribute key="runAfterConnect" value="false"/>
+<stringAttribute key="rvi_address" value="TCP:E106295"/>
+<stringAttribute key="watchpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;watchpoint&gt;&#13;&#10;&lt;/watchpoint&gt;&#13;&#10;"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_rz_a1h.project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}_ds5_rz_a1h</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/ds5_rz_a1h/Build}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_ublox_c027.cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" moduleId="org.eclipse.cdt.core.settings" name="Build">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576" name="Build" parent="com.arm.eclipse.build.config.baremetal.exe.debug" postbuildStep="fromelf --bin &quot;${ProjDirPath}/Build/${ProjName}.axf&quot; -o &quot;../${ProjName}.bin&quot;">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.debug.1293445387" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.debug">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576..2093450286" name=""/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/ds5_lpc1768/Build}" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.2019880438" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.debug.518028859" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.debug"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.debug">
+								<option id="com.arm.tool.c.compiler.option.incpath.337015821" name="Include path (-I)" superClass="com.arm.tool.c.compiler.option.incpath" valueType="includePath">
+									{% for path in include_paths %}
+										<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="com.arm.tool.c.compiler.option.targetcpu.1479931161" name="Target CPU (--cpu)" superClass="com.arm.tool.c.compiler.option.targetcpu" value="Cortex-M3" valueType="string"/>
+								<option id="com.arm.tool.c.compiler.option.defmac.278202630" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+                                {% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.982666453" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.1990808204" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1188306347" name="ARM Assembler" superClass="com.arm.tool.assembler">
+								<option id="com.arm.tool.assembler.option.cpu.1673465082" name="Target CPU (--cpu)" superClass="com.arm.tool.assembler.option.cpu" value="Cortex-M3" valueType="string"/>
+							</tool>
+							<tool id="com.arm.tool.c.linker.2036393580" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<option id="com.arm.tool.c.linker.option.cpu.419580654" name="Target CPU (--cpu)" superClass="com.arm.tool.c.linker.option.cpu" value="Cortex-M3" valueType="string"/>
+								<option id="com.arm.tool.c.linker.option.scatter.1235987457" name="Scatter file (--scatter)" superClass="com.arm.tool.c.linker.option.scatter" value="${ProjDirPath}/{{ scatter_file }}" valueType="string"/>
+								<option id="com.arm.tool.c.linker.userobjs.1389137013" name="Other object files" superClass="com.arm.tool.c.linker.userobjs" valueType="userObjs">
+    								{% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.linker.input.806269116" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinputdependency" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.731120140" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.release.751106089">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="com.arm.eclipse.builder.armcc.error" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="com.arm.eclipse.build.artefact.baremetal.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=com.arm.eclipse.build.artefact.baremetal.exe" cleanCommand="$(if $(findstring Windows_NT,$(OS)),clean,/bin/rm -f)" description="" id="com.arm.eclipse.build.config.baremetal.exe.release.751106089" name="Release" parent="com.arm.eclipse.build.config.baremetal.exe.release">
+					<folderInfo id="com.arm.eclipse.build.config.baremetal.exe.release.751106089." name="/" resourcePath="">
+						<toolChain id="com.arm.toolchain.baremetal.exe.release.531116686" name="ARM Compiler" superClass="com.arm.toolchain.baremetal.exe.release">
+							<targetPlatform id="com.arm.eclipse.build.config.baremetal.exe.release.751106089..723232367" name=""/>
+							<builder buildPath="${workspace_loc:/ds5_lpc1768/Release}" id="com.arm.toolchain.baremetal.builder.2017314066" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.arm.toolchain.baremetal.builder"/>
+							<tool id="com.arm.tool.c.compiler.baremetal.exe.release.920331842" name="ARM C Compiler" superClass="com.arm.tool.c.compiler.baremetal.exe.release"/>
+							<tool id="com.arm.tool.cpp.compiler.baremetal.exe.release.487140164" name="ARM C++ Compiler" superClass="com.arm.tool.cpp.compiler.baremetal.exe.release">
+								<option id="com.arm.tool.c.compiler.option.defmac.813110551" superClass="com.arm.tool.c.compiler.option.defmac" valueType="definedSymbols">
+									{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+									{% endfor %}
+								</option>
+								<inputType id="com.arm.tool.c.compiler.input.79502875" superClass="com.arm.tool.c.compiler.input"/>
+								<inputType id="com.arm.tool.cpp.compiler.input.192669519" superClass="com.arm.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="com.arm.tool.assembler.1423278729" name="ARM Assembler" superClass="com.arm.tool.assembler"/>
+							<tool id="com.arm.tool.c.linker.1149702455" name="ARM Linker" superClass="com.arm.tool.c.linker">
+								<inputType id="com.arm.tool.c.linker.input.2130902749" superClass="com.arm.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="com.arm.tool.librarian.710017326" name="ARM Librarian" superClass="com.arm.tool.librarian"/>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="ds5_lpc1768.com.arm.eclipse.build.project.baremetal.exe.579849103" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="1">
+		<resource resourceType="PROJECT" workspacePath="/ds5_lpc1768"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.cpp.compiler.input.1990808204">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="com.arm.eclipse.build.config.baremetal.exe.debug.1910477576;com.arm.eclipse.build.config.baremetal.exe.debug.1910477576.;com.arm.tool.cpp.compiler.baremetal.exe.debug.773836201;com.arm.tool.c.compiler.input.982666453">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.arm.eclipse.builder.armcc.ARMCompilerDiscoveryProfile"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_ublox_c027.launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.arm.debugger.launcher2">
+<stringAttribute key="ANDROID_ACTIVITY_NAME" value=""/>
+<stringAttribute key="ANDROID_APPLICATION" value=""/>
+<stringAttribute key="ANDROID_APP_DIR" value=""/>
+<stringAttribute key="ANDROID_PROCESS_NAME" value=""/>
+<intAttribute key="DEBUG_TAB..RESOURCES.COUNT" value="0"/>
+<booleanAttribute key="EVENT_VIEWER_ENABLED" value="false"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH" value="1Mb"/>
+<stringAttribute key="EVENT_VIEWER_MAX_DEPTH_NUMBER" value="1048576"/>
+<intAttribute key="FILES.CONNECT_TO_GDB_SERVER.RESOURCES.COUNT" value="0"/>
+<intAttribute key="FILES.DEBUG_EXISTING_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_ANDROID"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_ANDROID.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.DEBUG_RESIDENT_APP"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.TYPE" value="APPLICATION_ON_TARGET"/>
+<stringAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.1.VALUE" value=""/>
+<intAttribute key="FILES.DEBUG_RESIDENT_APP.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.DOWNLOAD_AND_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_AND_DEBUG.RESOURCES.COUNT" value="3"/>
+<listAttribute key="FILES.DOWNLOAD_DEBUG"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.TYPE" value="TARGET_WORKING_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.1.VALUE" value=""/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.TYPE" value="TARGET_DOWNLOAD_DIR"/>
+<stringAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.2.VALUE" value=""/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG.RESOURCES.COUNT" value="3"/>
+<intAttribute key="FILES.DOWNLOAD_DEBUG_ANDROID.RESOURCES.COUNT" value="0"/>
+<listAttribute key="FILES.ICE_DEBUG">
+<listEntry value="ON_DEMAND_LOAD"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.0.VALUE" value=""/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.TYPE" value="SYMBOLS_FILE"/>
+<stringAttribute key="FILES.ICE_DEBUG.RESOURCES.1.VALUE" value="${workspace_loc:/ds5_lpc1768/Build/ds5_lpc1768.axf}"/>
+<intAttribute key="FILES.ICE_DEBUG.RESOURCES.COUNT" value="2"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_ETB_TRACE.RESOURCES.COUNT" value="1"/>
+<listAttribute key="FILES.ICE_DEBUG_WITH_TRACE">
+<listEntry value="ON_DEMAND_LOAD"/>
+<listEntry value="ALSO_LOAD_SYMBOLS"/>
+</listAttribute>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ALSO_LOAD_SYMBOLS" value="false"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.OPTION.ON_DEMAND_LOAD" value="true"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.TYPE" value="APP_ON_HOST_TO_DOWNLOAD"/>
+<stringAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.0.VALUE" value=""/>
+<intAttribute key="FILES.ICE_DEBUG_WITH_TRACE.RESOURCES.COUNT" value="1"/>
+<stringAttribute key="FILES.SELECTED_DEBUG_OPEATION" value="ICE_DEBUG"/>
+<stringAttribute key="HOST_WORKING_DIR" value="${workspace_loc}"/>
+<booleanAttribute key="HOST_WORKING_DIR_USE_DEFAULT" value="true"/>
+<listAttribute key="ITM_CHANNEL_LIST">
+<listEntry value="ITM_CHANNEL_port0"/>
+</listAttribute>
+<booleanAttribute key="ITM_CHANNEL_port0_ENABLED" value="true"/>
+<stringAttribute key="ITM_CHANNEL_port0_FILE" value=""/>
+<stringAttribute key="ITM_CHANNEL_port0_FORMAT" value="raw"/>
+<intAttribute key="ITM_CHANNEL_port0_ID" value="0"/>
+<intAttribute key="ITM_CHANNEL_port0_OUTPUT" value="0"/>
+<booleanAttribute key="KEY_COMMANDS_AFTER_CONNECT" value="true"/>
+<stringAttribute key="KEY_COMMANDS_AFTER_CONNECT_TEXT" value="interrupt&#13;&#10;set $PC=Reset_Handler&#13;&#10;"/>
+<booleanAttribute key="RSE_USE_HOSTNAME" value="true"/>
+<stringAttribute key="TCP_DISABLE_EXTENDED_MODE" value="true"/>
+<booleanAttribute key="TCP_KILL_ON_EXIT" value="false"/>
+<booleanAttribute key="VFS_ENABLED" value="true"/>
+<stringAttribute key="VFS_LOCAL_DIR" value="${workspace_loc}"/>
+<stringAttribute key="VFS_REMOTE_MOUNT" value="/writeable"/>
+<stringAttribute key="breakpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;breakpoints order=&quot;ALPHA&quot;&gt;&#13;&#10;&lt;/breakpoints&gt;&#13;&#10;"/>
+<stringAttribute key="config_db_activity_name" value="Debug Cortex-M3 via VSTREAM"/>
+<stringAttribute key="config_db_connection_keys" value="rvi_address config_file TCP_KILL_ON_EXIT TCP_DISABLE_EXTENDED_MODE"/>
+<stringAttribute key="config_db_connection_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_platform_name" value="MBED - LPC1768"/>
+<stringAttribute key="config_db_project_type" value="Bare Metal Debug"/>
+<stringAttribute key="config_db_project_type_id" value="BARE_METAL"/>
+<stringAttribute key="config_file" value="CDB://mbed_dap.rvc"/>
+<booleanAttribute key="connectOnly" value="true"/>
+<stringAttribute key="dtsl_options_file" value="default"/>
+<booleanAttribute key="linuxOS" value="false"/>
+<stringAttribute key="rddi_type" value="rddi-debug-rvi"/>
+<booleanAttribute key="runAfterConnect" value="false"/>
+<stringAttribute key="rvi_address" value="TCP:E106295"/>
+<stringAttribute key="watchpoints" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;US-ASCII&quot; ?&gt;&#13;&#10;&lt;watchpoint&gt;&#13;&#10;&lt;/watchpoint&gt;&#13;&#10;"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/ds5_5_ublox_c027.project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}_ds5_lpc1768</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/ds5_lpc1768/Build}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/emblocks.eix.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Project emblocks_ix="1.0.0" name="{{name}}">
+    <Target name="{{name}}" target="{{target}}">
+        <Source name="mbed.org" version="1.0.0">
+            <Toolchain name="{{toolchain}}"/>
+            <CC>
+                {% for s in cc_org %}<Switch name="{{s}}"/>
+                {% endfor %}
+            </CC>
+            <CPPC>
+                {% for s in cppc_org %}<Switch name="{{s}}"/>
+                {% endfor %}
+            </CPPC>
+            <Symbols>
+                {% for s in symbols %}<Symbol name="{{s}}"/>
+                {% endfor %}
+            </Symbols>
+            <LD>
+                {% for s in ld_org %}<Switch name="{{s}}"/>
+                {% endfor %}
+            </LD>
+            <Addobjects>
+                {% for s in object_files %}<Addobject name="{{s}}"/>
+                {% endfor %}
+            </Addobjects>
+            <Syslibs>
+                {% for s in sys_libs %}<Library name="{{s}}"/>
+                {% endfor %}
+            </Syslibs>
+            <Scriptfile path="{{script_file}}"/>
+        </Source>
+        <Assembler>
+        </Assembler>
+        <Compiler>
+            <Includepaths>
+                {% for s in include_paths %}<Includepath path="{{s}}"/>
+                {% endfor %}
+            </Includepaths>
+            <Symbols>
+            </Symbols>
+        </Compiler>
+        <Linker>
+            <Libraries>
+                {% for s in libraries %}<Library name="{{s}}"/>
+                {% endfor %}
+            </Libraries>
+            <Librarypaths>
+                {% for s in library_paths %}<Librarypath path="{{s}}"/>
+                {% endfor %}
+            </Librarypaths>
+        </Linker>
+        <Files>
+            {% for f in source_files %}<File  name="{{f.name}}" type="{{f.type}}"/>
+            {% endfor %}
+        </Files>
+    </Target>
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/emblocks.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,78 @@
+"""
+mbed SDK
+Copyright (c) 2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import splitext, basename
+from tools.targets import TARGETS
+
+# filter all the GCC_ARM targets out of the target list
+gccTargets = []
+for t in TARGETS:
+    if 'GCC_ARM' in t.supported_toolchains:
+        gccTargets.append(t.name)
+
+class IntermediateFile(Exporter):
+    NAME = 'EmBlocks'
+    TOOLCHAIN = 'GCC_ARM'
+
+    # we support all GCC targets (is handled on IDE side)
+    TARGETS = gccTargets
+
+    FILE_TYPES = {
+        'headers': 'h',
+        'c_sources': 'c',
+        's_sources': 'a',
+        'cpp_sources': 'cpp'
+    }
+
+
+    def generate(self):
+        self.resources.win_to_unix()
+        source_files = []
+        for r_type, n in IntermediateFile.FILE_TYPES.iteritems():
+            for file in getattr(self.resources, r_type):
+                source_files.append({
+                    'name': file, 'type': n
+                })
+
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+
+
+        if self.resources.linker_script is None:
+            self.resources.linker_script = ''
+
+        ctx = {
+            'name': self.program_name,
+            'target': self.target,
+            'toolchain': self.toolchain.name,
+            'source_files': source_files,
+            'include_paths': self.resources.inc_dirs,
+            'script_file': self.resources.linker_script,
+            'library_paths': self.resources.lib_dirs,
+            'libraries': libraries,
+            'symbols': self.get_symbols(),
+            'object_files': self.resources.objects,
+            'sys_libs': self.toolchain.sys_libs,
+            'cc_org': self.toolchain.cc[1:],
+            'ld_org': self.toolchain.ld[1:],
+            'cppc_org': self.toolchain.cppc[1:]
+        }
+
+        # EmBlocks intermediate file template
+        self.gen_file('emblocks.eix.tmpl', ctx, '%s.eix' % self.program_name)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/exporters.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,193 @@
+"""Just a template for subclassing"""
+import uuid, shutil, os, logging, fnmatch
+from os import walk, remove
+from os.path import join, dirname, isdir, split
+from copy import copy
+from jinja2 import Template, FileSystemLoader
+from jinja2.environment import Environment
+from contextlib import closing
+from zipfile import ZipFile, ZIP_DEFLATED
+
+from tools.utils import mkdir
+from tools.toolchains import TOOLCHAIN_CLASSES
+from tools.targets import TARGET_MAP
+
+from project_generator.generate import Generator
+from project_generator.project import Project
+from project_generator.settings import ProjectSettings
+
+class OldLibrariesException(Exception): pass
+
+class Exporter(object):
+    TEMPLATE_DIR = dirname(__file__)
+    DOT_IN_RELATIVE_PATH = False
+
+    def __init__(self, target, inputDir, program_name, build_url_resolver, extra_symbols=None):
+        self.inputDir = inputDir
+        self.target = target
+        self.program_name = program_name
+        self.toolchain = TOOLCHAIN_CLASSES[self.get_toolchain()](TARGET_MAP[target])
+        self.build_url_resolver = build_url_resolver
+        jinja_loader = FileSystemLoader(os.path.dirname(os.path.abspath(__file__)))
+        self.jinja_environment = Environment(loader=jinja_loader)
+        self.extra_symbols = extra_symbols
+
+    def get_toolchain(self):
+        return self.TOOLCHAIN
+
+    def __scan_and_copy(self, src_path, trg_path):
+        resources = self.toolchain.scan_resources(src_path)
+
+        for r_type in ['headers', 's_sources', 'c_sources', 'cpp_sources',
+            'objects', 'libraries', 'linker_script',
+            'lib_builds', 'lib_refs', 'repo_files', 'hex_files', 'bin_files']:
+            r = getattr(resources, r_type)
+            if r:
+                self.toolchain.copy_files(r, trg_path, rel_path=src_path)
+        return resources
+
+    @staticmethod
+    def _get_dir_grouped_files(files):
+        """ Get grouped files based on the dirname """
+        files_grouped = {}
+        for file in files:
+            rel_path = os.path.relpath(file, os.getcwd())
+            dir_path = os.path.dirname(rel_path)
+            if dir_path == '':
+                # all files within the current dir go into Source_Files
+                dir_path = 'Source_Files'
+            if not dir_path in files_grouped.keys():
+                files_grouped[dir_path] = []
+            files_grouped[dir_path].append(file)
+        return files_grouped
+
+    def progen_get_project_data(self):
+        """ Get ProGen project data  """
+        # provide default data, some tools don't require any additional
+        # tool specific settings
+        code_files = []
+        for r_type in ['c_sources', 'cpp_sources', 's_sources']:
+            for file in getattr(self.resources, r_type):
+                code_files.append(file)
+
+        sources_files = code_files + self.resources.hex_files + self.resources.objects + \
+            self.resources.libraries
+        sources_grouped = Exporter._get_dir_grouped_files(sources_files)
+        headers_grouped = Exporter._get_dir_grouped_files(self.resources.headers)
+
+        project_data = {
+            'common': {
+                'sources': sources_grouped,
+                'includes': headers_grouped,
+                'build_dir':'.build',
+                'target': [TARGET_MAP[self.target].progen['target']],
+                'macros': self.get_symbols(),
+                'export_dir': [self.inputDir],
+                'linker_file': [self.resources.linker_script],
+            }
+        }
+        return project_data
+
+    def progen_gen_file(self, tool_name, project_data):
+        """" Generate project using ProGen Project API """
+        settings = ProjectSettings()
+        project = Project(self.program_name, [project_data], settings)
+        # TODO: Fix this, the inc_dirs are not valid (our scripts copy files), therefore progen
+        # thinks it is not dict but a file, and adds them to workspace.
+        project.project['common']['include_paths'] = self.resources.inc_dirs
+        project.generate(tool_name, copied=True)
+
+    def __scan_all(self, path):
+        resources = []
+
+        for root, dirs, files in walk(path):
+            for d in copy(dirs):
+                if d == '.' or d == '..':
+                    dirs.remove(d)
+
+            for file in files:
+                file_path = join(root, file)
+                resources.append(file_path)
+
+        return resources
+
+    def scan_and_copy_resources(self, prj_path, trg_path, relative=False):
+        # Copy only the file for the required target and toolchain
+        lib_builds = []
+        for src in ['lib', 'src']:
+            resources = self.__scan_and_copy(join(prj_path, src), trg_path)
+            lib_builds.extend(resources.lib_builds)
+
+            # The repository files
+            for repo_dir in resources.repo_dirs:
+                repo_files = self.__scan_all(repo_dir)
+                self.toolchain.copy_files(repo_files, trg_path, rel_path=join(prj_path, src))
+
+        # The libraries builds
+        for bld in lib_builds:
+            build_url = open(bld).read().strip()
+            lib_data = self.build_url_resolver(build_url)
+            lib_path = lib_data['path'].rstrip('\\/')
+            self.__scan_and_copy(lib_path, join(trg_path, lib_data['name']))
+
+            # Create .hg dir in mbed build dir so it's ignored when versioning
+            hgdir = join(trg_path, lib_data['name'], '.hg')
+            mkdir(hgdir)
+            fhandle = file(join(hgdir, 'keep.me'), 'a')
+            fhandle.close()
+
+        if not relative:
+            # Final scan of the actual exported resources
+            self.resources = self.toolchain.scan_resources(trg_path)
+            self.resources.relative_to(trg_path, self.DOT_IN_RELATIVE_PATH)
+        else:
+            # use the prj_dir (source, not destination)
+            self.resources = self.toolchain.scan_resources(prj_path)
+        # Check the existence of a binary build of the mbed library for the desired target
+        # This prevents exporting the mbed libraries from source
+        # if not self.toolchain.mbed_libs:
+        #    raise OldLibrariesException()
+
+    def gen_file(self, template_file, data, target_file):
+        template_path = join(Exporter.TEMPLATE_DIR, template_file)
+        template = self.jinja_environment.get_template(template_file)
+        target_text = template.render(data)
+
+        target_path = join(self.inputDir, target_file)
+        logging.debug("Generating: %s" % target_path)
+        open(target_path, "w").write(target_text)
+
+    def get_symbols(self, add_extra_symbols=True):
+        """ This function returns symbols which must be exported.
+            Please add / overwrite symbols in each exporter separately
+        """
+        symbols = self.toolchain.get_symbols()
+        # We have extra symbols from e.g. libraries, we want to have them also added to export
+        if add_extra_symbols:
+            if self.extra_symbols is not None:
+                symbols.extend(self.extra_symbols)
+        return symbols
+
+def zip_working_directory_and_clean_up(tempdirectory=None, destination=None, program_name=None, clean=True):
+    uid = str(uuid.uuid4())
+    zipfilename = '%s.zip'%uid
+
+    logging.debug("Zipping up %s to %s" % (tempdirectory,  join(destination, zipfilename)))
+    # make zip
+    def zipdir(basedir, archivename):
+        assert isdir(basedir)
+        fakeroot = program_name + '/'
+        with closing(ZipFile(archivename, "w", ZIP_DEFLATED)) as z:
+            for root, _, files in os.walk(basedir):
+                # NOTE: ignore empty directories
+                for fn in files:
+                    absfn = join(root, fn)
+                    zfn = fakeroot + '/' +  absfn[len(basedir)+len(os.sep):]
+                    z.write(absfn, zfn)
+
+    zipdir(tempdirectory, join(destination, zipfilename))
+
+    if clean:
+        shutil.rmtree(tempdirectory)
+
+    return join(destination, zipfilename)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_arch_ble.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_ARCH_BLE/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_arch_max.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_arch_pro.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_b96b_f446ve.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,105 @@
+# This file was automagically generated by mbed.org. For more information, 
+# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
+
+GCC_BIN = 
+PROJECT = {{name}}
+OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %}
+SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %}
+INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %}
+LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %}
+LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %}
+LINKER_SCRIPT = {{linker_script}}
+{%- block additional_variables -%}{% endblock %}
+
+############################################################################### 
+AS      = $(GCC_BIN)arm-none-eabi-as
+CC      = $(GCC_BIN)arm-none-eabi-gcc
+CPP     = $(GCC_BIN)arm-none-eabi-g++
+LD      = $(GCC_BIN)arm-none-eabi-gcc
+OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
+OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
+SIZE    = $(GCC_BIN)arm-none-eabi-size
+{%- block additional_executables -%}{% endblock %}
+
+{%- block flags -%}
+
+{% block hardfp %} 
+{% if "-mfloat-abi=softfp" in cpu_flags %}
+ifeq ($(HARDFP),1)
+	FLOAT_ABI = hard
+else
+	FLOAT_ABI = softfp
+endif
+{% endif %}
+{%- endblock %}
+
+CPU = {% block cpu %}{% for cf in cpu_flags %}{{cf|replace("-mfloat-abi=softfp","-mfloat-abi=$(FLOAT_ABI)")}} {% endfor %}{% endblock %}
+CC_FLAGS = {% block cc_flags %}$(CPU) -c -g -fno-common -fmessage-length=0 -Wall -Wextra -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP{% endblock %}
+CC_SYMBOLS = {% block cc_symbols %}{% for s in symbols %}-D{{s}} {% endfor %}{% endblock %}
+
+LD_FLAGS = {%- block ld_flags -%}
+{%- if "-mcpu=cortex-m0" in cpu_flags or "-mcpu=cortex-m0plus" in cpu_flags -%}
+{{ ' ' }}$(CPU) -Wl,--gc-sections --specs=nano.specs -Wl,--wrap,main -Wl,-Map=$(PROJECT).map,--cref
+#LD_FLAGS += -u _printf_float -u _scanf_float
+{%- else -%}
+{{ ' ' }}$(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,-Map=$(PROJECT).map,--cref
+{%- endif -%}
+{% endblock %}
+LD_SYS_LIBS = {% block ld_sys_libs %}-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys{% endblock %}
+{% endblock %}
+
+ifeq ($(DEBUG), 1)
+  CC_FLAGS += -DDEBUG -O0
+else
+  CC_FLAGS += -DNDEBUG -Os
+endif
+
+.PHONY: all clean lst size
+
+{% block target_all -%}
+all: $(PROJECT).bin $(PROJECT).hex size
+{% endblock %}
+
+{% block target_clean -%}
+clean:
+	rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)
+{% endblock %}
+
+.asm.o:
+	$(CC) $(CPU) -c -x assembler-with-cpp -o $@ $<
+.s.o:
+	$(CC) $(CPU) -c -x assembler-with-cpp -o $@ $<
+.S.o:
+	$(CC) $(CPU) -c -x assembler-with-cpp -o $@ $<
+
+.c.o:
+	$(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
+
+.cpp.o:
+	$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
+
+
+{% block target_project_elf %}
+$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
+	$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
+{% endblock %}
+
+$(PROJECT).bin: $(PROJECT).elf
+	$(OBJCOPY) -O binary $< $@
+
+$(PROJECT).hex: $(PROJECT).elf
+	@$(OBJCOPY) -O ihex $< $@
+
+$(PROJECT).lst: $(PROJECT).elf
+	@$(OBJDUMP) -Sdh $< > $@
+
+lst: $(PROJECT).lst
+
+size: $(PROJECT).elf
+	$(SIZE) $(PROJECT).elf
+
+DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
+-include $(DEPS)
+
+{% block additional_targets %}{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_delta_dfcm_nnn40.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_NRF51822/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f051r8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f100rb.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f303vc.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f334c8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f401vc.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f407vg.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f429zi.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f469ni.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_f746ng.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_l053c8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_disco_l476vg.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,115 @@
+# This file was automagically generated by mbed.org. For more information,
+# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
+
+GCC_BIN =
+PROJECT = {{name}}
+OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %}
+SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %}
+INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %}
+LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %}
+LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %}
+LINKER_SCRIPT = {{linker_script}}
+
+OUT_DIR = bin
+OBJ_FOLDER = $(strip $(OUT_DIR))/
+
+{%- block additional_variables -%}{% endblock %}
+
+############################################################################### 
+AS      = $(GCC_BIN)arm-none-eabi-as
+CC      = $(GCC_BIN)arm-none-eabi-gcc
+CPP     = $(GCC_BIN)arm-none-eabi-g++
+LD      = $(GCC_BIN)arm-none-eabi-gcc
+OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
+OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
+SIZE    = $(GCC_BIN)arm-none-eabi-size
+{%- block additional_executables -%}{% endblock %}
+
+{%- block flags -%}
+
+{% block hardfp %} 
+{% if "-mfloat-abi=softfp" in cpu_flags %}
+ifeq ($(HARDFP),1)
+	FLOAT_ABI = hard
+else
+	FLOAT_ABI = softfp
+endif
+{% endif %}
+{%- endblock %}
+
+CPU = {% block cpu %}{% for cf in cpu_flags %}{{cf|replace("-mfloat-abi=softfp","-mfloat-abi=$(FLOAT_ABI)")}} {% endfor %}{% endblock %}
+CC_FLAGS = {% block cc_flags %}$(CPU) -c -g -fno-common -fmessage-length=0 -Wall -Wextra -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP{% endblock %}
+CC_SYMBOLS = {% block cc_symbols %}{% for s in symbols %}-D{{s}} {% endfor %}{% endblock %}
+
+ifeq ($(DEBUG), 1)
+  CC_FLAGS += -DDEBUG -O0
+else
+  CC_FLAGS += -DNDEBUG -Os
+endif
+
+LD_FLAGS = {%- block ld_flags -%}
+{%- if "-mcpu=cortex-m0" in cpu_flags or "-mcpu=cortex-m0plus" in cpu_flags -%}
+{{ ' ' }}$(CPU) -Wl,--gc-sections --specs=nano.specs -Wl,--wrap,main -Wl,-Map=$(OBJ_FOLDER)$(PROJECT).map,--cref
+#LD_FLAGS += -u _printf_float -u _scanf_float
+{%- else -%}
+{{ ' ' }}$(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,-Map=$(OBJ_FOLDER)$(PROJECT).map,--cref
+{%- endif -%}
+{% endblock %}
+LD_SYS_LIBS = {% block ld_sys_libs %}-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys{% endblock %}
+{% endblock %}
+
+.PHONY: all clean lst size
+
+{% block target_all -%}
+all: create_outputdir $(OBJ_FOLDER)$(PROJECT).bin $(OBJ_FOLDER)$(PROJECT).hex size
+{% endblock %}
+
+{% block target_create_outputdir -%}
+create_outputdir:
+	$(shell mkdir $(OBJ_FOLDER) 2>/dev/null)
+{% endblock %}
+
+{% block target_clean -%}
+clean:
+	rm -f $(OBJ_FOLDER)$(PROJECT).bin $(OBJ_FOLDER)$(PROJECT).axf $(OBJ_FOLDER)$(PROJECT).hex $(OBJ_FOLDER)$(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)
+{% endblock %}
+
+.s.o:
+	$(AS) $(CPU) -o $@ $<
+
+.c.o:
+	$(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
+
+.cpp.o:
+	$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
+
+
+{% block target_project_axf %}
+$(OBJ_FOLDER)$(PROJECT).axf: $(OBJECTS) $(SYS_OBJECTS)
+	$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
+
+$(OBJ_FOLDER)$(PROJECT).bin: $(OBJ_FOLDER)$(PROJECT).axf
+	@$(OBJCOPY) -O binary $< $@
+
+$(OBJ_FOLDER)$(PROJECT).hex: $(OBJ_FOLDER)$(PROJECT).axf
+	@$(OBJCOPY) -O ihex $< $@
+
+$(OBJ_FOLDER)$(PROJECT).lst: $(OBJ_FOLDER)$(PROJECT).axf
+	@$(OBJDUMP) -Sdh $< > $@
+
+lst: $(OBJ_FOLDER)$(PROJECT).lst
+
+size: $(OBJ_FOLDER)$(PROJECT).axf
+	$(SIZE) $(OBJ_FOLDER)$(PROJECT).axf
+
+DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
+-include $(DEPS)
+
+{% block additional_targets %}{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32gg_stk3700.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_efm32_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32hg_stk3400.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_efm32_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32lg_stk3600.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_efm32_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32pg_stk3401.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_efm32_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32wg_stk3800.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_efm32_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_efm32zg_stk3200.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_efm32_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_hrm1017.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_HRM1017/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_k20d50m.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,4 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block hardfp %}{% endblock %}
+{% block cpu %}-mcpu=cortex-m4 -mthumb{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_k22f.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_k64f.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_kl05z.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_kl25z.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_kl43z.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_kl46z.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc1114.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc11u24.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc11u35_401.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc11u35_501.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc11u37h_401.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc1549.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,11 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc1768.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc2368.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc2460.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc4088.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc4088_dm.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc4330_m4.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc810.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc812.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpc824.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_lpccappuccino.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_max32600mbed.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_maxwsnenv.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_mote_l152rc.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_mts_gambit.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_mts_mdot_f405rg.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_mts_mdot_f411re.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nrf51822.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_NRF51822/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s130_nrf51822_1_0_0/s130_nrf51_1.0.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nrf51_dk.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_NRF51_DK/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nrf51_dongle.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_NRF51822/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f030r8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f031k6.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f042k6.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f070rb.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f072rb.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f091rc.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f103rb.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f302r8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f303k8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f303re.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f334r8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f401re.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f410rb.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f411re.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f446re.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_f746zg.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_l053r8.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_l073rz.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_l152re.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nucleo_l476rg.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_nz32_sc151.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_rblab_blenano.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_RBLAB_BLENANO/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s130_nrf51822_1_0_0/s130_nrf51_1.0.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_rblab_nrf51822.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_RBLAB_NRF51822/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_rz_a1h.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,16 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block cc_flags -%}
+$(CPU) -c -g -fno-common -fmessage-length=0 -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
+CC_FLAGS += -fno-exceptions -fno-builtin -ffunction-sections -fdata-sections -fno-delete-null-pointer-checks -fomit-frame-pointer
+CC_FLAGS += -MMD -MP
+{% endblock %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_samd21g18a.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,72 @@
+# This file was automagically generated by mbed.org. For more information,
+# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
+
+GCC_BIN =
+PROJECT = {{name}}
+OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %}
+SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %}
+INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %}
+LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %}
+LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %}
+LINKER_SCRIPT = {{linker_script}}
+
+###############################################################################
+AS      = $(GCC_BIN)arm-none-eabi-as
+CC      = $(GCC_BIN)arm-none-eabi-gcc
+CPP     = $(GCC_BIN)arm-none-eabi-g++
+LD      = $(GCC_BIN)arm-none-eabi-g++
+OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
+OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
+SIZE 	= $(GCC_BIN)arm-none-eabi-size
+
+CPU = -mcpu=cortex-m0plus -mthumb
+CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer
+CC_FLAGS += -MMD -MP
+CC_SYMBOLS = {% for s in symbols %}-D{{s}} {% endfor %}
+
+LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main
+LD_FLAGS += -Wl,-Map=$(PROJECT).map,--cref
+LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group 
+
+ifeq ($(DEBUG), 1)
+  CC_FLAGS += -DDEBUG -O0
+else
+  CC_FLAGS += -DNDEBUG -Os
+endif
+
+all: $(PROJECT).bin $(PROJECT).hex 
+
+clean:
+	rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)
+
+.s.o:
+	$(AS) $(CPU) -o $@ $<
+
+.c.o:
+	$(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
+
+.cpp.o:
+	$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
+
+
+$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
+	$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
+	$(SIZE) $@
+
+$(PROJECT).bin: $(PROJECT).elf
+	@$(OBJCOPY) -O binary $< $@
+
+$(PROJECT).hex: $(PROJECT).elf
+	@$(OBJCOPY) -O ihex $< $@
+
+$(PROJECT).lst: $(PROJECT).elf
+	@$(OBJDUMP) -Sdh $< > $@
+
+lst: $(PROJECT).lst
+
+size:
+	$(SIZE) $(PROJECT).elf
+
+DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
+-include $(DEPS)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_samd21j18a.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,72 @@
+# This file was automagically generated by mbed.org. For more information,
+# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
+
+GCC_BIN =
+PROJECT = {{name}}
+OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %}
+SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %}
+INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %}
+LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %}
+LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %}
+LINKER_SCRIPT = {{linker_script}}
+
+###############################################################################
+AS      = $(GCC_BIN)arm-none-eabi-as
+CC      = $(GCC_BIN)arm-none-eabi-gcc
+CPP     = $(GCC_BIN)arm-none-eabi-g++
+LD      = $(GCC_BIN)arm-none-eabi-g++
+OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
+OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
+SIZE 	= $(GCC_BIN)arm-none-eabi-size
+
+CPU = -mcpu=cortex-m0plus -mthumb
+CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer
+CC_FLAGS += -MMD -MP
+CC_SYMBOLS = {% for s in symbols %}-D{{s}} {% endfor %}
+
+LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main
+LD_FLAGS += -Wl,-Map=$(PROJECT).map,--cref
+LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group 
+
+ifeq ($(DEBUG), 1)
+  CC_FLAGS += -DDEBUG -O0
+else
+  CC_FLAGS += -DNDEBUG -Os
+endif
+
+all: $(PROJECT).bin $(PROJECT).hex 
+
+clean:
+	rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)
+
+.s.o:
+	$(AS) $(CPU) -o $@ $<
+
+.c.o:
+	$(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
+
+.cpp.o:
+	$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
+
+
+$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
+	$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
+	$(SIZE) $@
+
+$(PROJECT).bin: $(PROJECT).elf
+	@$(OBJCOPY) -O binary $< $@
+
+$(PROJECT).hex: $(PROJECT).elf
+	@$(OBJCOPY) -O ihex $< $@
+
+$(PROJECT).lst: $(PROJECT).elf
+	@$(OBJDUMP) -Sdh $< > $@
+
+lst: $(PROJECT).lst
+
+size:
+	$(SIZE) $(PROJECT).elf
+
+DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
+-include $(DEPS)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_saml21j18a.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,72 @@
+# This file was automagically generated by mbed.org. For more information,
+# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
+
+GCC_BIN =
+PROJECT = {{name}}
+OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %}
+SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %}
+INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %}
+LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %}
+LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %}
+LINKER_SCRIPT = {{linker_script}}
+
+###############################################################################
+AS      = $(GCC_BIN)arm-none-eabi-as
+CC      = $(GCC_BIN)arm-none-eabi-gcc
+CPP     = $(GCC_BIN)arm-none-eabi-g++
+LD      = $(GCC_BIN)arm-none-eabi-g++
+OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
+OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
+SIZE 	= $(GCC_BIN)arm-none-eabi-size
+
+CPU = -mcpu=cortex-m0plus -mthumb
+CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer
+CC_FLAGS += -MMD -MP
+CC_SYMBOLS = {% for s in symbols %}-D{{s}} {% endfor %}
+
+LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main
+LD_FLAGS += -Wl,-Map=$(PROJECT).map,--cref
+LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group 
+
+ifeq ($(DEBUG), 1)
+  CC_FLAGS += -DDEBUG -O0
+else
+  CC_FLAGS += -DNDEBUG -Os
+endif
+
+all: $(PROJECT).bin $(PROJECT).hex 
+
+clean:
+	rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)
+
+.s.o:
+	$(AS) $(CPU) -o $@ $<
+
+.c.o:
+	$(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
+
+.cpp.o:
+	$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
+
+
+$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
+	$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
+	$(SIZE) $@
+
+$(PROJECT).bin: $(PROJECT).elf
+	@$(OBJCOPY) -O binary $< $@
+
+$(PROJECT).hex: $(PROJECT).elf
+	@$(OBJCOPY) -O ihex $< $@
+
+$(PROJECT).lst: $(PROJECT).elf
+	@$(OBJDUMP) -Sdh $< > $@
+
+lst: $(PROJECT).lst
+
+size:
+	$(SIZE) $(PROJECT).elf
+
+DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
+-include $(DEPS)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_samr21g18a.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,72 @@
+# This file was automagically generated by mbed.org. For more information,
+# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
+
+GCC_BIN =
+PROJECT = {{name}}
+OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %}
+SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %}
+INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %}
+LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %}
+LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %}
+LINKER_SCRIPT = {{linker_script}}
+
+###############################################################################
+AS      = $(GCC_BIN)arm-none-eabi-as
+CC      = $(GCC_BIN)arm-none-eabi-gcc
+CPP     = $(GCC_BIN)arm-none-eabi-g++
+LD      = $(GCC_BIN)arm-none-eabi-g++
+OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
+OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
+SIZE 	= $(GCC_BIN)arm-none-eabi-size
+
+CPU = -mcpu=cortex-m0plus -mthumb
+CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer
+CC_FLAGS += -MMD -MP
+CC_SYMBOLS = {% for s in symbols %}-D{{s}} {% endfor %}
+
+LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main
+LD_FLAGS += -Wl,-Map=$(PROJECT).map,--cref
+LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lgcc -Wl,--start-group -lc -lc -lnosys -Wl,--end-group 
+
+ifeq ($(DEBUG), 1)
+  CC_FLAGS += -DDEBUG -O0
+else
+  CC_FLAGS += -DNDEBUG -Os
+endif
+
+all: $(PROJECT).bin $(PROJECT).hex 
+
+clean:
+	rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)
+
+.s.o:
+	$(AS) $(CPU) -o $@ $<
+
+.c.o:
+	$(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
+
+.cpp.o:
+	$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
+
+
+$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
+	$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
+	$(SIZE) $@
+
+$(PROJECT).bin: $(PROJECT).elf
+	@$(OBJCOPY) -O binary $< $@
+
+$(PROJECT).hex: $(PROJECT).elf
+	@$(OBJCOPY) -O ihex $< $@
+
+$(PROJECT).lst: $(PROJECT).elf
+	@$(OBJDUMP) -Sdh $< > $@
+
+lst: $(PROJECT).lst
+
+size:
+	$(SIZE) $(PROJECT).elf
+
+DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
+-include $(DEPS)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_seeed_tiny_ble.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,14 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block additional_variables %}
+SOFTDEVICE = mbed/TARGET_ARCH_BLE/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex
+{% endblock %}
+
+{% block additional_executables %}
+SREC_CAT = srec_cat
+{% endblock %}
+
+{% block additional_targets %}
+merge:
+	$(SREC_CAT) $(SOFTDEVICE) -intel $(PROJECT).hex -intel -o combined.hex -intel --line-length=44
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_ssci824.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,10 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block target_project_elf %}
+{{ super() }}
+	@echo ""
+	@echo "*****"
+	@echo "***** You must modify vector checksum value in *.bin and *.hex files."
+	@echo "*****"
+	@echo ""
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_stm32f407.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_teensy3_1.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,4 @@
+{% extends "gcc_arm_common.tmpl" %}
+
+{% block hardfp %}{% endblock %}
+{% block cpu %}-mcpu=cortex-m4 -mthumb{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gcc_arm_ublox_c027.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1 @@
+{% extends "gcc_arm_common.tmpl" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/gccarm.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,147 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import splitext, basename
+
+
+class GccArm(Exporter):
+    NAME = 'GccArm'
+    TOOLCHAIN = 'GCC_ARM'
+
+    TARGETS = [
+        'LPC1768',
+        'LPC1549',
+        'KL05Z',
+        'KL25Z',
+        'KL43Z',
+        'KL46Z',
+        'K64F',
+        'K22F',
+        'K20D50M',
+        'LPC4088',
+        'LPC4088_DM',
+        'LPC4330_M4',
+        'LPC11U24',
+        'LPC1114',
+        'LPC11U35_401',
+        'LPC11U35_501',
+        'LPC11U37H_401',
+        'LPC810',
+        'LPC812',
+        'LPC824',
+        'SSCI824',
+        'STM32F407',
+        'DISCO_F100RB',
+        'DISCO_F051R8',
+        'DISCO_F407VG',
+        'DISCO_F429ZI',
+        'DISCO_F469NI',
+        'DISCO_F303VC',
+        'DISCO_F746NG',
+        'DISCO_L476VG',
+        'UBLOX_C027',
+        'ARCH_PRO',
+        'NRF51822',
+        'HRM1017',
+        'RBLAB_NRF51822',
+        'RBLAB_BLENANO',
+        'LPC2368',
+        'LPC2460',
+        'LPCCAPPUCCINO',
+        'ARCH_BLE',
+        'MTS_GAMBIT',
+        'ARCH_MAX',
+        'NUCLEO_F401RE',
+        'NUCLEO_F410RB',
+        'NUCLEO_F411RE',
+        'NUCLEO_F446RE',
+        'B96B_F446VE',
+        'ARCH_MAX',
+        'NUCLEO_F030R8',
+        'NUCLEO_F031K6',
+        'NUCLEO_F042K6',
+        'NUCLEO_F070RB',
+        'NUCLEO_F072RB',
+        'NUCLEO_F091RC',
+        'NUCLEO_F103RB',
+        'NUCLEO_F302R8',
+        'NUCLEO_F303K8',
+        'NUCLEO_F303RE',
+        'NUCLEO_F334R8',
+        'NUCLEO_F746ZG',
+        'DISCO_L053C8',
+        'NUCLEO_L053R8',
+        'NUCLEO_L073RZ',
+        'NUCLEO_L476RG',
+        'DISCO_F334C8',
+        'MAX32600MBED',
+        'MAXWSNENV',
+        'MTS_MDOT_F405RG',
+        'MTS_MDOT_F411RE',
+        'NUCLEO_L152RE',
+        'NRF51_DK',
+        'NRF51_DONGLE',
+        'SEEED_TINY_BLE',
+        'DISCO_F401VC',
+        'DELTA_DFCM_NNN40',
+        'RZ_A1H',
+        'MOTE_L152RC',
+        'EFM32WG_STK3800',
+        'EFM32LG_STK3600',
+        'EFM32GG_STK3700',
+        'EFM32ZG_STK3200',
+        'EFM32HG_STK3400',
+        'EFM32PG_STK3401',
+        'NZ32_SC151',
+        'SAMR21G18A',
+        'TEENSY3_1',
+        'SAMD21J18A',
+        'SAMD21G18A',
+        'SAML21J18A',
+    ]
+
+    DOT_IN_RELATIVE_PATH = True
+
+    def generate(self):
+        # "make" wants Unix paths
+        self.resources.win_to_unix()
+
+        to_be_compiled = []
+        for r_type in ['s_sources', 'c_sources', 'cpp_sources']:
+            r = getattr(self.resources, r_type)
+            if r:
+                for source in r:
+                    base, ext = splitext(source)
+                    to_be_compiled.append(base + '.o')
+
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+
+        ctx = {
+            'name': self.program_name,
+            'to_be_compiled': to_be_compiled,
+            'object_files': self.resources.objects,
+            'include_paths': self.resources.inc_dirs,
+            'library_paths': self.resources.lib_dirs,
+            'linker_script': self.resources.linker_script,
+            'libraries': libraries,
+            'symbols': self.get_symbols(),
+            'cpu_flags': self.toolchain.cpu
+        }
+        self.gen_file('gcc_arm_%s.tmpl' % self.target.lower(), ctx, 'Makefile')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/iar.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,152 @@
+"""
+mbed SDK
+Copyright (c) 2011-2015 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import re
+import os
+from project_generator_definitions.definitions import ProGenDef
+
+from tools.export.exporters import Exporter
+from tools.targets import TARGET_MAP, TARGET_NAMES
+
+# If you wish to add a new target, add it to project_generator_definitions, and then
+# define progen_target name in the target class (`` self.progen_target = 'my_target_name' ``)
+class IAREmbeddedWorkbench(Exporter):
+    """
+    Exporter class for IAR Systems. This class uses project generator.
+    """
+    # These 2 are currently for exporters backward compatiblity
+    NAME = 'IAR'
+    TOOLCHAIN = 'IAR'
+    # PROGEN_ACTIVE contains information for exporter scripts that this is using progen
+    PROGEN_ACTIVE = True
+
+    # backward compatibility with our scripts
+    TARGETS = []
+    for target in TARGET_NAMES:
+        try:
+            if (ProGenDef('iar').is_supported(str(TARGET_MAP[target])) or
+                ProGenDef('iar').is_supported(TARGET_MAP[target].progen['target'])):
+                TARGETS.append(target)
+        except AttributeError:
+            # target is not supported yet
+            continue
+
+    def generate(self):
+        """ Generates the project files """
+        project_data = self.progen_get_project_data()
+        tool_specific = {}
+        # Expand tool specific settings by IAR specific settings which are required
+        try:
+            if TARGET_MAP[self.target].progen['iar']['template']:
+                tool_specific['iar'] = TARGET_MAP[self.target].progen['iar']
+        except KeyError:
+            # use default template
+            # by the mbed projects
+            tool_specific['iar'] = {
+                    # We currently don't use misc, template sets those for us
+                    # 'misc': {
+                    #     'cxx_flags': ['--no_rtti', '--no_exceptions'],
+                    #     'c_flags': ['--diag_suppress=Pa050,Pa084,Pa093,Pa082'],
+                    #     'ld_flags': ['--skip_dynamic_initialization'],
+                    # },
+                    'template': [os.path.join(os.path.dirname(__file__),  'iar_template.ewp.tmpl')],
+            }
+
+        project_data['tool_specific'] = {}
+        project_data['tool_specific'].update(tool_specific)
+        project_data['common']['build_dir'] = os.path.join(project_data['common']['build_dir'], 'iar_arm')
+        self.progen_gen_file('iar_arm', project_data)
+
+# Currently not used, we should reuse folder_name to create virtual folders
+class IarFolder():
+    """
+    This is a recursive folder object.
+    To present the folder structure in the IDE as it is presented on the disk.
+    This can be used for uvision as well if you replace the __str__ method.
+    Example:
+    files: ./main.cpp, ./apis/I2C.h, ./mbed/common/I2C.cpp
+    in the project this would look like:
+    main.cpp
+    common/I2C.cpp
+    input:
+    folder_level : folder path to current folder
+    folder_name : name of current folder
+    source_files : list of source_files (all must be in same directory)
+    """
+    def __init__(self, folder_level, folder_name, source_files):
+        self.folder_level = folder_level
+        self.folder_name = folder_name
+        self.source_files = source_files
+        self.sub_folders = {}
+
+    def __str__(self):
+        """
+        converts the folder structue to IAR project format.
+        """
+        group_start = ""
+        group_end = ""
+        if self.folder_name != "":
+            group_start = "<group>\n<name>%s</name>\n" %(self.folder_name)
+            group_end = "</group>\n"
+
+        str_content = group_start
+        #Add files in current folder
+        if self.source_files:
+            for src in self.source_files:
+                str_content += "<file>\n<name>$PROJ_DIR$/%s</name>\n</file>\n" % src
+        #Add sub folders
+        if self.sub_folders:
+            for folder_name in self.sub_folders.iterkeys():
+                str_content += self.sub_folders[folder_name].__str__()
+
+        str_content += group_end
+        return str_content
+
+    def insert_file(self, source_input):
+        """
+        Inserts a source file into the folder tree
+        """
+        if self.source_files:
+            #All source_files in a IarFolder must be in same directory.
+            dir_sources = IarFolder.get_directory(self.source_files[0])
+            #Check if sources are already at their deepest level.
+            if not self.folder_level == dir_sources:
+                _reg_exp = r"^" + re.escape(self.folder_level) + r"[/\\]?([^/\\]+)"
+                folder_name = re.match(_reg_exp, dir_sources).group(1)
+                self.sub_folders[folder_name] = IarFolder(os.path.join(self.folder_level, folder_name), folder_name, self.source_files)
+                self.source_files = []
+
+        dir_input = IarFolder.get_directory(source_input)
+        if dir_input == self.folder_level:
+            self.source_files.append(source_input)
+        else:
+            _reg_exp = r"^" + re.escape(self.folder_level) + r"[/\\]?([^/\\]+)"
+            folder_name = re.match(_reg_exp, dir_input).group(1)
+            if self.sub_folders.has_key(folder_name):
+                self.sub_folders[folder_name].insert_file(source_input)
+            else:
+                if self.folder_level == "":
+                    #Top level exception
+                    self.sub_folders[folder_name] = IarFolder(folder_name, folder_name, [source_input])
+                else:
+                    self.sub_folders[folder_name] = IarFolder(os.path.join(self.folder_level, folder_name), folder_name, [source_input])
+
+    @staticmethod
+    def get_directory(file_path):
+        """
+        Returns the directory of the file
+        """
+        return os.path.dirname(file_path)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/iar_nucleo_f746zg.ewp.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1917 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>24</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>5.10.0.159</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>7.40.3.8937</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F746ZG	ST STM32F746ZG</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>22</version>
+          <state>41</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibThreads</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CoreVariant</name>
+          <version>22</version>
+          <state>41</state>
+        </option>
+        <option>
+          <name>GFPUDeviceSlave</name>
+          <state>STM32F746ZG	ST STM32F746ZG</state>
+        </option>
+        <option>
+          <name>FPU2</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>NrRegs</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>NEON</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave2</name>
+          <version>22</version>
+          <state>41</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>31</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+            <state></state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state>Pa050,Pa084,Pa093,Pa082</state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>00000000</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCNoLiteralPool</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategySlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCGuardCalls</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>9</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AsmNoLiteralPool</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>3</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>name.bin</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+        <hasPrio>0</hasPrio>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>16</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cpp.out</state>
+        </option>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--skip_dynamic_initialization</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkThreadsSlave</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>24</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Release\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Release\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Release\List</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>5.10.0.159</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>7.40.3.8937</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>Default	None</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>22</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibThreads</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CoreVariant</name>
+          <version>22</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GFPUDeviceSlave</name>
+          <state>Default	None</state>
+        </option>
+        <option>
+          <name>FPU2</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NrRegs</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NEON</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave2</name>
+          <version>22</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>31</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+          <state>NDEBUG</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>11111110</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCNoLiteralPool</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategySlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCGuardCalls</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>9</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AsmNoLiteralPool</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>5.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+        <hasPrio>0</hasPrio>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>16</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cpp.out</state>
+        </option>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\generic.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkThreadsSlave</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+</project>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/iar_rz_a1h.ewp.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,925 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>19</version>
+          <state>37</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>3</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>5.10.0.159</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.30.6.53380</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>R7S721001	Renesas R7S721001</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>19</version>
+          <state>37</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>19</version>
+          <state>37</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          
+            <state></state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state>Pa050,Pa084,Pa093,Pa082</state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1111111</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+        
+          <state></state>
+        
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>MBED_10.bin</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>14</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cpp.out</state>
+        </option>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\mbed\TARGET_RZ_A1H\TOOLCHAIN_IAR\MBRZA1H.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--skip_dynamic_initialization</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlgo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <file>
+<name>$PROJ_DIR$/main.cpp</name>
+</file>
+<group>
+<name>env</name>
+<file>
+<name>$PROJ_DIR$/env\test_env.cpp</name>
+</file>
+</group>
+
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/iar_template.ewp.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,995 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>22</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>35</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Full formatting.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>7.10.1.6733</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>7.10.1.6733</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>MKL25Z128xxx4	Freescale MKL25Z128xxx4</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>35</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>35</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibThreads</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>30</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          
+            <state>TARGET_FF_ARDUINO</state>
+          
+            <state>TARGET_KLXX</state>
+          
+            <state>TARGET_KL25Z</state>
+          
+            <state>TARGET_CORTEX_M</state>
+          
+            <state>TARGET_LIKE_MBED</state>
+          
+            <state>TARGET_M0P</state>
+          
+            <state>TARGET_Freescale</state>
+          
+            <state>__MBED__=1</state>
+          
+            <state>__CORTEX_M0PLUS</state>
+          
+            <state>TOOLCHAIN_IAR</state>
+          
+            <state>MBED_BUILD_TIMESTAMP=1456248884.8</state>
+          
+            <state>TARGET_LIKE_CORTEX_M0</state>
+          
+            <state>ARM_MATH_CM0PLUS</state>
+          
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state>Pa050,Pa084,Pa093,Pa082</state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>11111110</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+        
+          <state>$PROJ_DIR$\.</state>
+        
+          <state>$PROJ_DIR$\env</state>
+        
+          <state>$PROJ_DIR$\mbed</state>
+        
+          <state>$PROJ_DIR$\mbed\TARGET_KL25Z</state>
+        
+          <state>$PROJ_DIR$\mbed\TARGET_KL25Z\TARGET_Freescale</state>
+        
+          <state>$PROJ_DIR$\mbed\TARGET_KL25Z\TARGET_Freescale\TARGET_KLXX</state>
+        
+          <state>$PROJ_DIR$\mbed\TARGET_KL25Z\TARGET_Freescale\TARGET_KLXX\TARGET_KL25Z</state>
+        
+          <state>$PROJ_DIR$\mbed\TARGET_KL25Z\TOOLCHAIN_IAR</state>
+        
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCNoLiteralPool</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategySlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>9</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AsmNoLiteralPool</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>MBED_12.bin</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>16</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cpp.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\mbed\TARGET_KL25Z\TOOLCHAIN_IAR\MKL25Z4.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--skip_dynamic_initialization</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>        
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkThreadsSlave</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <file>
+<name>$PROJ_DIR$/main.cpp</name>
+</file>
+<group>
+<name>env</name>
+<file>
+<name>$PROJ_DIR$/env\test_env.cpp</name>
+</file>
+</group>
+
+</project>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/kds.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,46 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import splitext, basename
+
+
+class KDS(Exporter):
+    NAME = 'Kinetis Design Studio'
+    TOOLCHAIN = 'GCC_ARM'
+
+    TARGETS = [
+        'K64F',
+        'K22F',
+    ]
+
+    def generate(self):
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+
+        ctx = {
+            'name': self.program_name,
+            'include_paths': self.resources.inc_dirs,
+            'linker_script': self.resources.linker_script,
+            'object_files': self.resources.objects,
+            'libraries': libraries,
+            'symbols': self.get_symbols()
+        }
+        self.gen_file('kds_%s_project.tmpl' % self.target.lower(), ctx, '.project')
+        self.gen_file('kds_%s_cproject.tmpl' % self.target.lower(), ctx, '.cproject')
+        self.gen_file('kds_launch.tmpl', ctx, '%s.launch' % self.program_name)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/kds_k22f_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026" name="Debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
+					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026." name="/" resourcePath="">
+						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.1221610645" name="Cross ARM GCC" nonInternalBuilderId="ilg.gnuarmeclipse.managedbuild.cross.builder" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1271983492" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1681866628" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1550050553" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2126138943" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1492840277" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1058622512" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1583945235" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.gdb" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1089911925" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.77844367" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.softfp" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.353876552" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1308049896" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.560926624" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.660978974" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1169416449" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1545312724" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.2106299868" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.880150025" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1449434602" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1638755745" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1500383066" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1422858690" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.1453349108" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.918192766" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.845411621" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" value="" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.2076910080" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.1002876099" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.371856963" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2090214221" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/{{name}}}/Debug" cleanBuildTarget="clean" command="${cross_make}" id="org.eclipse.cdt.build.core.internal.builder.2045347460" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.774448198" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.874144438" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1457752231" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1240528565" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.645447748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.655157579" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1298012181" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.26057600" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" valueType="definedSymbols">
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1551083554" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1601945676" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions.73762833" name="Do not use exceptions (-fno-exceptions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti.1541205451" name="Do not use RTTI (-fno-rtti)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.2072412260" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.default" valueType="enumerated"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1882430856" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.339583643" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1999194416" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
+					<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.344980185" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.727573047" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
+								{% if libraries %}
+									{% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                {% endif %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.828171482" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
+									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/{{linker_script}}}"/>
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.310068762" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
+                                    {% for lib in libraries %}
+                                    <listOptionValue builtIn="false" value="{{lib}}"/>
+                                    {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.460736806" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                <option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.30848869" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-specs=nosys.specs" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1081415325" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1216251638" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1820796904" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.70927688" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.721327636" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.625552450" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.263758416" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1024069673" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1043375284" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1671601569" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.171400698" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1102568395" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787" name="Release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
+					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787." name="/" resourcePath="">
+						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.765163102" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1271983492" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1681866628" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1550050553" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2126138943" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1492840277" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1058622512" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1583945235" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.gdb" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1089911925" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.77844367" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.softfp" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.353876552" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1308049896" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.560926624" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.660978974" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1169416449" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1545312724" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.2106299868" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.880150025" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1449434602" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1638755745" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1500383066" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1422858690" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.1453349108" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.918192766" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.845411621" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" value="" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.2076910080" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.1002876099" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.371856963" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2090214221" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/{{name}}}/Debug" cleanBuildTarget="clean" command="${cross_make}" id="org.eclipse.cdt.build.core.internal.builder.2045347460" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.774448198" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.874144438" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1457752231" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
+	                              {% for s in symbols %}
+	                                <listOptionValue builtIn="false" value="{{s}}"/>
+	                              {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1240528565" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
+	                                {% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.645447748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.655157579" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1298012181" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
+	                                {% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.26057600" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" valueType="definedSymbols">
+	                              {% for s in symbols %}
+	                                <listOptionValue builtIn="false" value="{{s}}"/>
+	                              {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1551083554" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" valueType="includePath">
+	                                {% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1601945676" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
+	                              {% for s in symbols %}
+	                                <listOptionValue builtIn="false" value="{{s}}"/>
+	                              {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions.73762833" name="Do not use exceptions (-fno-exceptions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti.1541205451" name="Do not use RTTI (-fno-rtti)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.2072412260" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.default" valueType="enumerated"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1882430856" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.339583643" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1999194416" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
+					<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.344980185" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.727573047" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
+								{% if libraries %}
+									{% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+	                            {% endif %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.828171482" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
+									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/{{linker_script}}}"/>
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.310068762" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
+	                                {% for lib in libraries %}
+	                                <listOptionValue builtIn="false" value="{{lib}}"/>
+	                                {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.460736806" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs" valueType="userObjs">
+	                                {% for path in object_files %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+	                            </option>
+	                            <option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.30848869" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-specs=nosys.specs" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1081415325" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1216251638" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1820796904" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.70927688" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.721327636" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.625552450" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.263758416" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1024069673" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1043375284" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1671601569" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.171400698" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1102568395" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="{{name}}.ilg.gnuarmeclipse.managedbuild.cross.target.elf.829438011" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.307634730;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1070359138">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1300731881;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.690792246">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/kds_k22f_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}</name>
+	<comment>This file was automagically generated by mbed.org. For more information, see http://mbed.org/handbook/Exporting-To-KDS</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/kds_k64f_cproject.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026" name="Debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
+					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026." name="/" resourcePath="">
+						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.1221610645" name="Cross ARM GCC" nonInternalBuilderId="ilg.gnuarmeclipse.managedbuild.cross.builder" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1271983492" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1681866628" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1550050553" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2126138943" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1492840277" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1058622512" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1583945235" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.gdb" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1089911925" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.77844367" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.softfp" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.353876552" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1308049896" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.560926624" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.660978974" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1169416449" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1545312724" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.2106299868" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.880150025" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1449434602" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1638755745" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1500383066" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1422858690" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.1453349108" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.918192766" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.845411621" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" value="" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.2076910080" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.1002876099" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.371856963" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2090214221" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/{{name}}}/Debug" cleanBuildTarget="clean" command="${cross_make}" id="org.eclipse.cdt.build.core.internal.builder.2045347460" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.774448198" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.874144438" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1457752231" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1240528565" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.645447748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.655157579" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1298012181" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.26057600" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" valueType="definedSymbols">
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1551083554" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" valueType="includePath">
+                                    {% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1601945676" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
+                                  {% for s in symbols %}
+                                    <listOptionValue builtIn="false" value="{{s}}"/>
+                                  {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions.73762833" name="Do not use exceptions (-fno-exceptions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti.1541205451" name="Do not use RTTI (-fno-rtti)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.2072412260" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.default" valueType="enumerated"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1882430856" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.339583643" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1999194416" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
+					<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.344980185" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.727573047" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
+								{% if libraries %}
+									{% for path in include_paths %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                {% endif %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.828171482" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
+									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/{{linker_script}}}"/>
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.310068762" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
+                                    {% for lib in libraries %}
+                                    <listOptionValue builtIn="false" value="{{lib}}"/>
+                                    {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.460736806" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs" valueType="userObjs">
+                                    {% for path in object_files %}
+                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+                                    {% endfor %}
+                                </option>
+                                <option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.30848869" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-specs=nosys.specs" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1081415325" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1216251638" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1820796904" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.70927688" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.721327636" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.625552450" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.263758416" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1024069673" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1043375284" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1671601569" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.171400698" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1102568395" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787" name="Release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
+					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787." name="/" resourcePath="">
+						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.765163102" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1271983492" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1681866628" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1550050553" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2126138943" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1492840277" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1058622512" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1583945235" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.gdb" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1089911925" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.77844367" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.softfp" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.353876552" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1308049896" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.560926624" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.660978974" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1169416449" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1545312724" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.2106299868" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.880150025" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1449434602" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1638755745" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1500383066" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1422858690" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.1453349108" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.918192766" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.845411621" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" value="" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.2076910080" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.1002876099" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.371856963" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2090214221" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
+							<builder autoBuildTarget="all" buildPath="${workspace_loc:/{{name}}}/Debug" cleanBuildTarget="clean" command="${cross_make}" id="org.eclipse.cdt.build.core.internal.builder.2045347460" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.774448198" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.874144438" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1457752231" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
+	                              {% for s in symbols %}
+	                                <listOptionValue builtIn="false" value="{{s}}"/>
+	                              {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1240528565" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
+	                                {% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.645447748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.655157579" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1298012181" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
+	                                {% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.26057600" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" valueType="definedSymbols">
+	                              {% for s in symbols %}
+	                                <listOptionValue builtIn="false" value="{{s}}"/>
+	                              {% endfor %}
+								</option>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1551083554" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" valueType="includePath">
+	                                {% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1601945676" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
+	                              {% for s in symbols %}
+	                                <listOptionValue builtIn="false" value="{{s}}"/>
+	                              {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions.73762833" name="Do not use exceptions (-fno-exceptions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti.1541205451" name="Do not use RTTI (-fno-rtti)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti" useByScannerDiscovery="true" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.2072412260" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.default" valueType="enumerated"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1882430856" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.339583643" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1999194416" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
+					<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.344980185" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.727573047" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
+								{% if libraries %}
+									{% for path in include_paths %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+	                            {% endif %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.828171482" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
+									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/{{linker_script}}}"/>
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.310068762" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
+	                                {% for lib in libraries %}
+	                                <listOptionValue builtIn="false" value="{{lib}}"/>
+	                                {% endfor %}
+								</option>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.460736806" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs" valueType="userObjs">
+	                                {% for path in object_files %}
+	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+	                                {% endfor %}
+	                            </option>
+	                            <option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.30848869" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-specs=nosys.specs" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1081415325" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1216251638" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1820796904" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.70927688" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.721327636" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.625552450" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.263758416" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1024069673" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1043375284" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1671601569" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.171400698" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1102568395" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="{{name}}.ilg.gnuarmeclipse.managedbuild.cross.target.elf.829438011" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.307634730;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1070359138">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1300731881;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.690792246">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/kds_k64f_project.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}</name>
+	<comment>This file was automagically generated by mbed.org. For more information, see http://mbed.org/handbook/Exporting-To-KDS</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/kds_launch.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="ilg.gnuarmeclipse.debug.gdbjtag.openocd.launchConfigurationType">
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doConnectToRunning" value="false"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doFirstReset" value="true"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doSecondReset" value="true"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doStartGdbServer" value="true"/>
+<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.enableSemihosting" value="false"/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.firstResetType" value="init"/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off"/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbClientOtherOptions" value=""/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbServerExecutable" value="${openocd_path}/openocd"/>
+<intAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333"/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbServerLog" value=""/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbServerOther" value="-f kinetis.cfg"/>
+<intAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444"/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.otherInitCommands" value=""/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.otherRunCommands" value=""/>
+<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.secondResetType" value="halt"/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU ARM OpenOCD"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
+<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
+<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard (Windows)"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${cross_prefix}gdb${cross_suffix}"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
+<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="1"/>
+<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug\{{name}}.elf"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="{{name}}"/>
+<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/{{name}}"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#13;&#10;"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
+</launchConfiguration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/simplicityv3.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,191 @@
+"""
+mbed SDK
+Copyright (c) 2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import split,splitext, basename
+
+class Folder:
+    def __init__(self, name):
+        self.name = name
+        self.children = []
+
+    def contains(self, folderName):
+        for child in self.children:
+            if child.name == folderName:
+                return True
+        return False
+
+    def __str__(self):
+        retval = self.name + " "
+        if len(self.children) > 0:
+            retval += "[ "
+            for child in self.children:
+                retval += child.__str__()
+            retval += " ]"
+
+        return retval
+
+    def findChild(self, folderName):
+        for child in self.children:
+            if child.name == folderName:
+                return child
+        return None
+
+    def addChild(self, folderName):
+        if folderName == '':
+            return None
+
+        if not self.contains(folderName):
+            self.children.append(Folder(folderName))
+
+        return self.findChild(folderName)
+
+class SimplicityV3(Exporter):
+    NAME = 'SimplicityV3'
+    TOOLCHAIN = 'GCC_ARM'
+
+    TARGETS = [
+        'EFM32GG_STK3700',
+        'EFM32ZG_STK3200',
+        'EFM32LG_STK3600',
+        'EFM32WG_STK3800',
+        'EFM32HG_STK3400',
+        'EFM32PG_STK3401'
+    ]
+
+    PARTS = {
+        'EFM32GG_STK3700': 'com.silabs.mcu.si32.efm32.efm32gg.efm32gg990f1024',
+        'EFM32ZG_STK3200': 'com.silabs.mcu.si32.efm32.efm32zg.efm32zg222f32',
+        'EFM32LG_STK3600': 'com.silabs.mcu.si32.efm32.efm32lg.efm32lg990f256',
+        'EFM32WG_STK3800': 'com.silabs.mcu.si32.efm32.efm32wg.efm32wg990f256',
+        'EFM32HG_STK3400': 'com.silabs.mcu.si32.efm32.efm32hg.efm32hg322f64',
+        'EFM32PG_STK3401': 'com.silabs.mcu.si32.efm32.efm32pg1b.efm32pg1b200f256gm48'
+    }
+
+    KITS = {
+        'EFM32GG_STK3700': 'com.silabs.kit.si32.efm32.efm32gg.stk3700',
+        'EFM32ZG_STK3200': 'com.silabs.kit.si32.efm32.efm32zg.stk3200',
+        'EFM32LG_STK3600': 'com.silabs.kit.si32.efm32.efm32lg.stk3600',
+        'EFM32WG_STK3800': 'com.silabs.kit.si32.efm32.efm32wg.stk3800',
+        'EFM32HG_STK3400': 'com.silabs.kit.si32.efm32.efm32hg.slstk3400a',
+		'EFM32PG_STK3401': 'com.silabs.kit.si32.efm32.efm32pg.slstk3401a'
+    }
+
+    FILE_TYPES = {
+        'c_sources':'1',
+        'cpp_sources':'1',
+        's_sources':'1'
+    }
+
+    EXCLUDED_LIBS = [
+        'm',
+        'c',
+        'gcc',
+        'nosys',
+        'supc++',
+        'stdc++'
+    ]
+
+    DOT_IN_RELATIVE_PATH = False
+
+    orderedPaths = Folder("Root")
+
+    def check_and_add_path(self, path):
+        levels = path.split('/')
+        base = self.orderedPaths
+        for level in levels:
+            if base.contains(level):
+                base = base.findChild(level)
+            else:
+                base.addChild(level)
+                base = base.findChild(level)
+
+
+    def generate(self):
+        # "make" wants Unix paths
+        self.resources.win_to_unix()
+
+        main_files = []
+
+        EXCLUDED_LIBS = [
+            'm',
+            'c',
+            'gcc',
+            'nosys',
+            'supc++',
+            'stdc++'
+        ]
+
+        for r_type in ['s_sources', 'c_sources', 'cpp_sources']:
+            r = getattr(self.resources, r_type)
+            if r:
+                for source in r:
+                    self.check_and_add_path(split(source)[0])
+
+                    if not ('/' in source):
+                        main_files.append(source)
+
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            if l[3:] not in EXCLUDED_LIBS:
+                libraries.append(l[3:])
+
+        defines = []
+        for define in self.get_symbols():
+            if '=' in define:
+                keyval = define.split('=')
+                defines.append( (keyval[0], keyval[1]) )
+            else:
+                defines.append( (define, '') )
+
+        self.check_and_add_path(split(self.resources.linker_script)[0])
+
+        ctx = {
+            'name': self.program_name,
+            'main_files': main_files,
+            'recursiveFolders': self.orderedPaths,
+            'object_files': self.resources.objects,
+            'include_paths': self.resources.inc_dirs,
+            'library_paths': self.resources.lib_dirs,
+            'linker_script': self.resources.linker_script,
+            'libraries': libraries,
+            'symbols': self.get_symbols(),
+            'defines': defines,
+            'part': self.PARTS[self.target],
+            'kit': self.KITS[self.target],
+            'loopcount': 0
+        }
+
+        ## Strip main folder from include paths because ssproj is not capable of handling it
+        if '.' in ctx['include_paths']:
+            ctx['include_paths'].remove('.')
+
+        '''
+        Suppress print statements
+        print('\n')
+        print(self.target)
+        print('\n')
+        print(ctx)
+        print('\n')
+        print(self.orderedPaths)
+        for path in self.orderedPaths.children:
+            print(path.name + "\n")
+            for bpath in path.children:
+                print("\t" + bpath.name + "\n")
+        '''
+
+        self.gen_file('simplicityv3_slsproj.tmpl', ctx, '%s.slsproj' % self.program_name)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/simplicityv3_slsproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:model="http://www.silabs.com/sls/IDE.ecore" name="{{ name }}" kitCompatibility="{{ kit }}"
+																		  partCompatibility="{{ part }}"
+																		  toolchainCompatibility="com.silabs.ide.si32.gcc:4.8.3.20131129"
+																		  sdkCompatibility="com.silabs.sdk.si32.efm32"
+																		  propertyScope="project"
+																		  contentRoot=".">
+{# Hierarchically include all folders into the project #}
+  {%- for child in recursiveFolders.children recursive %}
+  <folder name="{{ child.name }}" uri="{{ child.name }}" includeAllFiles="true" includeAllFolders="true">
+    {%- if child.children -%}
+    {{ loop(child.children) }}
+    {%- endif %}
+  </folder>
+  {%- endfor %}
+
+{# Include all source files not belonging to a subfolder separately #}
+  {%- for file in main_files -%}
+  <file name = "{{ file }}" uri = "file:./{{ file }}" partCompatibility = ""/>
+  {%- endfor %}
+
+  <sourceFolder></sourceFolder>
+  <model:property key="cppProjectCommon.languageId" value="org.eclipse.cdt.core.g++"/>
+  <model:property key="projectCommon.buildArtifactType" value="EXE"/>
+  <configuration name="com.silabs.ide.si32.gcc.debug#com.silabs.ide.si32.gcc:4.8.3.20131129" label="GNU ARM v4.8.3 - Debug" stockConfigCompatibility="com.silabs.ide.toolchain.core.debug">
+    <model:description></model:description>
+{# Add all include paths to the managed build compiler, paths relative to project #}
+    {%- for path in include_paths %}
+    <includePath languageCompatibility="c cpp" uri="studio:/project/{{ path }}/"/>
+    {%- endfor %}
+{# Add all mbed-defined #Defines for the preprocessor #}
+    {%- for define, value in defines %}
+    <macroDefinition languageCompatibility="c cpp" name="{{ define }}" value="{{ value }}"/>
+    {%- endfor %}
+{# Include all standard libraries that mbed requires #}
+    <macroDefinition languageCompatibility="c cpp" name="DEBUG" value="1"/>
+    <libraryFile languageCompatibility="c" name="stdc++"/>
+    <libraryFile languageCompatibility="c" name="supc++"/>
+    <libraryFile languageCompatibility="c" name="m"/>
+    <libraryFile languageCompatibility="c" name="nosys"/>
+    <libraryFile languageCompatibility="c" name="c"/>
+    <libraryFile languageCompatibility="c" name="gcc"/>
+{# Include exported libraries #}
+    {%- for library in libraries %}
+    <libraryFile languageCompatibility="c cpp" name="{{ library }}"/>
+    {%- endfor %}
+{# Add library search paths #}
+    {%- for path in library_paths %}
+    <libraryPath languageCompatibility="c cpp" uri="studio:/project/{{ path }}/"/>
+    {%- endfor %}
+{# Add in separate object files if needed #}
+    {%- if object_files %}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="gnu.cpp.link.option.userobjs" value="
+    {%- for file in object_files -%}
+    ${workspace_loc:/${ProjName}/{{ file }}}{% if not loop.last %} {% endif %}
+    {%- endfor -%}"/>
+    {%- endif %}
+{# Manually override linker ordering #}
+    {%- if libraries %}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.category.ordering.selection" value="
+    {%- if object_files -%}
+    {%- for file in object_files -%}
+    ${workspace_loc:/${ProjName}/{{ file }}};
+    {%- endfor -%}
+    {%- endif -%}
+    {%- for library in libraries -%}
+    ${-l{{ library }}}{% if not loop.last %};{% endif %}
+    {%- endfor -%}"/>
+    {%- endif %}
+{# Define mbed-specific linker file #}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.usescript" value="true"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.script" value="${workspace_loc:/${ProjName}/{{ linker_script }}}"/>
+{# Make sure to wrap main in order to get clock initialization done right #}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.base" optionId="gnu.c.link.option.ldflags" value="-Wl,--wrap=main"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="gnu.cpp.link.option.flags" value="-Wl,--wrap=main"/>
+{# For debug build, don't apply optimizations #}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.compiler.base" optionId="gnu.c.compiler.option.optimization.level" value="gnu.c.optimization.level.none"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.compiler.base" optionId="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-rtti -fno-exceptions -fno-common -fomit-frame-pointer"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.base" optionId="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.base" optionId="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-rtti -fno-exceptions -fno-common -fomit-frame-pointer"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.base" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.misc.dialect" value="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.misc.dialect.default"/>
+  </configuration>
+  <configuration name="com.silabs.ide.si32.gcc.release#com.silabs.ide.si32.gcc:4.8.3.20131129" label="GNU ARM v4.8.3 - Release" stockConfigCompatibility="com.silabs.ide.toolchain.core.release">
+    <model:description></model:description>
+{# Add all include paths to the managed build compiler, paths relative to project #}
+    {%- for path in include_paths %}
+    <includePath languageCompatibility="c cpp" uri="studio:/project/{{ path }}/"/>
+    {%- endfor %}
+{# Add all mbed-defined #Defines for the preprocessor #}
+    {%- for define, value in defines %}
+    <macroDefinition languageCompatibility="c cpp" name="{{ define }}" value="{{ value }}"/>
+    {%- endfor %}
+{# Include all standard libraries that mbed requires #}
+    <libraryFile languageCompatibility="c" name="stdc++"/>
+    <libraryFile languageCompatibility="c" name="supc++"/>
+    <libraryFile languageCompatibility="c" name="m"/>
+    <libraryFile languageCompatibility="c" name="nosys"/>
+    <libraryFile languageCompatibility="c" name="c"/>
+    <libraryFile languageCompatibility="c" name="gcc"/>
+{# Include exported libraries #}
+    {%- for library in libraries %}
+    <libraryFile languageCompatibility="c cpp" name="{{ library }}"/>
+    {%- endfor %}
+{# Add library search paths #}
+    {%- for path in library_paths %}
+    <libraryPath languageCompatibility="c cpp" uri="studio:/project/{{ path }}/"/>
+    {%- endfor %}
+{# Add in separate object files if needed #}
+    {%- if object_files %}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="gnu.cpp.link.option.userobjs" value="
+    {%- for file in object_files -%}
+    ${workspace_loc:/${ProjName}/{{ file }}}{% if not loop.last %} {% endif %}
+    {%- endfor -%}"/>
+    {%- endif %}
+{# Manually override linker ordering #}
+    {%- if libraries %}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.category.ordering.selection" value="
+    {%- if object_files -%}
+    {%- for file in object_files -%}
+    ${workspace_loc:/${ProjName}/{{ file }}};
+    {%- endfor -%}
+    {%- endif -%}
+    {%- for library in libraries -%}{% if not loop.last %};{% endif %}
+    ${-l{{ library }}}
+    {%- endfor -%}"/>
+    {%- endif %}
+{# Define mbed-specific linker file #}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.usescript" value="true"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.toolchain.exe" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.script" value="${workspace_loc:/${ProjName}/{{ linker_script }}}"/>
+{# Make sure to wrap main in order to get clock initialization done right #}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.linker.base" optionId="gnu.c.link.option.ldflags" value="-Wl,--wrap=main"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.linker.base" optionId="gnu.cpp.link.option.flags" value="-Wl,--wrap=main"/>
+{# Use optimize for size on release build #}
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.compiler.base" optionId="gnu.c.compiler.option.optimization.level" value="gnu.c.optimization.level.size"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.c.compiler.base" optionId="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-rtti -fno-exceptions -fno-common -fomit-frame-pointer"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.base" optionId="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.size"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.base" optionId="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -fno-rtti -fno-exceptions -fno-common -fomit-frame-pointer"/>
+    <toolOption toolId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.base" optionId="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.misc.dialect" value="com.silabs.ide.si32.gcc.cdt.managedbuild.tool.gnu.cpp.compiler.misc.dialect.default"/>
+  </configuration>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/sw4stm32.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,96 @@
+"""
+mbed SDK
+Copyright (c) 2011-2016 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import splitext, basename, join
+from random import randint
+from tools.utils import mkdir
+
+
+class Sw4STM32(Exporter):
+    NAME = 'Sw4STM32'
+    TOOLCHAIN = 'GCC_ARM'
+
+    BOARDS = {
+        # 'DISCO_F051R8':     {'name': 'STM32F0DISCOVERY',        'mcuId': 'STM32F051R8Tx'},
+        # 'DISCO_F303VC':     {'name': 'STM32F3DISCOVERY',        'mcuId': 'STM32F303VCTx'},
+        'DISCO_F334C8':     {'name': 'STM32F3348DISCOVERY',     'mcuId': 'STM32F334C8Tx'},
+        # 'DISCO_F401VC':     {'name': 'STM32F401C-DISCO',        'mcuId': 'STM32F401VCTx'},
+        'DISCO_F407VG':     {'name': 'STM32F4DISCOVERY',        'mcuId': 'STM32F407VGTx'},
+        'DISCO_F429ZI':     {'name': 'STM32F429I-DISCO',        'mcuId': 'STM32F429ZITx'},
+        'DISCO_F746NG':     {'name': 'STM32F746G-DISCO',        'mcuId': 'STM32F746NGHx'},
+        'DISCO_L053C8':     {'name': 'STM32L0538DISCOVERY',     'mcuId': 'STM32L053C8Tx'},
+        'DISCO_L476VG':     {'name':  'STM32L476G-DISCO',       'mcuId': 'STM32L476VGTx'},
+        'DISCO_F469NI':     {'name': 'DISCO-F469NI',            'mcuId': 'STM32F469NIHx'},
+        'NUCLEO_F030R8':    {'name': 'NUCLEO-F030R8',           'mcuId': 'STM32F030R8Tx'},
+        'NUCLEO_F070RB':    {'name': 'NUCLEO-F070RB',           'mcuId': 'STM32F070RBTx'},
+        'NUCLEO_F072RB':    {'name': 'NUCLEO-F072RB',           'mcuId': 'STM32F072RBTx'},
+        'NUCLEO_F091RC':    {'name': 'NUCLEO-F091RC',           'mcuId': 'STM32F091RCTx'},
+        'NUCLEO_F103RB':    {'name': 'NUCLEO-F103RB',           'mcuId': 'STM32F103RBTx'},
+        'NUCLEO_F302R8':    {'name': 'NUCLEO-F302R8',           'mcuId': 'STM32F302R8Tx'},
+        'NUCLEO_F303RE':    {'name': 'NUCLEO-F303RE',           'mcuId': 'STM32F303RETx'},
+        'NUCLEO_F334R8':    {'name': 'NUCLEO-F334R8',           'mcuId': 'STM32F334R8Tx'},
+        'NUCLEO_F401RE':    {'name': 'NUCLEO-F401RE',           'mcuId': 'STM32F401RETx'},
+        'NUCLEO_F411RE':    {'name': 'NUCLEO-F411RE',           'mcuId': 'STM32F411RETx'},
+        'NUCLEO_F446RE':    {'name': 'NUCLEO-F446RE',           'mcuId': 'STM32F446RETx'},
+        'NUCLEO_L053R8':    {'name': 'NUCLEO-L053R8',           'mcuId': 'STM32L053R8Tx'},
+        'NUCLEO_L073RZ':    {'name': 'NUCLEO-L073RZ',           'mcuId': 'STM32L073RZTx'},
+        'NUCLEO_L152RE':    {'name': 'NUCLEO-L152RE',           'mcuId': 'STM32L152RETx'},
+        'NUCLEO_L476RG':    {'name': 'NUCLEO-L476RG',           'mcuId': 'STM32L476RGTx'},
+        'NUCLEO_F031K6':    {'name': 'NUCLEO-F031K6',           'mcuId': 'STM32F031K6Tx'},
+        'NUCLEO_F042K6':    {'name': 'NUCLEO-F042K6',           'mcuId': 'STM32F042K6Tx'},
+        'NUCLEO_F303K8':    {'name': 'NUCLEO-F303K8',           'mcuId': 'STM32F303K8Tx'},
+        'NUCLEO_F410RB':    {'name': 'NUCLEO-F410RB',           'mcuId': 'STM32F410RBTx'},
+    }
+
+    TARGETS = BOARDS.keys()
+
+    def __gen_dir(self, dirname):
+        settings = join(self.inputDir, dirname)
+        mkdir(settings)
+
+    def __generate_uid(self):
+        return "%0.9u" % randint(0, 999999999)
+
+    def generate(self):
+        libraries = []
+        for lib in self.resources.libraries:
+            l, _ = splitext(basename(lib))
+            libraries.append(l[3:])
+
+        ctx = {
+            'name': self.program_name,
+            'include_paths': self.resources.inc_dirs,
+            'linker_script': self.resources.linker_script,
+            'library_paths': self.resources.lib_dirs,
+            'object_files': self.resources.objects,
+            'libraries': libraries,
+            'symbols': self.get_symbols(),
+            'board_name': self.BOARDS[self.target.upper()]['name'],
+            'mcu_name': self.BOARDS[self.target.upper()]['mcuId'],
+            'debug_config_uid': self.__generate_uid(),
+            'debug_tool_compiler_uid': self.__generate_uid(),
+            'debug_tool_compiler_input_uid': self.__generate_uid(),
+            'release_config_uid': self.__generate_uid(),
+            'release_tool_compiler_uid': self.__generate_uid(),
+            'release_tool_compiler_input_uid': self.__generate_uid(),
+            'uid': self.__generate_uid()
+        }
+
+        self.__gen_dir('.settings')
+        self.gen_file('sw4stm32_language_settings_commom.tmpl', ctx, '.settings/language.settings.xml')
+        self.gen_file('sw4stm32_project_common.tmpl', ctx, '.project')
+        self.gen_file('sw4stm32_cproject_common.tmpl', ctx, '.cproject')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/sw4stm32_cproject_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}}">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}}" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}}" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+					<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}}." name="/" resourcePath="">
+						<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.{{uid}}" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+							<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.{{uid}}" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="{{mcu_name}}" valueType="string"/>
+							<option id="fr.ac6.managedbuild.option.gnu.cross.board.{{uid}}" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="{{board_name}}" valueType="string"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.{{uid}}" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+							<builder buildPath="${workspace_loc:/{{name}}}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.{{uid}}" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross"/>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.{{debug_tool_compiler_uid}}" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+								<option id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.{{uid}}" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
+								<option id="gnu.c.compiler.option.debugging.level.{{uid}}" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+								<option id="gnu.c.compiler.option.include.paths.{{uid}}" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+									{% for path in include_paths %}
+									<listOptionValue builtIn="false" value="&quot;${ProjDirPath}/{{path}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.c.compiler.option.preprocessor.def.symbols.{{uid}}" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+									{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+									{% endfor %}
+								</option>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.{{release_tool_compiler_input_uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.{{uid}}" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+								<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.{{uid}}" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
+								<option id="gnu.cpp.compiler.option.debugging.level.{{uid}}" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.option.include.paths.{{uid}}" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+									{% for path in include_paths %}
+									<listOptionValue builtIn="false" value="&quot;${ProjDirPath}/{{path}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.cpp.compiler.option.dialect.std.{{uid}}" superClass="gnu.cpp.compiler.option.dialect.std" value="gnu.cpp.compiler.dialect.default" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.option.preprocessor.def{{uid}}" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+								{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.{{uid}}" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+								<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.{{uid}}" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.{{uid}}" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+								<option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="${workspace_loc:/${ProjName}/{{linker_script}}}" valueType="string"/>
+								<option id="gnu.cpp.link.option.flags.{{uid}}" superClass="gnu.cpp.link.option.flags" value="--specs=nano.specs" valueType="string"/>
+								<option id="gnu.cpp.link.option.userobjs.{{uid}}" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+									{% for path in object_files %}
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.cpp.link.option.libs.{{uid}}" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+									{% for lib in libraries %}
+									<listOptionValue builtIn="false" value="{{lib}}"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.cpp.link.option.paths.{{uid}}" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+									{% for path in library_paths %}
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.{{uid}}" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>							<tool id="fr.ac6.managedbuild.tool.gnu.archiver.{{uid}}" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.{{uid}}" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+								<option id="gnu.both.asm.option.include.paths.{{uid}}" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+								{% for path in include_paths %}
+								<listOptionValue builtIn="false" value="&quot;${ProjDirPath}/{{path}}&quot;"/>
+								{% endfor %}
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.{{uid}}" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}}">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}}" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}}" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size -B &quot;${BuildArtifactFileName}&quot;">
+					<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}}." name="/" resourcePath="">
+						<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.{{uid}}" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release">
+							<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.{{uid}}" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="{{mcu_name}}" valueType="string"/>
+							<option id="fr.ac6.managedbuild.option.gnu.cross.board.{{uid}}" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="{{board_name}}" valueType="string"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.{{uid}}" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+							<builder buildPath="${workspace_loc:/{{name}}}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.{{uid}}" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross"/>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.{{release_tool_compiler_uid}}" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+								<option id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.{{uid}}" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.most" valueType="enumerated"/>
+								<option id="gnu.c.compiler.option.debugging.level.{{uid}}" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+								<option id="gnu.c.compiler.option.include.paths.{{uid}}" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+								{% for path in include_paths %}
+									<listOptionValue builtIn="false" value="&quot;${ProjDirPath}/{{path}}&quot;"/>
+								{% endfor %}}
+								</option>
+								<option id="gnu.c.compiler.option.preprocessor.def.symbols.{{uid}}" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+								{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.{{debug_tool_compiler_input_uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.{{uid}}" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+								<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.{{uid}}" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.most" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.option.debugging.level.{{uid}}" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.option.include.paths.{{uid}}" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+									{% for path in include_paths %}
+									<listOptionValue builtIn="false" value="&quot;${ProjDirPath}/{{path}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.cpp.compiler.option.preprocessor.def{{uid}}" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+								{% for s in symbols %}
+									<listOptionValue builtIn="false" value="{{s}}"/>
+								{% endfor %}
+								</option>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.{{uid}}" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+								<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.{{uid}}" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.{{uid}}" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+								<option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="${workspace_loc:/${ProjName}/{{linker_script}}}" valueType="string"/>
+								<option id="gnu.cpp.link.option.flags.{{uid}}" superClass="gnu.cpp.link.option.flags" value="--specs=nano.specs" valueType="string"/>
+								<option id="gnu.cpp.link.option.userobjs.{{uid}}" name="Other objects" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+									{% for path in object_files %}
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.cpp.link.option.libs.{{uid}}" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+									{% for lib in libraries %}
+									<listOptionValue builtIn="false" value="{{lib}}"/>
+									{% endfor %}
+								</option>
+								<option id="gnu.cpp.link.option.paths.{{uid}}" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+									{% for path in library_paths %}
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
+									{% endfor %}
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.{{uid}}" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="fr.ac6.managedbuild.tool.gnu.archiver.{{uid}}" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+							<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.{{uid}}" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+								<option id="gnu.both.asm.option.include.paths.{{uid}}" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+								{% for path in include_paths %}
+									<listOptionValue builtIn="false" value="&quot;${ProjDirPath}/{{path}}&quot;"/>
+								{% endfor %}
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.{{uid}}" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+								<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.{{uid}}" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="{{name}}.fr.ac6.managedbuild.target.gnu.cross.exe.{{uid}}" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}};fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}}.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.{{release_tool_compiler_uid}};fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.{{debug_tool_compiler_input_uid}}">
+			<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}};fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}}.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.{{debug_tool_compiler_uid}};fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.{{release_tool_compiler_input_uid}}">
+			<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/sw4stm32_language_settings_commom.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+	<configuration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.{{debug_config_uid}}" name="Debug">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" console="false" env-hash="1343080084626211886" id="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="Ac6 SW4 STM32 MCU Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+	<configuration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.{{release_config_uid}}" name="Release">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" console="false" env-hash="1343080084626211886" id="fr.ac6.mcu.ide.build.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="Ac6 SW4 STM32 MCU Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/sw4stm32_project_common.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>{{name}}</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+		<nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/uvision.uvproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+  <SchemaVersion>1.1</SchemaVersion>
+
+  <Header>###This file was automagically generated by mbed.org. For more information, see http://mbed.org/handbook/Exporting-To-Uvision </Header>
+
+  <Targets>
+    <Target>
+      <TargetName>mbed FRDM-KL25Z</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>MKL25Z128xxx4</Device>
+          <Vendor>Freescale Semiconductor</Vendor>
+          <Cpu>IRAM(0x1FFFF000-0x1FFFFFFF) IRAM2(0x20000000-0x20002FFF) IROM(0x0-0x1FFFF) CLOCK(8000000) CPUTYPE("Cortex-M0+") ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile>"STARTUP\Freescale\Kinetis\startup_MKL25Z4.s" ("Freescale MKL25Zxxxxxx4 Startup Code")</StartupFile>
+          <FlashDriverDll>ULP2CM3(-O2510 -S0 -C0 -FO15 -FD20000000 -FC800 -FN1 -FF0MK_P128_48MHZ -FS00 -FL020000)</FlashDriverDll>
+          <DeviceId>6533</DeviceId>
+          <RegisterFile>MKL25Z4.H</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>SFD\Freescale\Kinetis\MKL25Z4.sfr</SFDFile>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath>Freescale\Kinetis\</RegisterFilePath>
+          <DBRegisterFilePath>Freescale\Kinetis\</DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\build\</OutputDirectory>
+          <OutputName>MBED_11</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>0</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\build\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf --bin --output=@L.bin !L</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments></SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0+</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments></TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0+</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+          <Simulator>
+            <UseSimulator>0</UseSimulator>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>1</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+            <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+          </Simulator>
+          <Target>
+            <UseTarget>1</UseTarget>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>0</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+          </Target>
+          <RunDebugAfterBuild>0</RunDebugAfterBuild>
+          <TargetSelection>14</TargetSelection>
+          <SimDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+          </SimDlls>
+          <TargetDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+            <Driver>BIN\CMSIS_AGDI.dll</Driver>
+          </TargetDlls>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4105</DriverSelection>
+          </Flash1>
+          <Flash2>BIN\CMSIS_AGDI.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0+"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <hadIRAM2>1</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>0</useUlib>
+            <EndSel>0</EndSel>
+            <uLtcg>0</uLtcg>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x1ffff000</StartAddress>
+                <Size>0x1000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x20000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x20000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x3000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>1</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>0</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <VariousControls>
+              <MiscControls>--gnu --no_rtti</MiscControls>
+              <Define> </Define>
+              <Undefine></Undefine>
+              <IncludePath>  </IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0x10000000</DataAddressRange>
+            <ScatterFile>mbed\TARGET_KL25Z\TOOLCHAIN_ARM_STD\MKL25Z4.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc>
+            </Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        
+        <Group>
+          <GroupName>src</GroupName>
+          <Files>
+          </Files>
+        </Group>
+        
+      </Groups>
+    </Target>
+  </Targets>
+
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/uvision4.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,78 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from os.path import basename, join, dirname
+from project_generator_definitions.definitions import ProGenDef
+
+from tools.export.exporters import Exporter
+from tools.targets import TARGET_MAP, TARGET_NAMES
+
+# If you wish to add a new target, add it to project_generator_definitions, and then
+# define progen_target name in the target class (`` self.progen_target = 'my_target_name' ``)
+# There are 2 default mbed templates (predefined settings) uvision.uvproj and uvproj_microlib.uvproj.tmpl
+class Uvision4(Exporter):
+    """
+    Exporter class for uvision. This class uses project generator.
+    """
+    # These 2 are currently for exporters backward compatiblity
+    NAME = 'uVision4'
+    TOOLCHAIN = 'ARM'
+    # PROGEN_ACTIVE contains information for exporter scripts that this is using progen
+    PROGEN_ACTIVE = True
+
+    # backward compatibility with our scripts
+    TARGETS = []
+    for target in TARGET_NAMES:
+        try:
+            if (ProGenDef('uvision').is_supported(str(TARGET_MAP[target])) or
+                ProGenDef('uvision').is_supported(TARGET_MAP[target].progen['target'])):
+                TARGETS.append(target)
+        except AttributeError:
+            # target is not supported yet
+            continue
+
+
+    def generate(self):
+        """ Generates the project files """
+        project_data = self.progen_get_project_data()
+        tool_specific = {}
+        # Expand tool specific settings by uvision specific settings which are required
+        try:
+            if TARGET_MAP[self.target].progen['uvision']['template']:
+                tool_specific['uvision'] = TARGET_MAP[self.target].progen['uvision']
+        except KeyError:
+            # use default template
+            # by the mbed projects
+            tool_specific['uvision'] = {
+                    'template': [join(dirname(__file__),  'uvision.uvproj.tmpl')],
+            }
+
+        project_data['tool_specific'] = {}
+        project_data['tool_specific'].update(tool_specific)
+        i = 0
+        for macro in project_data['common']['macros']:
+            # armasm does not like floating numbers in macros, timestamp to int
+            if macro.startswith('MBED_BUILD_TIMESTAMP'):
+                timestamp = macro[len('MBED_BUILD_TIMESTAMP='):]
+                project_data['common']['macros'][i] = 'MBED_BUILD_TIMESTAMP=' + str(int(float(timestamp)))
+            # armasm does not even accept MACRO=string
+            if macro.startswith('MBED_USERNAME'):
+                project_data['common']['macros'].pop(i)
+            i += 1
+        project_data['common']['macros'].append('__ASSERT_MSG')
+        project_data['common']['build_dir'] = join(project_data['common']['build_dir'], 'uvision4')
+        self.progen_gen_file('uvision', project_data)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/uvision_microlib.uvproj.tmpl	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+  <SchemaVersion>1.1</SchemaVersion>
+
+  <Header>###This file was automagically generated by mbed.org. For more information, see http://mbed.org/handbook/Exporting-To-Uvision </Header>
+
+  <Targets>
+    <Target>
+      <TargetName>mbed FRDM-KL05Z</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>MKL05Z32xxx4</Device>
+          <Vendor>Freescale Semiconductor</Vendor>
+          <Cpu>IRAM(0x1FFFFC00-0x1FFFFFFF) IRAM2(0x20000000-0x20000BFF) IROM(0x0-0x07FFF) CLOCK(8000000) CPUTYPE("Cortex-M0+") ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile>"STARTUP\Freescale\Kinetis\startup_MKL05Z4.s" ("Freescale MKL05Zxxxxxx4 Startup Code")</StartupFile>
+          <FlashDriverDll>ULP2CM3(-O2510 -S0 -C0 -FO15 -FD20000000 -FC800 -FN1 -FF0MK_P32_48MHZ -FS00 -FL08000)</FlashDriverDll>
+          <DeviceId>6544</DeviceId>
+          <RegisterFile>MKL05Z4.H</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>SFD\Freescale\Kinetis\MKL05Z4.sfr</SFDFile>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath>Freescale\Kinetis\</RegisterFilePath>
+          <DBRegisterFilePath>Freescale\Kinetis\</DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\build\</OutputDirectory>
+          <OutputName>MBED_11</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>0</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\build\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf --bin --output=@L.bin !L</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments></SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0+</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments></TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0+</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+          <Simulator>
+            <UseSimulator>0</UseSimulator>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>1</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+            <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+          </Simulator>
+          <Target>
+            <UseTarget>1</UseTarget>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>0</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+          </Target>
+          <RunDebugAfterBuild>0</RunDebugAfterBuild>
+          <TargetSelection>14</TargetSelection>
+          <SimDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+          </SimDlls>
+          <TargetDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+            <Driver>BIN\CMSIS_AGDI.dll</Driver>
+          </TargetDlls>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4105</DriverSelection>
+          </Flash1>
+          <Flash2>BIN\CMSIS_AGDI.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0+"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <hadIRAM2>1</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>0</EndSel>
+            <uLtcg>0</uLtcg>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x1ffffc00</StartAddress>
+                <Size>0x400</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x8000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x8000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x1ffffc00</StartAddress>
+                <Size>0x400</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>1</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>0</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <VariousControls>
+              <MiscControls>--gnu --no_rtti</MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath>  .;  env;  mbed;  </IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0x10000000</DataAddressRange>
+            <ScatterFile>None</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc>
+            
+            </Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        
+        <Group>
+          <GroupName>src</GroupName>
+          <Files>
+            
+            <File>
+              <FileName>main.cpp</FileName>
+              <FileType>8</FileType>
+              <FilePath>main.cpp</FilePath>
+              
+            </File>
+          
+
+          </Files>
+        </Group>
+        
+      </Groups>
+    </Target>
+  </Targets>
+
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/zip.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,41 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from exporters import Exporter
+from os.path import basename
+
+
+class ZIP(Exporter):
+    NAME = 'ZIP'
+
+    TARGETS = [
+    ]
+
+    USING_MICROLIB = [
+    ]
+
+    FILE_TYPES = {
+        'c_sources':'1',
+        'cpp_sources':'8',
+        's_sources':'2'
+    }
+
+    def get_toolchain(self):
+        return 'uARM' if (self.target in self.USING_MICROLIB) else 'ARM'
+
+    def generate(self):
+        return True
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export_test.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,316 @@
+#!/usr/bin/env python
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import sys
+from os.path import join, abspath, dirname, exists
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from shutil import move
+
+from tools.paths import *
+from tools.utils import mkdir, cmd
+from tools.export import export, setup_user_prj
+
+
+USR_PRJ_NAME = "usr_prj"
+USER_PRJ = join(EXPORT_WORKSPACE, USR_PRJ_NAME)
+USER_SRC = join(USER_PRJ, "src")
+
+
+def setup_test_user_prj():
+    if exists(USER_PRJ):
+        print 'Test user project already generated...'
+        return
+
+    setup_user_prj(USER_PRJ, join(TEST_DIR, "rtos", "mbed", "basic"), [join(LIB_DIR, "rtos"), join(LIB_DIR, "tests", "mbed", "env")])
+
+    # FAKE BUILD URL
+    open(join(USER_SRC, "mbed.bld"), 'w').write("http://mbed.org/users/mbed_official/code/mbed/builds/976df7c37ad5\n")
+
+
+def fake_build_url_resolver(url):
+    # FAKE BUILD URL: Ignore the URL, always return the path to the mbed library
+    return {'path':MBED_LIBRARIES, 'name':'mbed'}
+
+
+def test_export(toolchain, target, expected_error=None):
+    if toolchain is None and target is None:
+        base_dir = join(EXPORT_TMP, "zip")
+    else:
+        base_dir = join(EXPORT_TMP, toolchain, target)
+    temp_dir = join(base_dir, "temp")
+    mkdir(temp_dir)
+
+    zip_path, report = export(USER_PRJ, USR_PRJ_NAME, toolchain, target, base_dir, temp_dir, False, None, fake_build_url_resolver)
+
+    if report['success']:
+        move(zip_path, join(EXPORT_DIR, "export_%s_%s.zip" % (toolchain, target)))
+        print "[OK]"
+    else:
+        if expected_error is None:
+            print '[ERRROR] %s' % report['errormsg']
+        else:
+            if (zip_path is None) and (expected_error in report['errormsg']):
+                print '[OK]'
+            else:
+                print '[ERROR]'
+                print '    zip:', zip_path
+                print '    msg:', report['errormsg']
+
+
+if __name__ == '__main__':
+    setup_test_user_prj()
+
+    for toolchain, target in [
+            ('zip', 'LPC1768'),
+
+            ('emblocks', 'LPC1768'),
+            ('emblocks', 'LPC1549'),
+            ('emblocks', 'LPC1114'),
+            ('emblocks', 'LPC11U35_401'),
+            ('emblocks', 'LPC11U35_501'),
+            ('emblocks', 'LPCCAPPUCCINO'),
+            ('emblocks', 'LPC2368'),
+            ('emblocks', 'STM32F407'),
+            ('emblocks', 'DISCO_F100RB'),
+            ('emblocks', 'DISCO_F051R8'),
+            ('emblocks', 'DISCO_F407VG'),
+            ('emblocks', 'DISCO_F303VC'),
+            ('emblocks', 'NRF51822'),
+            ('emblocks', 'NUCLEO_F401RE'),
+            ('emblocks', 'NUCLEO_F410RB'),
+            ('emblocks', 'NUCLEO_F411RE'),
+            ('emblocks', 'MTS_MDOT_F405RG'),
+            ('emblocks', 'MTS_MDOT_F411RE'),
+
+            ('coide', 'KL05Z'),
+            ('coide', 'KL25Z'),
+            ('coide', 'LPC1768'),
+            ('coide', 'ARCH_PRO'),
+            ('coide', 'DISCO_F407VG'),
+            ('coide', 'NUCLEO_F401RE'),
+            ('coide', 'NUCLEO_F410RB'),
+            ('coide', 'NUCLEO_F411RE'),
+            ('coide', 'DISCO_F429ZI'),
+            #('coide', 'DISCO_F469NI'), removed because template not available
+            ('coide', 'NUCLEO_F334R8'),
+            ('coide', 'MTS_MDOT_F405RG'),
+            ('coide', 'MTS_MDOT_F411RE'),
+
+            ('uvision', 'LPC1768'),
+            ('uvision', 'LPC11U24'),
+            ('uvision', 'LPC11U35_401'),
+            ('uvision', 'LPC11U35_501'),
+            ('uvision', 'KL25Z'),
+            ('uvision', 'LPC1347'),
+            ('uvision', 'LPC1114'),
+            ('uvision', 'LPC4088'),
+            ('uvision', 'LPC4088_DM'),
+            ('uvision', 'LPC4337'),
+            ('uvision', 'LPC824'),
+            ('uvision', 'SSCI824'),
+            ('uvision', 'HRM1017'),
+
+            ('uvision', 'B96B_F446VE'),
+            ('uvision', 'NUCLEO_F030R8'),
+            ('uvision', 'NUCLEO_F031K6'),
+            ('uvision', 'NUCLEO_F042K6'),
+            ('uvision', 'NUCLEO_F070RB'),
+            ('uvision', 'NUCLEO_F072RB'),
+            ('uvision', 'NUCLEO_F091RC'),
+            ('uvision', 'NUCLEO_F103RB'),
+            ('uvision', 'NUCLEO_F302R8'),
+            ('uvision', 'NUCLEO_F303K8'),
+            ('uvision', 'NUCLEO_F303RE'),
+            ('uvision', 'NUCLEO_F334R8'),
+            ('uvision', 'NUCLEO_F401RE'),
+            ('uvision', 'NUCLEO_F410RB'),
+            ('uvision', 'NUCLEO_F411RE'),
+            ('uvision', 'NUCLEO_F446RE'),
+            ('uvision', 'NUCLEO_L053R8'),
+            ('uvision', 'NUCLEO_L073RZ'),
+            ('uvision', 'NUCLEO_L152RE'),
+            ('uvision', 'NUCLEO_L476RG'),
+            ('uvision', 'MTS_MDOT_F405RG'),
+            ('uvision', 'MAXWSNENV'),
+            ('uvision', 'MAX32600MBED'),
+            ('uvision', 'DISCO_F051R8'),
+            ('uvision', 'DISCO_F103RB'),
+            ('uvision', 'DISCO_F303VC'),
+            ('uvision', 'DISCO_L053C8'),
+            ('uvision', 'DISCO_F334C8'),
+            ('uvision', 'DISCO_F407VG'),
+            ('uvision', 'DISCO_F429ZI'),
+            ('uvision', 'DISCO_F746NG'),
+            ('uvision', 'DISCO_F469NI'),
+            ('uvision', 'DISCO_L476VG'),
+            ('uvision', 'MOTE_L152RC'),
+
+            ('lpcxpresso', 'LPC1768'),
+            ('lpcxpresso', 'LPC4088'),
+            ('lpcxpresso', 'LPC4088_DM'),
+            ('lpcxpresso', 'LPC1114'),
+            ('lpcxpresso', 'LPC11U35_401'),
+            ('lpcxpresso', 'LPC11U35_501'),
+            ('lpcxpresso', 'LPCCAPPUCCINO'),
+            ('lpcxpresso', 'LPC1549'),
+            ('lpcxpresso', 'LPC11U68'),
+
+            # Linux path: /home/emimon01/bin/gcc-arm/bin/
+            # Windows path: C:/arm-none-eabi-gcc-4_7/bin/
+            ('gcc_arm', 'LPC1768'),
+            ('gcc_arm', 'LPC4088_DM'),
+            ('gcc_arm', 'LPC1549'),
+            ('gcc_arm', 'LPC1114'),
+            ('gcc_arm', 'LPC11U35_401'),
+            ('gcc_arm', 'LPC11U35_501'),
+            ('gcc_arm', 'LPCCAPPUCCINO'),
+            ('gcc_arm', 'LPC2368'),
+            ('gcc_arm', 'LPC2460'),
+            ('gcc_arm', 'LPC824'),
+            ('gcc_arm', 'SSCI824'),
+
+            ('gcc_arm', 'B96B_F446VE'),
+            ('gcc_arm', 'STM32F407'),
+            ('gcc_arm', 'DISCO_F100RB'),
+            ('gcc_arm', 'DISCO_F051R8'),
+            ('gcc_arm', 'DISCO_F407VG'),
+            ('gcc_arm', 'DISCO_F303VC'),
+            ('gcc_arm', 'DISCO_L053C8'),
+            ('gcc_arm', 'DISCO_F334C8'),
+            ('gcc_arm', 'DISCO_L053C8'),
+            ('gcc_arm', 'DISCO_F429ZI'),
+            ('gcc_arm', 'DISCO_F746NG'),
+            ('gcc_arm', 'NUCLEO_F031K6'),
+            ('gcc_arm', 'NUCLEO_F042K6'),
+            ('gcc_arm', 'NRF51822'),
+            ('gcc_arm', 'RBLAB_BLENANO'),
+            ('gcc_arm', 'HRM1017'),
+            ('gcc_arm', 'NUCLEO_F401RE'),
+            ('gcc_arm', 'NUCLEO_F410RB'),
+            ('gcc_arm', 'NUCLEO_F411RE'),
+            ('gcc_arm', 'NUCLEO_F446RE'),
+            ('gcc_arm', 'ELMO_F411RE'),
+            ('gcc_arm', 'DISCO_F469NI'),
+            ('gcc_arm', 'NUCLEO_F334R8'),
+            ('gcc_arm', 'MAX32600MBED'),
+            ('gcc_arm', 'MTS_MDOT_F405RG'),
+            ('gcc_arm', 'MTS_MDOT_F411RE'),
+            ('gcc_arm', 'RZ_A1H'),
+            ('gcc_arm', 'MAXWSNENV'),
+            ('gcc_arm', 'MAX32600MBED'),
+            ('gcc_arm', 'ARCH_BLE'),
+            ('gcc_arm', 'ARCH_MAX'),
+            ('gcc_arm', 'ARCH_PRO'),
+            ('gcc_arm', 'DELTA_DFCM_NNN40'),
+            ('gcc_arm', 'K20D50M'),
+            ('gcc_arm', 'K22F'),
+            ('gcc_arm', 'K64F'),
+            ('gcc_arm', 'KL05Z'),
+            ('gcc_arm', 'KL25Z'),
+            ('gcc_arm', 'KL43Z'),
+            ('gcc_arm', 'KL46Z'),
+            ('gcc_arm', 'EFM32GG_STK3700'),
+            ('gcc_arm', 'EFM32LG_STK3600'),
+            ('gcc_arm', 'EFM32WG_STK3800'),
+            ('gcc_arm', 'EFM32ZG_STK3200'),
+            ('gcc_arm', 'EFM32HG_STK3400'),
+
+            ('ds5_5', 'LPC1768'),
+            ('ds5_5', 'LPC11U24'),
+            ('ds5_5', 'RZ_A1H'),
+
+            ('iar', 'LPC1768'),
+            ('iar', 'LPC4088_DM'),
+            ('iar', 'LPC1347'),
+
+            ('iar', 'B96B_F446VE'),
+            ('iar', 'NUCLEO_F030R8'),
+            ('iar', 'NUCLEO_F031K6'),
+            ('iar', 'NUCLEO_F042K6'),
+            ('iar', 'NUCLEO_F070RB'),
+            ('iar', 'NUCLEO_F072RB'),
+            ('iar', 'NUCLEO_F091RC'),
+            ('iar', 'NUCLEO_F302R8'),
+            ('iar', 'NUCLEO_F303K8'),
+            ('iar', 'NUCLEO_F303RE'),
+            ('iar', 'NUCLEO_F334R8'),
+            ('iar', 'NUCLEO_F401RE'),
+            ('iar', 'NUCLEO_F410RB'),
+            ('iar', 'NUCLEO_F411RE'),
+            ('iar', 'NUCLEO_F446RE'),
+            ('iar', 'NUCLEO_L053R8'),
+            ('iar', 'NUCLEO_L073RZ'),
+            ('iar', 'NUCLEO_L152RE'),
+            ('iar', 'NUCLEO_L476RG'),
+            ('iar', 'DISCO_L053C8'),
+            ('iar', 'DISCO_F334C8'),
+            ('iar', 'DISCO_F429ZI'),
+            ('iar', 'DISCO_F469NI'),
+            ('iar', 'DISCO_F746NG'),
+            ('iar', 'DISCO_L476VG'),
+            ('iar', 'STM32F407'),
+            ('iar', 'MTS_MDOT_F405RG'),
+            ('iar', 'MTS_MDOT_F411RE'),
+            ('iar', 'MAXWSNENV'),
+            ('iar', 'MAX32600MBED'),
+            ('iar', 'MOTE_L152RC'),
+            ('iar', 'RZ_A1H'),
+
+            # ('sw4stm32', 'DISCO_F051R8'),
+            # ('sw4stm32', 'DISCO_F100RB'),
+            ('sw4stm32', 'DISCO_F303VC'),
+            ('sw4stm32', 'DISCO_F334C8'),
+            # ('sw4stm32', 'DISCO_F401VC'),
+            ('sw4stm32', 'DISCO_F407VG'),
+            ('sw4stm32', 'DISCO_F429ZI'),
+            ('sw4stm32', 'DISCO_F469NI'),
+            ('sw4stm32', 'DISCO_F746NG'),
+            ('sw4stm32', 'DISCO_L053C8'),
+            ('sw4stm32', 'DISCO_L476VG'),
+            ('sw4stm32', 'NUCLEO_F030R8'),
+            ('sw4stm32', 'NUCLEO_F031K6'),
+            ('sw4stm32', 'NUCLEO_F042K6'),
+            ('sw4stm32', 'NUCLEO_F070RB'),
+            ('sw4stm32', 'NUCLEO_F072RB'),
+            ('sw4stm32', 'NUCLEO_F091RC'),
+            ('sw4stm32', 'NUCLEO_F103RB'),
+            ('sw4stm32', 'NUCLEO_F302R8'),
+            ('sw4stm32', 'NUCLEO_F303K8'),
+            ('sw4stm32', 'NUCLEO_F303RE'),
+            ('sw4stm32', 'NUCLEO_F334R8'),
+            ('sw4stm32', 'NUCLEO_F401RE'),
+            ('sw4stm32', 'NUCLEO_F410RB'),
+            ('sw4stm32', 'NUCLEO_F411RE'),
+            ('sw4stm32', 'NUCLEO_F446RE'),
+            ('sw4stm32', 'NUCLEO_L053R8'),
+            ('sw4stm32', 'NUCLEO_L073RZ'),
+            ('sw4stm32', 'NUCLEO_L152RE'),
+            ('sw4stm32', 'NUCLEO_L476RG'),
+            ('sw4stm32', 'NUCLEO_F031K6'),
+            ('sw4stm32', 'NUCLEO_F042K6'),
+            ('sw4stm32', 'NUCLEO_F303K8'),
+            ('sw4stm32', 'NUCLEO_F410RB'),
+            # Removed following item to avoid script error
+            #(None, None),
+        ]:
+        print '\n=== Exporting to "%s::%s" ===' % (toolchain, target)
+        test_export(toolchain, target)
+
+    print "\n=== Test error messages ==="
+    test_export('lpcxpresso', 'LPC11U24', expected_error='lpcxpresso')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hooks.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,125 @@
+# Configurable hooks in the build system. Can be used by various platforms
+# to customize the build process.
+
+################################################################################
+# Hooks for the various parts of the build process
+
+# Internal mapping of hooks per tool
+_hooks = {}
+
+# Internal mapping of running hooks
+_running_hooks = {}
+
+# Available hook types
+_hook_types = ["binary", "compile", "link", "assemble"]
+
+# Available hook steps
+_hook_steps = ["pre", "replace", "post"]
+
+# Hook the given function. Use this function as a decorator
+def hook_tool(function):
+    tool = function.__name__
+    tool_flag = "_" + tool + "_done"
+    def wrapper(t_self, *args, **kwargs):
+        # if a hook for this tool is already running, it's most likely
+        # coming from a derived class, so don't hook the super class version
+        if _running_hooks.get(tool, False):
+            return function(t_self, *args, **kwargs)
+        _running_hooks[tool] = True
+        # If this tool isn't hooked, return original function
+        if not _hooks.has_key(tool):
+            res = function(t_self, *args, **kwargs)
+            _running_hooks[tool] = False
+            return res
+        tooldesc = _hooks[tool]
+        setattr(t_self, tool_flag, False)
+        # If there is a replace hook, execute the replacement instead
+        if tooldesc.has_key("replace"):
+            res = tooldesc["replace"](t_self, *args, **kwargs)
+        # If the replacement has set the "done" flag, exit now
+        # Otherwise continue as usual
+        if getattr(t_self, tool_flag, False):
+            _running_hooks[tool] = False
+            return res
+        # Execute pre-function before main function if specified
+        if tooldesc.has_key("pre"):
+            tooldesc["pre"](t_self, *args, **kwargs)
+        # Execute the main function now
+        res = function(t_self, *args, **kwargs)
+        # Execute post-function after main function if specified
+        if tooldesc.has_key("post"):
+            post_res = tooldesc["post"](t_self, *args, **kwargs)
+            _running_hooks[tool] = False
+            return post_res or res
+        else:
+            _running_hooks[tool] = False
+            return res
+    return wrapper
+
+class Hook:
+    def __init__(self, target, toolchain):
+        _hooks.clear()
+        self._cmdline_hooks = {}
+        self.toolchain = toolchain
+        target.init_hooks(self, toolchain.__class__.__name__)
+
+    # Hook various functions directly
+    def _hook_add(self, hook_type, hook_step, function):
+        if not hook_type in _hook_types or not hook_step in _hook_steps:
+            return False
+        if not hook_type in _hooks:
+            _hooks[hook_type] = {}
+        _hooks[hook_type][hook_step] = function
+        return True
+
+    def hook_add_compiler(self, hook_step, function):
+        return self._hook_add("compile", hook_step, function)
+
+    def hook_add_linker(self, hook_step, function):
+        return self._hook_add("link", hook_step, function)
+
+    def hook_add_assembler(self, hook_step, function):
+        return self._hook_add("assemble", hook_step, function)
+
+    def hook_add_binary(self, hook_step, function):
+        return self._hook_add("binary", hook_step, function)
+
+    # Hook command lines
+    def _hook_cmdline(self, hook_type, function):
+        if not hook_type in _hook_types:
+            return False
+        self._cmdline_hooks[hook_type] = function
+        return True
+
+    def hook_cmdline_compiler(self, function):
+        return self._hook_cmdline("compile", function)
+
+    def hook_cmdline_linker(self, function):
+        return self._hook_cmdline("link", function)
+
+    def hook_cmdline_assembler(self, function):
+        return self._hook_cmdline("assemble", function)
+
+    def hook_cmdline_binary(self, function):
+        return self._hook_cmdline("binary", function)
+
+    # Return the command line after applying the hook
+    def _get_cmdline(self, hook_type, cmdline):
+        if self._cmdline_hooks.has_key(hook_type):
+            cmdline = self._cmdline_hooks[hook_type](self.toolchain.__class__.__name__, cmdline)
+        return cmdline
+
+    def get_cmdline_compiler(self, cmdline):
+        return self._get_cmdline("compile", cmdline)
+
+    def get_cmdline_linker(self, cmdline):
+        return self._get_cmdline("link", cmdline)
+
+    def get_cmdline_assembler(self, cmdline):
+        return self._get_cmdline("assemble", cmdline)
+
+    def get_cmdline_binary(self, cmdline):
+        return self._get_cmdline("binary", cmdline)
+
+################################################################################
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,65 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from host_registry import HostRegistry
+
+# Host test supervisors
+from echo import EchoTest
+from rtc_auto import RTCTest
+from stdio_auto import StdioTest
+from hello_auto import HelloTest
+from detect_auto import DetectPlatformTest
+from default_auto import DefaultAuto
+from dev_null_auto import DevNullTest
+from wait_us_auto import WaitusTest
+from tcpecho_server_auto import TCPEchoServerTest
+from udpecho_server_auto import UDPEchoServerTest
+from tcpecho_client_auto import TCPEchoClientTest
+from udpecho_client_auto import UDPEchoClientTest
+from wfi_auto import WFITest
+from serial_nc_rx_auto import SerialNCRXTest
+from serial_nc_tx_auto import SerialNCTXTest
+
+# Populate registry with supervising objects
+HOSTREGISTRY = HostRegistry()
+HOSTREGISTRY.register_host_test("echo", EchoTest())
+HOSTREGISTRY.register_host_test("default", DefaultAuto())
+HOSTREGISTRY.register_host_test("rtc_auto", RTCTest())
+HOSTREGISTRY.register_host_test("hello_auto", HelloTest())
+HOSTREGISTRY.register_host_test("stdio_auto", StdioTest())
+HOSTREGISTRY.register_host_test("detect_auto", DetectPlatformTest())
+HOSTREGISTRY.register_host_test("default_auto", DefaultAuto())
+HOSTREGISTRY.register_host_test("wait_us_auto", WaitusTest())
+HOSTREGISTRY.register_host_test("dev_null_auto", DevNullTest())
+HOSTREGISTRY.register_host_test("tcpecho_server_auto", TCPEchoServerTest())
+HOSTREGISTRY.register_host_test("udpecho_server_auto", UDPEchoServerTest())
+HOSTREGISTRY.register_host_test("tcpecho_client_auto", TCPEchoClientTest())
+HOSTREGISTRY.register_host_test("udpecho_client_auto", UDPEchoClientTest())
+HOSTREGISTRY.register_host_test("wfi_auto", WFITest())
+HOSTREGISTRY.register_host_test("serial_nc_rx_auto", SerialNCRXTest())
+HOSTREGISTRY.register_host_test("serial_nc_tx_auto", SerialNCTXTest())
+
+###############################################################################
+# Functional interface for test supervisor registry
+###############################################################################
+
+
+def get_host_test(ht_name):
+    return HOSTREGISTRY.get_host_test(ht_name)
+
+def is_host_test(ht_name):
+    return HOSTREGISTRY.is_host_test(ht_name)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/default_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,36 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from sys import stdout
+
+class DefaultAuto():
+    """ Simple, basic host test's test runner waiting for serial port
+        output from MUT, no supervision over test running in MUT is executed.
+    """
+    def test(self, selftest):
+        result = selftest.RESULT_SUCCESS
+        try:
+            while True:
+                c = selftest.mbed.serial_read(512)
+                if c is None:
+                    return selftest.RESULT_IO_SERIAL
+                stdout.write(c)
+                stdout.flush()
+        except KeyboardInterrupt, _:
+            selftest.notify("\r\n[CTRL+C] exit")
+            result = selftest.RESULT_ERROR
+        return result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/detect_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,55 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+
+class DetectPlatformTest():
+    PATTERN_MICRO_NAME = "Target '(\w+)'"
+    re_detect_micro_name = re.compile(PATTERN_MICRO_NAME)
+
+    def test(self, selftest):
+        result = True
+
+        c = selftest.mbed.serial_readline() # {{start}} preamble
+        if c is None:
+           return selftest.RESULT_IO_SERIAL
+
+        selftest.notify(c.strip())
+        selftest.notify("HOST: Detecting target name...")
+
+        c = selftest.mbed.serial_readline()
+        if c is None:
+            return selftest.RESULT_IO_SERIAL
+        selftest.notify(c.strip())
+
+        # Check for target name
+        m = self.re_detect_micro_name.search(c)
+        if m and len(m.groups()):
+            micro_name = m.groups()[0]
+            micro_cmp = selftest.mbed.options.micro == micro_name
+            result = result and micro_cmp
+            selftest.notify("HOST: MUT Target name '%s', expected '%s'... [%s]"% (micro_name,
+                selftest.mbed.options.micro,
+                "OK" if micro_cmp else "FAIL"))
+
+        for i in range(0, 2):
+            c = selftest.mbed.serial_readline()
+            if c is None:
+               return selftest.RESULT_IO_SERIAL
+            selftest.notify(c.strip())
+
+        return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/dev_null_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,50 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+class DevNullTest():
+
+    def check_readline(self, selftest, text):
+        """ Reads line from serial port and checks if text was part of read string
+        """
+        result = False
+        c = selftest.mbed.serial_readline()
+        if c and text in c:
+            result = True
+        return result
+
+    def test(self, selftest):
+        result = True
+        # Test should print some text and later stop printing
+        # 'MBED: re-routing stdout to /null'
+        res = self.check_readline(selftest, "re-routing stdout to /null")
+        if not res:
+            # We haven't read preamble line
+            result = False
+        else:
+            # Check if there are printed characters
+            str = ''
+            for i in range(3):
+                c = selftest.mbed.serial_read(32)
+                if c is None:
+                    return selftest.RESULT_IO_SERIAL
+                else:
+                    str += c
+                if len(str) > 0:
+                    result = False
+                    break
+            selftest.notify("Received %d bytes: %s"% (len(str), str))
+        return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/echo.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,59 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import sys
+import uuid
+from sys import stdout
+
+class EchoTest():
+
+    # Test parameters
+    TEST_SERIAL_BAUDRATE = 115200
+    TEST_LOOP_COUNT = 50
+
+    def test(self, selftest):
+        """ This host test will use mbed serial port with
+            baudrate 115200 to perform echo test on that port.
+        """
+        # Custom initialization for echo test
+        selftest.mbed.init_serial_params(serial_baud=self.TEST_SERIAL_BAUDRATE)
+        selftest.mbed.init_serial()
+
+        # Test function, return True or False to get standard test notification on stdout
+        selftest.mbed.flush()
+        selftest.notify("HOST: Starting the ECHO test")
+        result = True
+        
+        """ This ensures that there are no parasites left in the serial buffer.
+        """
+        for i in range(0, 2):
+            selftest.mbed.serial_write("\n")
+            c = selftest.mbed.serial_readline()
+            
+        for i in range(0, self.TEST_LOOP_COUNT):
+            TEST_STRING = str(uuid.uuid4()) + "\n"
+            selftest.mbed.serial_write(TEST_STRING)
+            c = selftest.mbed.serial_readline()
+            if c is None:
+                return selftest.RESULT_IO_SERIAL
+            if c.strip() != TEST_STRING.strip():
+                selftest.notify('HOST: "%s" != "%s"'% (c, TEST_STRING))
+                result = False
+            else:
+                sys.stdout.write('.')
+                stdout.flush()
+        return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/echo_flow_control.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,48 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from host_test import Test
+
+
+class EchoTest(Test):
+    def __init__(self):
+        Test.__init__(self)
+        self.mbed.init_serial()
+        self.mbed.extra_serial.rtscts = True
+        self.mbed.reset()
+
+    def test(self):
+        self.mbed.flush()
+        self.notify("Starting the ECHO test")
+        TEST="longer serial test"
+        check = True
+        for i in range(1, 100):
+            self.mbed.extra_serial.write(TEST + "\n")
+            l = self.mbed.extra_serial.readline().strip()
+            if not l: continue
+
+            if l != TEST:
+                check = False
+                self.notify('"%s" != "%s"' % (l, TEST))
+            else:
+                if (i % 10) == 0:
+                    self.notify('.')
+
+        return check
+
+
+if __name__ == '__main__':
+    EchoTest().run()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/BroadcastReceive.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,25 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+
+BROADCAST_PORT = 58083
+
+s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+s.bind(('0.0.0.0', BROADCAST_PORT))
+
+while True:
+    print s.recvfrom(256)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/BroadcastSend.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,30 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+from time import sleep, time
+
+BROADCAST_PORT = 58083
+
+s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+s.bind(('', 0))
+s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+
+while True:
+    print "Broadcasting..."
+    data = 'Hello World: ' + repr(time()) + '\n'
+    s.sendto(data, ('<broadcast>', BROADCAST_PORT))
+    sleep(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/MulticastReceive.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,31 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+import struct
+
+MCAST_GRP = '224.1.1.1'
+MCAST_PORT = 5007
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
+sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+sock.bind(('', MCAST_PORT))
+mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
+
+sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
+
+while True:
+    print sock.recv(10240)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/MulticastSend.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,30 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+from time import sleep, time
+
+MCAST_GRP = '224.1.1.1'
+MCAST_PORT = 5007
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
+sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
+
+while True:
+    print "Multicast to group: %s\n" % MCAST_GRP
+    data = 'Hello World: ' + repr(time()) + '\n'
+    sock.sendto(data, (MCAST_GRP, MCAST_PORT))
+    sleep(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/TCPEchoClient.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,28 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+
+ECHO_SERVER_ADDRESS = "10.2.202.45"
+ECHO_PORT = 7
+
+s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+s.connect((ECHO_SERVER_ADDRESS, ECHO_PORT))
+
+s.sendall('Hello, world')
+data = s.recv(1024)
+s.close()
+print 'Received', repr(data)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/TCPEchoServer.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,30 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+
+s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+s.bind(('', 7))
+s.listen(1)
+
+while True:
+    conn, addr = s.accept()
+    print 'Connected by', addr
+    while True:
+        data = conn.recv(1024)
+        if not data: break
+        conn.sendall(data)
+    conn.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/UDPEchoClient.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,28 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+
+ECHO_SERVER_ADDRESS = '10.2.202.45'
+ECHO_PORT = 7
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+
+sock.sendto("Hello World\n", (ECHO_SERVER_ADDRESS, ECHO_PORT))
+response = sock.recv(256)
+sock.close()
+
+print response
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/UDPEchoServer.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,27 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+
+ECHO_PORT = 7
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+sock.bind(('', ECHO_PORT))
+
+while True:
+    data, address = sock.recvfrom(256)
+    print "datagram from", address
+    sock.sendto(data, address)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/example/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,16 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/hello_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,34 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+class HelloTest():
+    HELLO_WORLD = "Hello World"
+
+    def test(self, selftest):
+        c = selftest.mbed.serial_readline()
+        if c is None:
+           return selftest.RESULT_IO_SERIAL
+        selftest.notify("Read %d bytes:"% len(c))
+        selftest.notify(c.strip())
+
+        result = True
+        # Because we can have targetID here let's try to decode
+        if len(c) < len(self.HELLO_WORLD):
+            result = False
+        else:
+            result = self.HELLO_WORLD in c
+        return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_registry.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,36 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+class HostRegistry:
+    """ Class stores registry with host tests and objects representing them
+    """ 
+    HOST_TESTS = {} # host_test_name -> host_test_ojbect
+
+    def register_host_test(self, ht_name, ht_object):
+        if ht_name not in self.HOST_TESTS:
+            self.HOST_TESTS[ht_name] = ht_object
+    
+    def unregister_host_test(self):
+        if ht_name in HOST_TESTS:
+            self.HOST_TESTS[ht_name] = None
+
+    def get_host_test(self, ht_name):
+        return self.HOST_TESTS[ht_name] if ht_name in self.HOST_TESTS else None
+
+    def is_host_test(self, ht_name):
+        return ht_name in self.HOST_TESTS
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_test.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,426 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+# Check if 'serial' module is installed
+try:
+    from serial import Serial
+except ImportError, e:
+    print "Error: Can't import 'serial' module: %s"% e
+    exit(-1)
+
+import os
+import re
+import types
+from sys import stdout
+from time import sleep, time
+from optparse import OptionParser
+
+import host_tests_plugins
+
+# This is a little tricky. We need to add upper directory to path so
+# we can find packages we want from the same level as other files do
+import sys
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..')))
+from tools.test_api import get_autodetected_MUTS_list
+from tools.test_api import get_module_avail
+
+
+class Mbed:
+    """ Base class for a host driven test
+    """
+    def __init__(self):
+        parser = OptionParser()
+
+        parser.add_option("-m", "--micro",
+                          dest="micro",
+                          help="The target microcontroller",
+                          metavar="MICRO")
+
+        parser.add_option("-p", "--port",
+                          dest="port",
+                          help="The serial port of the target mbed",
+                          metavar="PORT")
+
+        parser.add_option("-d", "--disk",
+                          dest="disk",
+                          help="The target disk path",
+                          metavar="DISK_PATH")
+
+        parser.add_option("-f", "--image-path",
+                          dest="image_path",
+                          help="Path with target's image",
+                          metavar="IMAGE_PATH")
+
+        parser.add_option("-c", "--copy",
+                          dest="copy_method",
+                          help="Copy method selector",
+                          metavar="COPY_METHOD")
+
+        parser.add_option("-C", "--program_cycle_s",
+                          dest="program_cycle_s",
+                          help="Program cycle sleep. Define how many seconds you want wait after copying bianry onto target",
+                          type="float",
+                          metavar="COPY_METHOD")
+
+        parser.add_option("-t", "--timeout",
+                          dest="timeout",
+                          help="Timeout",
+                          metavar="TIMEOUT")
+
+        parser.add_option("-r", "--reset",
+                          dest="forced_reset_type",
+                          help="Forces different type of reset")
+
+        parser.add_option("-R", "--reset-timeout",
+                          dest="forced_reset_timeout",
+                          metavar="NUMBER",
+                          type="int",
+                          help="When forcing a reset using option -r you can set up after reset timeout in seconds")
+
+        parser.add_option('', '--auto',
+                          dest='auto_detect',
+                          metavar=False,
+                          action="store_true",
+                          help='Use mbed-ls module to detect all connected mbed devices')
+
+        (self.options, _) = parser.parse_args()
+
+        self.DEFAULT_RESET_TOUT = 0
+        self.DEFAULT_TOUT = 10
+
+        if self.options.port is None:
+            raise Exception("The serial port of the target mbed have to be provided as command line arguments")
+
+        # Options related to copy / reset mbed device
+        self.port = self.options.port
+        self.disk = self.options.disk
+        self.image_path = self.options.image_path.strip('"')
+        self.copy_method = self.options.copy_method
+        self.program_cycle_s = float(self.options.program_cycle_s)
+
+        self.serial = None
+        self.serial_baud = 9600
+        self.serial_timeout = 1
+
+        self.timeout = self.DEFAULT_TOUT if self.options.timeout is None else self.options.timeout
+        print 'MBED: Instrumentation: "%s" and disk: "%s"' % (self.port, self.disk)
+
+    def init_serial_params(self, serial_baud=9600, serial_timeout=1):
+        """ Initialize port parameters.
+            This parameters will be used by self.init_serial() function to open serial port
+        """
+        self.serial_baud = serial_baud
+        self.serial_timeout = serial_timeout
+
+    def init_serial(self, serial_baud=None, serial_timeout=None):
+        """ Initialize serial port.
+            Function will return error is port can't be opened or initialized
+        """
+        # Overload serial port configuration from default to parameters' values if they are specified
+        serial_baud = serial_baud if serial_baud is not None else self.serial_baud
+        serial_timeout = serial_timeout if serial_timeout is not None else self.serial_timeout
+
+        if get_module_avail('mbed_lstools') and self.options.auto_detect:
+            # Ensure serial port is up-to-date (try to find it 60 times)
+            found = False
+
+            for i in range(0, 60):
+                print('Looking for %s with MBEDLS' % self.options.micro)
+                muts_list = get_autodetected_MUTS_list(platform_name_filter=[self.options.micro])
+
+                if 1 in muts_list:
+                    mut = muts_list[1]
+                    self.port = mut['port']
+                    found = True
+                    break
+                else:
+                    sleep(3)
+
+            if not found:
+                return False
+
+        # Clear serial port
+        if self.serial:
+            self.serial.close()
+            self.serial = None
+
+        # We will pool for serial to be re-mounted if it was unmounted after device reset
+        result = self.pool_for_serial_init(serial_baud, serial_timeout) # Blocking
+
+        # Port can be opened
+        if result:
+            self.flush()
+        return result
+
+    def pool_for_serial_init(self, serial_baud, serial_timeout, pooling_loops=40, init_delay=0.5, loop_delay=0.25):
+        """ Functions pools for serial port readiness
+        """
+        result = True
+        last_error = None
+        # This loop is used to check for serial port availability due to
+        # some delays and remounting when devices are being flashed with new software.
+        for i in range(pooling_loops):
+            sleep(loop_delay if i else init_delay)
+            try:
+                self.serial = Serial(self.port, baudrate=serial_baud, timeout=serial_timeout)
+            except Exception as e:
+                result = False
+                last_error = "MBED: %s"% str(e)
+                stdout.write('.')
+                stdout.flush()
+            else:
+                print "...port ready!"
+                result = True
+                break
+        if not result and last_error:
+            print last_error
+        return result
+
+    def set_serial_timeout(self, timeout):
+        """ Wraps self.mbed.serial object timeout property
+        """
+        result = None
+        if self.serial:
+            self.serial.timeout = timeout
+            result = True
+        return result
+
+    def serial_read(self, count=1):
+        """ Wraps self.mbed.serial object read method
+        """
+        result = None
+        if self.serial:
+            try:
+                result = self.serial.read(count)
+            except:
+                result = None
+        return result
+
+    def serial_readline(self, timeout=5):
+        """ Wraps self.mbed.serial object read method to read one line from serial port
+        """
+        result = ''
+        start = time()
+        while (time() - start) < timeout:
+            if self.serial:
+                try:
+                    c = self.serial.read(1)
+                    result += c
+                except Exception as e:
+                    print "MBED: %s"% str(e)
+                    result = None
+                    break
+                if c == '\n':
+                    break
+        return result
+
+    def serial_write(self, write_buffer):
+        """ Wraps self.mbed.serial object write method
+        """
+        result = None
+        if self.serial:
+            try:
+                result = self.serial.write(write_buffer)
+            except:
+               result = None
+        return result
+
+    def reset_timeout(self, timeout):
+        """ Timeout executed just after reset command is issued
+        """
+        for n in range(0, timeout):
+            sleep(1)
+
+    def reset(self):
+        """ Calls proper reset plugin to do the job.
+            Please refer to host_test_plugins functionality
+        """
+        # Flush serials to get only input after reset
+        self.flush()
+        if self.options.forced_reset_type:
+            result = host_tests_plugins.call_plugin('ResetMethod', self.options.forced_reset_type, disk=self.disk)
+        else:
+            result = host_tests_plugins.call_plugin('ResetMethod', 'default', serial=self.serial)
+        # Give time to wait for the image loading
+        reset_tout_s = self.options.forced_reset_timeout if self.options.forced_reset_timeout is not None else self.DEFAULT_RESET_TOUT
+        self.reset_timeout(reset_tout_s)
+        return result
+
+    def copy_image(self, image_path=None, disk=None, copy_method=None):
+        """ Closure for copy_image_raw() method.
+            Method which is actually copying image to mbed
+        """
+        # Set closure environment
+        image_path = image_path if image_path is not None else self.image_path
+        disk = disk if disk is not None else self.disk
+        copy_method = copy_method if copy_method is not None else self.copy_method
+        # Call proper copy method
+        result = self.copy_image_raw(image_path, disk, copy_method)
+        return result
+
+    def copy_image_raw(self, image_path=None, disk=None, copy_method=None):
+        """ Copy file depending on method you want to use. Handles exception
+            and return code from shell copy commands.
+        """
+        # image_path - Where is binary with target's firmware
+        if copy_method is not None:
+            # We override 'default' method with 'shell' method
+            if copy_method == 'default':
+                copy_method = 'shell'
+        else:
+            copy_method = 'shell'
+
+        result = host_tests_plugins.call_plugin('CopyMethod', copy_method, image_path=image_path, destination_disk=disk, program_cycle_s=self.program_cycle_s, target_mcu=self.options.micro)
+        return result;
+
+    def flush(self):
+        """ Flush serial ports
+        """
+        result = False
+        if self.serial:
+            self.serial.flushInput()
+            self.serial.flushOutput()
+            result = True
+        return result
+
+
+class HostTestResults:
+    """ Test results set by host tests
+    """
+    def __init__(self):
+        self.RESULT_SUCCESS = 'success'
+        self.RESULT_FAILURE = 'failure'
+        self.RESULT_ERROR = 'error'
+        self.RESULT_IO_SERIAL = 'ioerr_serial'
+        self.RESULT_NO_IMAGE = 'no_image'
+        self.RESULT_IOERR_COPY = "ioerr_copy"
+        self.RESULT_PASSIVE = "passive"
+        self.RESULT_NOT_DETECTED = "not_detected"
+        self.RESULT_MBED_ASSERT = "mbed_assert"
+
+
+import tools.host_tests as host_tests
+
+
+class Test(HostTestResults):
+    """ Base class for host test's test runner
+    """
+    # Select default host_test supervision (replaced after autodetection)
+    test_supervisor = host_tests.get_host_test("default")
+
+    def __init__(self):
+        self.mbed = Mbed()
+
+    def detect_test_config(self, verbose=False):
+        """ Detects test case configuration
+        """
+        result = {}
+        while True:
+            line = self.mbed.serial_readline()
+            if "{start}" in line:
+                self.notify("HOST: Start test...")
+                break
+            else:
+                # Detect if this is property from TEST_ENV print
+                m = re.search('{([\w_]+);([\w\d\+ ]+)}}', line[:-1])
+                if m and len(m.groups()) == 2:
+                    # This is most likely auto-detection property
+                    result[m.group(1)] = m.group(2)
+                    if verbose:
+                        self.notify("HOST: Property '%s' = '%s'"% (m.group(1), m.group(2)))
+                else:
+                    # We can check if this is TArget Id in mbed specific format
+                    m2 = re.search('^([\$]+)([a-fA-F0-9]+)', line[:-1])
+                    if m2 and len(m2.groups()) == 2:
+                        if verbose:
+                            target_id = m2.group(1) + m2.group(2)
+                            self.notify("HOST: TargetID '%s'"% target_id)
+                            self.notify(line[len(target_id):-1])
+                    else:
+                        self.notify("HOST: Unknown property: %s"% line.strip())
+        return result
+
+    def run(self):
+        """ Test runner for host test. This function will start executing
+            test and forward test result via serial port to test suite
+        """
+        # Copy image to device
+        self.notify("HOST: Copy image onto target...")
+        result = self.mbed.copy_image()
+        if not result:
+            self.print_result(self.RESULT_IOERR_COPY)
+
+        # Initialize and open target's serial port (console)
+        self.notify("HOST: Initialize serial port...")
+        result = self.mbed.init_serial()
+        if not result:
+            self.print_result(self.RESULT_IO_SERIAL)
+
+        # Reset device
+        self.notify("HOST: Reset target...")
+        result = self.mbed.reset()
+        if not result:
+            self.print_result(self.RESULT_IO_SERIAL)
+
+        # Run test
+        try:
+            CONFIG = self.detect_test_config(verbose=True) # print CONFIG
+
+            if "host_test_name" in CONFIG:
+                if host_tests.is_host_test(CONFIG["host_test_name"]):
+                    self.test_supervisor = host_tests.get_host_test(CONFIG["host_test_name"])
+            result = self.test_supervisor.test(self)    #result = self.test()
+
+            if result is not None:
+                self.print_result(result)
+            else:
+                self.notify("HOST: Passive mode...")
+        except Exception, e:
+            print str(e)
+            self.print_result(self.RESULT_ERROR)
+
+    def setup(self):
+        """ Setup and check if configuration for test is
+            correct. E.g. if serial port can be opened.
+        """
+        result = True
+        if not self.mbed.serial:
+            result = False
+            self.print_result(self.RESULT_IO_SERIAL)
+        return result
+
+    def notify(self, message):
+        """ On screen notification function
+        """
+        print message
+        stdout.flush()
+
+    def print_result(self, result):
+        """ Test result unified printing function
+        """
+        self.notify("\r\n{{%s}}\r\n{{end}}" % result)
+
+
+class DefaultTestSelector(Test):
+    """ Test class with serial port initialization
+    """
+    def __init__(self):
+        HostTestResults.__init__(self)
+        Test.__init__(self)
+
+if __name__ == '__main__':
+    DefaultTestSelector().run()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,80 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import host_test_registry
+
+# This plugins provide 'flashing' methods to host test scripts
+import module_copy_mbed
+import module_copy_shell
+import module_copy_silabs
+
+try:
+    import module_copy_smart
+except:
+    pass
+
+#import module_copy_firefox
+import module_copy_mps2
+
+# Plugins used to reset certain platform
+import module_reset_mbed
+import module_reset_silabs
+import module_reset_mps2
+
+
+# Plugin registry instance
+HOST_TEST_PLUGIN_REGISTRY = host_test_registry.HostTestRegistry()
+
+# Static plugin registration
+# Some plugins are commented out if they are not stable or not commonly used
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_copy_mbed.load_plugin())
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_copy_shell.load_plugin())
+
+try:
+    HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_copy_smart.load_plugin())
+except:
+    pass
+
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_reset_mbed.load_plugin())
+#HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_copy_firefox.load_plugin())
+
+# Extra platforms support
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_copy_mps2.load_plugin())
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_reset_mps2.load_plugin())
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_copy_silabs.load_plugin())
+HOST_TEST_PLUGIN_REGISTRY.register_plugin(module_reset_silabs.load_plugin())
+
+# TODO: extend plugin loading to files with name module_*.py loaded ad-hoc
+
+###############################################################################
+# Functional interface for host test plugin registry
+###############################################################################
+def call_plugin(type, capability, *args, **kwargs):
+    """ Interface to call plugin registry functional way
+    """
+    return HOST_TEST_PLUGIN_REGISTRY.call_plugin(type, capability, *args, **kwargs)
+
+def get_plugin_caps(type):
+    """ Returns list of all capabilities for plugin family with the same type.
+        If there are no capabilities empty list is returned
+    """
+    return HOST_TEST_PLUGIN_REGISTRY.get_plugin_caps(type)
+
+def print_plugin_info():
+    """ Prints plugins' information in user friendly way
+    """
+    print HOST_TEST_PLUGIN_REGISTRY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/host_test_plugins.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,119 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from os import access, F_OK
+from sys import stdout
+from time import sleep
+from subprocess import call
+
+
+class HostTestPluginBase:
+    """ Base class for all plug-ins used with host tests.
+    """
+    ###########################################################################
+    # Interface:
+    ###########################################################################
+
+    ###########################################################################
+    # Interface attributes defining plugin name, type etc.
+    ###########################################################################
+    name = "HostTestPluginBase" # Plugin name, can be plugin class name
+    type = "BasePlugin"         # Plugin type: ResetMethod, Copymethod etc.
+    capabilities = []           # Capabilities names: what plugin can achieve
+                                # (e.g. reset using some external command line tool)
+    stable = False              # Determine if plugin is stable and can be used
+
+    ###########################################################################
+    # Interface methods
+    ###########################################################################
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        return False
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability e.g. may directly just call some command line
+            program or execute building pythonic function
+        """
+        return False
+
+    ###########################################################################
+    # Interface helper methods - overload only if you need to have custom behaviour
+    ###########################################################################
+    def print_plugin_error(self, text):
+        """ Function prints error in console and exits always with False
+        """
+        print "Plugin error: %s::%s: %s"% (self.name, self.type, text)
+        return False
+
+    def print_plugin_info(self, text, NL=True):
+        """ Function prints notification in console and exits always with True
+        """
+        if NL:
+            print "Plugin info: %s::%s: %s"% (self.name, self.type, text)
+        else:
+            print "Plugin info: %s::%s: %s"% (self.name, self.type, text),
+        return True
+
+    def print_plugin_char(self, char):
+        """ Function prints char on stdout
+        """
+        stdout.write(char)
+        stdout.flush()
+        return True
+
+    def check_mount_point_ready(self, destination_disk, init_delay=0.2, loop_delay=0.25):
+        """ Checks if destination_disk is ready and can be accessed by e.g. copy commands
+            @init_delay - Initial delay time before first access check
+            @loop_delay - pooling delay for access check
+        """
+        if not access(destination_disk, F_OK):
+            self.print_plugin_info("Waiting for mount point '%s' to be ready..."% destination_disk, NL=False)
+            sleep(init_delay)
+            while not access(destination_disk, F_OK):
+                sleep(loop_delay)
+                self.print_plugin_char('.')
+
+    def check_parameters(self, capabilitity, *args, **kwargs):
+        """ This function should be ran each time we call execute()
+            to check if none of the required parameters is missing.
+        """
+        missing_parameters = []
+        for parameter in self.required_parameters:
+            if parameter not in kwargs:
+                missing_parameters.append(parameter)
+        if len(missing_parameters) > 0:
+            self.print_plugin_error("execute parameter(s) '%s' missing!"% (', '.join(parameter)))
+            return False
+        return True
+
+    def run_command(self, cmd, shell=True):
+        """ Runs command from command line.
+        """
+        result = True
+        ret = 0
+        try:
+            ret = call(cmd, shell=shell)
+            if ret:
+                self.print_plugin_error("[ret=%d] Command: %s"% (int(ret), cmd))
+                return False
+        except Exception as e:
+            result = False
+            self.print_plugin_error("[ret=%d] Command: %s"% (int(ret), cmd))
+            self.print_plugin_error(str(e))
+        return result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/host_test_registry.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,89 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+class HostTestRegistry:
+    """ Simple class used to register and store
+        host test plugins for further usage
+    """
+    # Here we actually store all the plugins
+    PLUGINS = {}    # 'Plugin Name' : Plugin Object
+
+    def print_error(self, text):
+        print "Plugin load failed. Reason: %s"% text
+
+    def register_plugin(self, plugin):
+        """ Registers and stores plugin inside registry for further use.
+            Method also calls plugin's setup() function to configure plugin if needed.
+
+            Note: Different groups of plugins may demand different extra parameter. Plugins
+            should be at least for one type of plugin configured with the same parameters
+            because we do not know which of them will actually use particular parameter.
+        """
+        # TODO:
+        # - check for unique caps for specified type
+        if plugin.name not in self.PLUGINS:
+            if plugin.setup(): # Setup plugin can be completed without errors
+                self.PLUGINS[plugin.name] = plugin
+                return True
+            else:
+                self.print_error("%s setup failed"% plugin.name)
+        else:
+            self.print_error("%s already loaded"% plugin.name)
+        return False
+
+    def call_plugin(self, type, capability, *args, **kwargs):
+        """ Execute plugin functionality respectively to its purpose
+        """
+        for plugin_name in self.PLUGINS:
+            plugin = self.PLUGINS[plugin_name]
+            if plugin.type == type and capability in plugin.capabilities:
+                return plugin.execute(capability, *args, **kwargs)
+        return False
+
+    def get_plugin_caps(self, type):
+        """ Returns list of all capabilities for plugin family with the same type.
+            If there are no capabilities empty list is returned
+        """
+        result = []
+        for plugin_name in self.PLUGINS:
+            plugin = self.PLUGINS[plugin_name]
+            if plugin.type == type:
+                result.extend(plugin.capabilities)
+        return sorted(result)
+
+    def load_plugin(self, name):
+        """ Used to load module from
+        """
+        mod = __import__("module_%s"% name)
+        return mod
+
+    def __str__(self):
+        """ User friendly printing method to show hooked plugins
+        """
+        from prettytable import PrettyTable
+        column_names = ['name', 'type', 'capabilities', 'stable']
+        pt = PrettyTable(column_names)
+        for column in column_names:
+            pt.align[column] =  'l'
+        for plugin_name in sorted(self.PLUGINS.keys()):
+            name  = self.PLUGINS[plugin_name].name
+            type  = self.PLUGINS[plugin_name].type
+            stable = self.PLUGINS[plugin_name].stable
+            capabilities  = ', '.join(self.PLUGINS[plugin_name].capabilities)
+            row = [name, type, capabilities, stable]
+            pt.add_row(row)
+        return pt.get_string()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_copy_firefox.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,76 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from os.path import join, basename
+from host_test_plugins import HostTestPluginBase
+
+
+class HostTestPluginCopyMethod_Firefox(HostTestPluginBase):
+
+    def file_store_firefox(self, file_path, dest_disk):
+        try:
+            from selenium import webdriver
+            profile = webdriver.FirefoxProfile()
+            profile.set_preference('browser.download.folderList', 2) # custom location
+            profile.set_preference('browser.download.manager.showWhenStarting', False)
+            profile.set_preference('browser.download.dir', dest_disk)
+            profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream')
+            # Launch browser with profile and get file
+            browser = webdriver.Firefox(profile)
+            browser.get(file_path)
+            browser.close()
+        except:
+            return False
+        return True
+
+    # Plugin interface
+    name = 'HostTestPluginCopyMethod_Firefox'
+    type = 'CopyMethod'
+    capabilities = ['firefox']
+    required_parameters = ['image_path', 'destination_disk']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        try:
+            from selenium import webdriver
+        except ImportError, e:
+            self.print_plugin_error("Error: firefox copy method requires selenium library. %s"% e)
+            return False
+        return True
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capabilitity, *args, **kwargs) is True:
+            image_path = kwargs['image_path']
+            destination_disk = kwargs['destination_disk']
+            # Prepare correct command line parameter values
+            image_base_name = basename(image_path)
+            destination_path = join(destination_disk, image_base_name)
+            if capabilitity == 'firefox':
+                self.file_store_firefox(image_path, destination_path)
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginCopyMethod_Firefox()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_copy_mbed.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,78 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from shutil import copy
+from host_test_plugins import HostTestPluginBase
+from time import sleep
+
+
+class HostTestPluginCopyMethod_Mbed(HostTestPluginBase):
+
+    def generic_mbed_copy(self, image_path, destination_disk):
+        """ Generic mbed copy method for "mbed enabled" devices.
+            It uses standard python shuitl function to copy
+            image_file (target specific binary) to device's disk.
+        """
+        result = True
+        if not destination_disk.endswith('/') and not destination_disk.endswith('\\'):
+            destination_disk += '/'
+        try:
+            copy(image_path, destination_disk)
+        except Exception, e:
+            self.print_plugin_error("shutil.copy('%s', '%s')"% (image_path, destination_disk))
+            self.print_plugin_error("Error: %s"% str(e))
+            result = False
+        return result
+
+    # Plugin interface
+    name = 'HostTestPluginCopyMethod_Mbed'
+    type = 'CopyMethod'
+    stable = True
+    capabilities = ['shutil', 'default']
+    required_parameters = ['image_path', 'destination_disk', 'program_cycle_s']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        return True
+
+    def execute(self, capability, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capability, *args, **kwargs) is True:
+            # Capability 'default' is a dummy capability
+            if capability == 'shutil':
+                image_path = kwargs['image_path']
+                destination_disk = kwargs['destination_disk']
+                program_cycle_s = kwargs['program_cycle_s']
+                # Wait for mount point to be ready
+                self.check_mount_point_ready(destination_disk)  # Blocking
+                result = self.generic_mbed_copy(image_path, destination_disk)
+
+                # Allow mbed to cycle
+                sleep(program_cycle_s)
+
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginCopyMethod_Mbed()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_copy_mps2.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,150 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+import os, shutil
+from os.path import join
+from host_test_plugins import HostTestPluginBase
+from time import sleep
+
+
+class HostTestPluginCopyMethod_MPS2(HostTestPluginBase):
+
+    # MPS2 specific flashing / binary setup funcitons
+    def mps2_set_board_image_file(self, disk, images_cfg_path, image0file_path, image_name='images.txt'):
+        """ This function will alter image cfg file.
+            Main goal of this function is to change number of images to 1, comment all
+            existing image entries and append at the end of file new entry with test path.
+            @return True when all steps succeed.
+        """
+        MBED_SDK_TEST_STAMP = 'test suite entry'
+        image_path = join(disk, images_cfg_path, image_name)
+        new_file_lines = [] # New configuration file lines (entries)
+
+        # Check each line of the image configuration file
+        try:
+            with open(image_path, 'r') as file:
+                for line in file:
+                    if re.search('^TOTALIMAGES', line):
+                        # Check number of total images, should be 1
+                        new_file_lines.append(re.sub('^TOTALIMAGES:[\t ]*[\d]+', 'TOTALIMAGES: 1', line))
+                    elif re.search('; - %s[\n\r]*$'% MBED_SDK_TEST_STAMP, line):
+                        # Look for test suite entries and remove them
+                        pass    # Omit all test suite entries
+                    elif re.search('^IMAGE[\d]+FILE', line):
+                        # Check all image entries and mark the ';'
+                        new_file_lines.append(';' + line)   # Comment non test suite lines
+                    else:
+                        # Append line to new file
+                        new_file_lines.append(line)
+        except IOError as e:
+            return False
+
+        # Add new image entry with proper commented stamp
+        new_file_lines.append('IMAGE0FILE: %s    ; - %s\r\n'% (image0file_path, MBED_SDK_TEST_STAMP))
+
+        # Write all lines to file
+        try:
+            with open(image_path, 'w') as file:
+                for line in new_file_lines:
+                    file.write(line),
+        except IOError:
+            return False
+
+        return True
+
+    def mps2_select_core(self, disk, mobo_config_name=""):
+        """ Function selects actual core
+        """
+        # TODO: implement core selection
+        pass
+
+    def mps2_switch_usb_auto_mounting_after_restart(self, disk, usb_config_name=""):
+        """ Function alters configuration to allow USB MSD to be mounted after restarts
+        """
+        # TODO: implement USB MSD restart detection
+        pass
+
+    def copy_file(self, file, disk):
+        if not file:
+            return
+            
+        _, ext = os.path.splitext(file)
+        ext = ext.lower()
+        dfile = disk + "/SOFTWARE/mbed" + ext
+        
+        if os.path.isfile(dfile):
+            print('Remove old binary %s' % dfile)
+            os.remove(dfile)
+
+        shutil.copy(file, dfile)
+        return True
+        
+    def touch_file(self, file):
+        """ Touch file and set timestamp to items
+        """
+        tfile = file+'.tmp'
+        fhandle = open(tfile, 'a')
+        try:
+            fhandle.close()
+        finally:
+            os.rename(tfile, file)
+            return True
+
+    # Plugin interface
+    name = 'HostTestPluginCopyMethod_MPS2'
+    type = 'CopyMethod'
+    capabilities = ['mps2-copy']
+    required_parameters = ['image_path', 'destination_disk']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        return True
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capabilitity, *args, **kwargs) is True:
+            file = kwargs['image_path']
+            disk = kwargs['destination_disk']
+            
+            """ Add a delay in case there a test just finished
+                Prevents interface firmware hiccups
+            """
+            sleep(20)
+            if capabilitity == 'mps2-copy' and self.copy_file(file, disk):
+                sleep(3)
+                if self.touch_file(disk + 'reboot.txt'):
+                    """ Add a delay after the board was rebooted.
+                        The actual reboot time is 20 seconds, but using 15 seconds
+                        allows us to open the COM port and save a board reset.
+                        This also prevents interface firmware hiccups.
+                    """
+                    sleep(7)
+                    result = True
+                    
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginCopyMethod_MPS2()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_copy_shell.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,74 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+from os.path import join, basename
+from host_test_plugins import HostTestPluginBase
+from time import sleep
+
+
+class HostTestPluginCopyMethod_Shell(HostTestPluginBase):
+
+    # Plugin interface
+    name = 'HostTestPluginCopyMethod_Shell'
+    type = 'CopyMethod'
+    stable = True
+    capabilities = ['shell', 'cp', 'copy', 'xcopy']
+    required_parameters = ['image_path', 'destination_disk', 'program_cycle_s']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        return True
+
+    def execute(self, capability, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capability, *args, **kwargs) is True:
+            image_path = kwargs['image_path']
+            destination_disk = kwargs['destination_disk']
+            program_cycle_s = kwargs['program_cycle_s']
+            # Wait for mount point to be ready
+            self.check_mount_point_ready(destination_disk)  # Blocking
+            # Prepare correct command line parameter values
+            image_base_name = basename(image_path)
+            destination_path = join(destination_disk, image_base_name)
+            if capability == 'shell':
+                if os.name == 'nt': capability = 'copy'
+                elif os.name == 'posix': capability = 'cp'
+            if capability == 'cp' or capability == 'copy' or capability == 'copy':
+                copy_method = capability
+                cmd = [copy_method, image_path, destination_path]
+                if os.name == 'posix':
+                    result = self.run_command(cmd, shell=False)
+                    result = self.run_command(["sync"])
+                else:
+                    result = self.run_command(cmd)
+
+            # Allow mbed to cycle
+            sleep(program_cycle_s)
+
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginCopyMethod_Shell()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_copy_silabs.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,67 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from host_test_plugins import HostTestPluginBase
+from time import sleep
+
+
+class HostTestPluginCopyMethod_Silabs(HostTestPluginBase):
+
+    # Plugin interface
+    name = 'HostTestPluginCopyMethod_Silabs'
+    type = 'CopyMethod'
+    capabilities = ['eACommander', 'eACommander-usb']
+    required_parameters = ['image_path', 'destination_disk', 'program_cycle_s']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        self.EACOMMANDER_CMD = 'eACommander.exe'
+        return True
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capabilitity, *args, **kwargs) is True:
+            image_path = kwargs['image_path']
+            destination_disk = kwargs['destination_disk']
+            program_cycle_s = kwargs['program_cycle_s']
+            if capabilitity == 'eACommander':
+                cmd = [self.EACOMMANDER_CMD,
+                       '--serialno', destination_disk,
+                       '--flash', image_path,
+                       '--resettype', '2', '--reset']
+                result = self.run_command(cmd)
+            elif capabilitity == 'eACommander-usb':
+                cmd = [self.EACOMMANDER_CMD,
+                       '--usb', destination_disk,
+                       '--flash', image_path]
+                result = self.run_command(cmd)
+
+            # Allow mbed to cycle
+            sleep(program_cycle_s)
+
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginCopyMethod_Silabs()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_copy_smart.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,118 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+import sys
+from os.path import join, basename, exists, abspath, dirname
+from time import sleep
+from host_test_plugins import HostTestPluginBase
+
+sys.path.append(abspath(join(dirname(__file__), "../../../")))
+from tools.test_api import get_autodetected_MUTS_list
+
+class HostTestPluginCopyMethod_Smart(HostTestPluginBase):
+
+    # Plugin interface
+    name = 'HostTestPluginCopyMethod_Smart'
+    type = 'CopyMethod'
+    stable = True
+    capabilities = ['smart']
+    required_parameters = ['image_path', 'destination_disk', 'target_mcu']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        return True
+
+    def execute(self, capability, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capability, *args, **kwargs) is True:
+            image_path = kwargs['image_path']
+            destination_disk = kwargs['destination_disk']
+            target_mcu = kwargs['target_mcu']
+            # Wait for mount point to be ready
+            self.check_mount_point_ready(destination_disk)  # Blocking
+            # Prepare correct command line parameter values
+            image_base_name = basename(image_path)
+            destination_path = join(destination_disk, image_base_name)
+            if capability == 'smart':
+                if os.name == 'posix':
+                    cmd = ['cp', image_path, destination_path]
+                    result = self.run_command(cmd, shell=False)
+
+                    cmd = ['sync']
+                    result = self.run_command(cmd, shell=False)
+                elif os.name == 'nt':
+                    cmd = ['copy', image_path, destination_path]
+                    result = self.run_command(cmd, shell=True)
+
+                # Give the OS and filesystem time to settle down
+                sleep(3)
+
+                platform_name_filter = [target_mcu]
+                muts_list = {}
+
+                remount_complete = False
+
+                for i in range(0, 60):
+                    print('Looking for %s with MBEDLS' % target_mcu)
+                    muts_list = get_autodetected_MUTS_list(platform_name_filter=platform_name_filter)
+
+                    if 1 in muts_list:
+                        mut = muts_list[1]
+                        destination_disk = mut['disk']
+                        destination_path = join(destination_disk, image_base_name)
+
+                        if mut['mcu'] == 'LPC1768' or mut['mcu'] == 'LPC11U24':
+                            if exists(destination_disk) and exists(destination_path):
+                                remount_complete = True
+                                break;
+                        else:
+                            if exists(destination_disk) and not exists(destination_path):
+                                remount_complete = True
+                                break;
+
+                    sleep(1)
+
+                if remount_complete:
+                    print('Remount complete')
+                else:
+                    print('Remount FAILED')
+
+                    if exists(destination_disk):
+                        print('Disk exists')
+                    else:
+                        print('Disk does not exist')
+
+                    if exists(destination_path):
+                        print('Image exists')
+                    else:
+                        print('Image does not exist')
+
+                    result = None
+
+
+        return result
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginCopyMethod_Smart()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_reset_mbed.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,72 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from host_test_plugins import HostTestPluginBase
+
+
+class HostTestPluginResetMethod_Mbed(HostTestPluginBase):
+
+    def safe_sendBreak(self, serial):
+        """ Wraps serial.sendBreak() to avoid serial::serialposix.py exception on Linux
+            Traceback (most recent call last):
+              File "make.py", line 189, in <module>
+                serial.sendBreak()
+              File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 511, in sendBreak
+                termios.tcsendbreak(self.fd, int(duration/0.25))
+            error: (32, 'Broken pipe')
+        """
+        result = True
+        try:
+            serial.sendBreak()
+        except:
+            # In linux a termios.error is raised in sendBreak and in setBreak.
+            # The following setBreak() is needed to release the reset signal on the target mcu.
+            try:
+                serial.setBreak(False)
+            except:
+                result = False
+        return result
+
+    # Plugin interface
+    name = 'HostTestPluginResetMethod_Mbed'
+    type = 'ResetMethod'
+    stable = True
+    capabilities = ['default']
+    required_parameters = ['serial']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        return True
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capabilitity, *args, **kwargs) is True:
+            if capabilitity == 'default':
+                serial = kwargs['serial']
+                result = self.safe_sendBreak(serial)
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginResetMethod_Mbed()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_reset_mps2.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,78 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import os
+from host_test_plugins import HostTestPluginBase
+from time import sleep
+
+# Note: This plugin is not fully functional, needs improvements
+
+class HostTestPluginResetMethod_MPS2(HostTestPluginBase):
+    """ Plugin used to reset ARM_MPS2 platform
+    Supports:
+         reboot.txt   - startup from standby state, reboots when in run mode.
+         shutdown.txt - shutdown from run mode.
+         reset.txt    - reset FPGA during run mode.
+    """
+    def touch_file(self, file):
+        """ Touch file and set timestamp to items
+        """
+        tfile = file+'.tmp'
+        fhandle = open(tfile, 'a')
+        try:
+            fhandle.close()
+        finally:
+            os.rename(tfile, file)
+            return True
+
+    # Plugin interface
+    name = 'HostTestPluginResetMethod_MPS2'
+    type = 'ResetMethod'
+    capabilities = ['mps2-reboot', 'mps2-reset']
+    required_parameters = ['disk']
+
+    def setup(self, *args, **kwargs):
+        """ Prepare / configure plugin to work.
+            This method can receive plugin specific parameters by kwargs and
+            ignore other parameters which may affect other plugins.
+        """
+        return True
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        return True
+        result = False
+        if self.check_parameters(capabilitity, *args, **kwargs) is True:
+            disk = kwargs['disk']
+            
+            if capabilitity == 'mps2-reboot' and self.touch_file(disk + 'reboot.txt'):
+                sleep(20)
+                result = True
+
+            elif capabilitity == 'mps2-reset' and self.touch_file(disk + 'reboot.txt'):
+                sleep(20)
+                result = True
+
+        return result
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginResetMethod_MPS2()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/host_tests_plugins/module_reset_silabs.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,66 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from host_test_plugins import HostTestPluginBase
+
+
+class HostTestPluginResetMethod_SiLabs(HostTestPluginBase):
+
+    # Plugin interface
+    name = 'HostTestPluginResetMethod_SiLabs'
+    type = 'ResetMethod'
+    stable = True
+    capabilities = ['eACommander', 'eACommander-usb']
+    required_parameters = ['disk']
+
+    def setup(self, *args, **kwargs):
+        """ Configure plugin, this function should be called before plugin execute() method is used.
+        """
+        # Note you need to have eACommander.exe on your system path!
+        self.EACOMMANDER_CMD = 'eACommander.exe'
+        return True
+
+    def execute(self, capabilitity, *args, **kwargs):
+        """ Executes capability by name.
+            Each capability may directly just call some command line
+            program or execute building pythonic function
+        """
+        result = False
+        if self.check_parameters(capabilitity, *args, **kwargs) is True:
+            disk = kwargs['disk'].rstrip('/\\')
+
+            if capabilitity == 'eACommander':
+                # For this copy method 'disk' will be 'serialno' for eACommander command line parameters
+                # Note: Commands are executed in the order they are specified on the command line
+                cmd = [self.EACOMMANDER_CMD,
+                       '--serialno', disk,
+                       '--resettype', '2', '--reset',]
+                result = self.run_command(cmd)
+            elif capabilitity == 'eACommander-usb':
+                # For this copy method 'disk' will be 'usb address' for eACommander command line parameters
+                # Note: Commands are executed in the order they are specified on the command line
+                cmd = [self.EACOMMANDER_CMD,
+                       '--usb', disk,
+                       '--resettype', '2', '--reset',]
+                result = self.run_command(cmd)
+        return result
+
+
+def load_plugin():
+    """ Returns plugin available in this module
+    """
+    return HostTestPluginResetMethod_SiLabs()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/mbedrpc.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,225 @@
+# mbedRPC.py - mbed RPC interface for Python
+#
+##Copyright (c) 2010 ARM Ltd
+##
+##Permission is hereby granted, free of charge, to any person obtaining a copy
+##of this software and associated documentation files (the "Software"), to deal
+##in the Software without restriction, including without limitation the rights
+##to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+##copies of the Software, and to permit persons to whom the Software is
+##furnished to do so, subject to the following conditions:
+## 
+##The above copyright notice and this permission notice shall be included in
+##all copies or substantial portions of the Software.
+## 
+##THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+##IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+##FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+##AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+##LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+##OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+##THE SOFTWARE.
+#
+# Example:
+# >from mbedRPC import*
+# >mbed = SerialRPC("COM5",9600)
+# >myled = DigitalOut(mbed,"myled") <--- Where the text in quotations matches your RPC pin definition's second parameter, in this case it could be RpcDigitalOut myled(LED1,"myled");
+# >myled.write(1)
+# >
+
+import serial, urllib2, time
+
+# mbed super class
+class mbed:
+    def __init__(self):
+        print("This will work as a demo but no transport mechanism has been selected")
+
+    def rpc(self, name, method, args):
+        print("Superclass method not overridden")
+
+
+# Transport mechanisms, derived from mbed
+class SerialRPC(mbed):
+    def __init__(self, port, baud):
+        self.ser = serial.Serial(port)
+        self.ser.setBaudrate(baud)
+
+    def rpc(self, name, method, args):
+        # creates the command to be sent serially - /name/method arg1 arg2 arg3 ... argN
+        str = "/" + name + "/" + method + " " + " ".join(args) + "\n"
+        # prints the command being executed
+        print str
+        # writes the command to serial
+        self.ser.write(str)
+        # strips trailing characters from the line just written
+        ret_val = self.ser.readline().strip()
+        return ret_val
+
+
+class HTTPRPC(mbed):
+    def __init__(self, ip):
+        self.host = "http://" + ip
+
+    def rpc(self, name, method, args):
+        response = urllib2.urlopen(self.host + "/rpc/" + name + "/" + method + "%20" + "%20".join(args))
+        return response.read().strip()
+
+
+# generic mbed interface super class
+class mbed_interface():
+    # initialize an mbed interface with a transport mechanism and pin name
+    def __init__(self, this_mbed, mpin):
+        self.mbed = this_mbed
+        if isinstance(mpin, str):
+            self.name = mpin
+
+    def __del__(self):
+        r = self.mbed.rpc(self.name, "delete", [])
+
+    def new(self, class_name, name, pin1, pin2 = "", pin3 = ""):
+        args = [arg for arg in [pin1,pin2,pin3,name] if arg != ""]
+        r = self.mbed.rpc(class_name, "new", args)
+
+    # generic read
+    def read(self):
+        r = self.mbed.rpc(self.name, "read", [])
+        return int(r)
+
+
+# for classes that need write functionality - inherits from the generic reading interface
+class mbed_interface_write(mbed_interface):
+    def __init__(self, this_mbed, mpin):
+        mbed_interface.__init__(self, this_mbed, mpin)
+
+    # generic write
+    def write(self, value):
+        r = self.mbed.rpc(self.name, "write", [str(value)])
+
+
+# mbed interfaces
+class DigitalOut(mbed_interface_write):
+    def __init__(self, this_mbed, mpin):
+        mbed_interface_write.__init__(self, this_mbed, mpin)
+
+
+class AnalogIn(mbed_interface):
+    def __init__(self, this_mbed, mpin):
+        mbed_interface.__init__(self, this_mbed, mpin)
+
+    def read_u16(self):
+        r = self.mbed.rpc(self.name, "read_u16", [])
+        return int(r)
+
+
+class AnalogOut(mbed_interface_write):
+    def __init__(self, this_mbed, mpin):
+        mbed_interface_write.__init__(self, this_mbed, mpin)
+
+    def write_u16(self, value):
+        self.mbed.rpc(self.name, "write_u16", [str(value)])
+
+    def read(self):
+        r = self.mbed.rpc(self.name, "read", [])
+        return float(r)
+
+
+class DigitalIn(mbed_interface):
+    def __init__(self, this_mbed, mpin):
+        mbed_interface.__init__(self, this_mbed, mpin)
+
+
+class PwmOut(mbed_interface_write):
+    def __init__(self, this_mbed, mpin):
+        mbed_interface_write.__init__(self, this_mbed, mpin)
+
+    def read(self):
+        r = self.mbed.rpc(self.name, "read", [])
+        return r
+
+    def period(self, value):
+        self.mbed.rpc(self.name, "period", [str(value)])
+
+    def period_ms(self, value):
+        self.mbed.rpc(self.name, "period_ms", [str(value)])
+
+    def period_us(self, value):
+        self.mbed.rpc(self.name, "period_us", [str(value)])
+
+    def pulsewidth(self, value):
+        self.mbed.rpc(self.name, "pulsewidth", [str(value)])
+
+    def pulsewidth_ms(self, value):
+        self.mbed.rpc(self.name, "pulsewidth_ms", [str(value)])
+
+    def pulsewidth_us(self, value):
+        self.mbed.rpc(self.name, "pulsewidth_us", [str(value)])
+
+
+class RPCFunction(mbed_interface):
+    def __init__(self, this_mbed, name):
+        mbed_interface.__init__(self, this_mbed, name)
+
+    def run(self, input):
+        r = self.mbed.rpc(self.name, "run", [input])
+        return r
+
+
+class RPCVariable(mbed_interface_write):
+    def __init__(self, this_mbed, name):
+        mbed_interface_write.__init__(self, this_mbed, name)
+
+    def read(self):
+        r = self.mbed.rpc(self.name, "read", [])
+        return r
+
+class Timer(mbed_interface):
+    def __init__(self, this_mbed, name):
+        mbed_interface.__init__(self, this_mbed, name)
+
+    def start(self):
+        r = self.mbed.rpc(self.name, "start", [])
+
+    def stop(self):
+        r = self.mbed.rpc(self.name, "stop", [])
+
+    def reset(self):
+        r = self.mbed.rpc(self.name, "reset", [])
+
+    def read(self):
+        r = self.mbed.rpc(self.name, "read", [])
+        return float(re.search('\d+\.*\d*', r).group(0))
+
+    def read_ms(self):
+        r = self.mbed.rpc(self.name, "read_ms", [])
+        return float(re.search('\d+\.*\d*', r).group(0))
+
+    def read_us(self):
+        r = self.mbed.rpc(self.name, "read_us", [])
+        return float(re.search('\d+\.*\d*', r).group(0))
+
+# Serial
+class Serial():
+    def __init__(self, this_mbed, tx, rx=""):
+        self.mbed = this_mbed
+        if isinstance(tx, str):
+            self.name = tx
+
+    def __del__(self):
+        r = self.mbed.rpc(self.name, "delete", [])
+
+    def baud(self, value):
+        r = self.mbed.rpc(self.name, "baud", [str(value)])
+
+    def putc(self, value):
+        r = self.mbed.rpc(self.name, "putc", [str(value)])
+
+    def puts(self, value):
+        r = self.mbed.rpc(self.name, "puts", ["\"" + str(value) + "\""])
+
+    def getc(self):
+        r = self.mbed.rpc(self.name, "getc", [])
+        return int(r)
+
+
+def wait(s):
+    time.sleep(s)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/midi.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,72 @@
+from __future__ import print_function
+import sys
+import re
+import time
+import mido
+from mido import Message
+
+
+def test_midi_in(port):
+	expected_messages_count=0
+	while expected_messages_count < 7:
+		for message in port.iter_pending():
+			if message.type in ('note_on', 'note_off', 'program_change', 'sysex'):
+				yield message
+				expected_messages_count+=1
+		time.sleep(0.1)
+
+def test_midi_loopback(input_port):
+	expected_messages_count=0
+	while expected_messages_count < 1:
+		for message in input_port.iter_pending():
+			print('Test MIDI OUT loopback received {}'.format(message.hex()))
+			expected_messages_count+=1
+
+def test_midi_out_loopback(output_port,input_port):
+	print("Test MIDI OUT loopback")
+	output_port.send(Message('program_change', program=1))
+	test_midi_loopback(input_port)
+
+	output_port.send(Message('note_on', note=21))
+	test_midi_loopback(input_port)
+
+	output_port.send(Message('note_off', note=21))
+	test_midi_loopback(input_port)
+
+	output_port.send(Message('sysex', data=[0x7E,0x7F,0x09,0x01]))
+	test_midi_loopback(input_port)
+
+	output_port.send(Message('sysex', data=[0x7F,0x7F,0x04,0x01,0x7F,0x7F]))
+	test_midi_loopback(input_port)
+
+	output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41]))
+	test_midi_loopback(input_port)
+
+	output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D]))
+	test_midi_loopback(input_port)
+
+portname=""
+
+while portname=="":
+	print("Wait for MIDI IN plug ...")
+	for name in mido.get_input_names():
+		matchObj = re.match( r'Mbed', name)
+
+		if matchObj:
+			portname=name
+	time.sleep( 1 )
+
+try:
+	input_port = mido.open_input(portname)
+	output_port = mido.open_output(portname)
+	
+	print('Using {}'.format(input_port))
+
+	print("Test MIDI IN")
+
+	for message in test_midi_in(input_port):
+		print('Test MIDI IN received {}'.format(message.hex()))
+
+	test_midi_out_loopback(output_port,input_port)
+except KeyboardInterrupt:
+    pass
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/net_test.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,27 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from host_test import Test, Simple
+from sys import stdout
+
+class NETTest(Simple):
+    def __init__(self):
+        Test.__init__(self)
+        self.mbed.init_serial(115200)
+        self.mbed.reset()
+
+if __name__ == '__main__':
+    NETTest().run()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/rpc.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,56 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from host_test import Test
+from mbedrpc import SerialRPC, DigitalOut, DigitalIn, pin
+
+
+class RpcTest(Test):
+    def test(self):
+        self.notify("RPC Test")
+        s = SerialRPC(self.mbed.port, debug=True)
+
+        self.notify("Init remote objects")
+
+        p_out = pin("p10")
+        p_in  = pin("p11")
+
+        if hasattr(self.mbed.options, 'micro'):
+            if self.mbed.options.micro == 'M0+':
+                print "Freedom Board: PTA12 <-> PTC4"
+                p_out = pin("PTA12")
+                p_in  = pin("PTC4")
+
+        self.output = DigitalOut(s, p_out);
+        self.input = DigitalIn(s, p_in);
+
+        self.check = True
+        self.write_read_test(1)
+        self.write_read_test(0)
+        return self.check
+
+    def write_read_test(self, v):
+        self.notify("Check %d" % v)
+        self.output.write(v)
+        if self.input.read() != v:
+            self.notify("ERROR")
+            self.check = False
+        else:
+            self.notify("OK")
+
+
+if __name__ == '__main__':
+    RpcTest().run()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/rtc_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,50 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+from time import time, strftime, gmtime
+
+class RTCTest():
+    PATTERN_RTC_VALUE = "\[(\d+)\] \[(\d+-\d+-\d+ \d+:\d+:\d+ [AaPpMm]{2})\]"
+    re_detect_rtc_value = re.compile(PATTERN_RTC_VALUE)
+
+    def test(self, selftest):
+        test_result = True
+        start = time()
+        sec_prev = 0
+        for i in range(0, 5):
+            # Timeout changed from default: we need to wait longer for some boards to start-up
+            c = selftest.mbed.serial_readline(timeout=10)
+            if c is None:
+                return selftest.RESULT_IO_SERIAL
+            selftest.notify(c.strip())
+            delta = time() - start
+            m = self.re_detect_rtc_value.search(c)
+            if m and len(m.groups()):
+                sec = int(m.groups()[0])
+                time_str = m.groups()[1]
+                correct_time_str = strftime("%Y-%m-%d %H:%M:%S %p", gmtime(float(sec)))
+                single_result = time_str == correct_time_str and sec > 0 and sec > sec_prev
+                test_result = test_result and single_result
+                result_msg = "OK" if single_result else "FAIL"
+                selftest.notify("HOST: [%s] [%s] received time %+d sec after %.2f sec... %s"% (sec, time_str, sec - sec_prev, delta, result_msg))
+                sec_prev = sec
+            else:
+                test_result = False
+                break
+            start = time()
+        return selftest.RESULT_SUCCESS if test_result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/serial_nc_rx_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,64 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import sys
+import uuid
+import time
+import string
+from sys import stdout
+
+class SerialNCRXTest():
+
+    def test(self, selftest):
+        selftest.mbed.flush();
+        selftest.mbed.serial_write("E");
+
+        strip_chars = string.whitespace + "\0"
+
+        out_str = selftest.mbed.serial_readline()
+
+        if not out_str:
+            selftest.notify("HOST: No output detected")
+            return selftest.RESULT_IO_SERIAL
+
+        out_str_stripped = out_str.strip(strip_chars)
+
+        if out_str_stripped != "RX OK - Expected":
+            selftest.notify("HOST: Unexpected output. Expected 'RX OK - Expected' but received '%s'" % out_str_stripped)
+            return selftest.RESULT_FAILURE
+
+        # Wait 0.5 seconds to ensure mbed is listening
+        time.sleep(0.5)
+
+        # Send character, mbed shouldn't receive
+        selftest.mbed.serial_write("U");
+
+        out_str = selftest.mbed.serial_readline()
+
+        # If no characters received, pass the test
+        if not out_str:
+            selftest.notify("HOST: No further output detected")
+            return selftest.RESULT_SUCCESS
+        else:
+            out_str_stripped = out_str.strip(strip_chars)
+
+            if out_str_stripped == "RX OK - Unexpected":
+                selftest.notify("HOST: Unexpected output returned indicating RX still functioning")
+            else:
+                selftest.notify("HOST: Extraneous output '%s' detected indicating unknown error" % out_str_stripped)
+
+            return selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/serial_nc_tx_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,59 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import sys
+import uuid
+import time
+import string
+from sys import stdout
+
+class SerialNCTXTest():
+
+    def test(self, selftest):
+        selftest.mbed.flush();
+        selftest.mbed.serial_write("S");
+
+        strip_chars = string.whitespace + "\0"
+
+        out_str = selftest.mbed.serial_readline()
+        selftest.notify("HOST: " + out_str)
+
+        if not out_str:
+            selftest.notify("HOST: No output detected")
+            return selftest.RESULT_IO_SERIAL
+
+        out_str_stripped = out_str.strip(strip_chars)
+
+        if out_str_stripped != "TX OK - Expected":
+            selftest.notify("HOST: Unexpected output. Expected 'TX OK - Expected' but received '%s'" % out_str_stripped)
+            return selftest.RESULT_FAILURE
+
+        out_str = selftest.mbed.serial_readline()
+
+        # If no characters received, pass the test
+        if not out_str:
+            selftest.notify("HOST: No further output detected")
+            return selftest.RESULT_SUCCESS
+        else:
+            out_str_stripped = out_str.strip(strip_chars)
+
+            if out_str_stripped == "TX OK - Unexpected":
+                selftest.notify("HOST: Unexpected output returned indicating TX still functioning")
+            else:
+                selftest.notify("HOST: Extraneous output '%s' detected indicating unknown error" % out_str_stripped)
+
+            return selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/stdio_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,56 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+import random
+from time import time
+
+class StdioTest():
+    PATTERN_INT_VALUE = "Your value was: (-?\d+)"
+    re_detect_int_value = re.compile(PATTERN_INT_VALUE)
+
+    def test(self, selftest):
+        test_result = True
+
+        c = selftest.mbed.serial_readline() # {{start}} preamble
+        if c is None:
+            return selftest.RESULT_IO_SERIAL
+        selftest.notify(c)
+
+        for i in range(0, 10):
+            random_integer = random.randint(-99999, 99999)
+            selftest.notify("HOST: Generated number: " + str(random_integer))
+            start = time()
+            selftest.mbed.serial_write(str(random_integer) + "\n")
+
+            serial_stdio_msg = selftest.mbed.serial_readline()
+            if serial_stdio_msg is None:
+                return selftest.RESULT_IO_SERIAL
+            delay_time = time() - start
+            selftest.notify(serial_stdio_msg.strip())
+
+            # Searching for reply with scanned values
+            m = self.re_detect_int_value.search(serial_stdio_msg)
+            if m and len(m.groups()):
+                int_value = m.groups()[0]
+                int_value_cmp = random_integer == int(int_value)
+                test_result = test_result and int_value_cmp
+                selftest.notify("HOST: Number %s read after %.3f sec ... [%s]"% (int_value, delay_time, "OK" if int_value_cmp else "FAIL"))
+            else:
+                test_result = False
+                break
+        return selftest.RESULT_SUCCESS if test_result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/tcpecho_client.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,57 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import socket
+import string, random
+from time import time
+
+from private_settings import SERVER_ADDRESS
+
+ECHO_PORT = 7
+
+LEN_PACKET = 127
+N_PACKETS = 5000
+TOT_BITS = float(LEN_PACKET * N_PACKETS * 8) * 2
+MEGA = float(1024 * 1024)
+UPDATE_STEP = (N_PACKETS/10)
+
+class TCP_EchoClient:
+    def __init__(self, host):
+        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        self.s.connect((host, ECHO_PORT))
+        self.packet = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(LEN_PACKET))
+
+    def __packet(self):
+        # Comment out the checks when measuring the throughput
+        # self.packet = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(LEN_PACKET))
+        self.s.send(self.packet)
+        data = self.s.recv(LEN_PACKET)
+        # assert self.packet == data, "packet error:\n%s\n%s\n" % (self.packet, data)
+
+    def test(self):
+        start = time()
+        for i in range(N_PACKETS):
+            if (i % UPDATE_STEP) == 0: print '%.2f%%' % ((float(i)/float(N_PACKETS)) * 100.)
+            self.__packet()
+        t = time() - start
+        print 'Throughput: (%.2f)Mbits/s' % ((TOT_BITS / t)/MEGA)
+
+    def __del__(self):
+        self.s.close()
+
+while True:
+    e = TCP_EchoClient(SERVER_ADDRESS)
+    e.test()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/tcpecho_client_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,87 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import sys
+import socket
+from sys import stdout
+from SocketServer import BaseRequestHandler, TCPServer
+
+class TCPEchoClient_Handler(BaseRequestHandler):
+    def handle(self):
+        """ One handle per connection
+        """
+        print "HOST: Connection received...",
+        count = 1;
+        while True:
+            data = self.request.recv(1024)
+            if not data: break
+            self.request.sendall(data)
+            if '{{end}}' in str(data):
+                print
+                print str(data)
+            else:
+                if not count % 10:
+                    sys.stdout.write('.')
+                count += 1
+            stdout.flush()
+
+class TCPEchoClientTest():
+    def send_server_ip_port(self, selftest, ip_address, port_no):
+        """ Set up network host. Reset target and and send server IP via serial to Mbed
+        """
+        c = selftest.mbed.serial_readline() # 'TCPCllient waiting for server IP and port...'
+        if c is None:
+            self.print_result(selftest.RESULT_IO_SERIAL)
+            return
+
+        selftest.notify(c.strip())
+        selftest.notify("HOST: Sending server IP Address to target...")
+
+        connection_str = ip_address + ":" + str(port_no) + "\n"
+        selftest.mbed.serial_write(connection_str)
+        selftest.notify(connection_str)
+
+        # Two more strings about connection should be sent by MBED
+        for i in range(0, 2):
+            c = selftest.mbed.serial_readline()
+            if c is None:
+                selftest.print_result(self.RESULT_IO_SERIAL)
+                return
+            selftest.notify(c.strip())
+
+    def test(self, selftest):
+        # We need to discover SERVEP_IP and set up SERVER_PORT
+        # Note: Port 7 is Echo Protocol:
+        #
+        # Port number rationale:
+        #
+        # The Echo Protocol is a service in the Internet Protocol Suite defined
+        # in RFC 862. It was originally proposed for testing and measurement
+        # of round-trip times[citation needed] in IP networks.
+        #
+        # A host may connect to a server that supports the Echo Protocol using
+        # the Transmission Control Protocol (TCP) or the User Datagram Protocol
+        # (UDP) on the well-known port number 7. The server sends back an
+        # identical copy of the data it received.
+        SERVER_IP = str(socket.gethostbyname(socket.getfqdn()))
+        SERVER_PORT = 7
+
+        # Returning none will suppress host test from printing success code
+        server = TCPServer((SERVER_IP, SERVER_PORT), TCPEchoClient_Handler)
+        print "HOST: Listening for TCP connections: " + SERVER_IP + ":" + str(SERVER_PORT)
+        self.send_server_ip_port(selftest, SERVER_IP, SERVER_PORT)
+        server.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/tcpecho_server.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,50 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from SocketServer import BaseRequestHandler, TCPServer
+from time import time
+
+from private_settings import LOCALHOST
+
+MAX_INDEX = 126
+MEGA = float(1024 * 1024)
+
+class TCP_EchoHandler(BaseRequestHandler):
+    def handle(self):
+        print "\nconnection received"
+        start = time()
+        bytes = 0
+        index = 0
+        while True:
+            data = self.request.recv(1024)
+            if not data: break
+
+            bytes += len(data)
+            for n in map(ord, data):
+                if n != index:
+                    print "data error %d != %d" % (n , index)
+                index += 1
+                if index > MAX_INDEX:
+                    index = 0
+
+            self.request.sendall(data)
+        t = time() - start
+        b = float(bytes * 8) * 2
+        print "Throughput: (%.2f)Mbits/s" % ((b/t)/MEGA)
+
+server = TCPServer((LOCALHOST, 7), TCP_EchoHandler)
+print "listening for connections"
+server.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/tcpecho_server_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,84 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+import sys
+import uuid
+import socket
+from sys import stdout
+
+class TCPEchoServerTest():
+    ECHO_SERVER_ADDRESS = ""
+    ECHO_PORT = 0
+    ECHO_LOOPs = 100
+    s = None # Socket
+
+    PATTERN_SERVER_IP = "Server IP Address is (\d+).(\d+).(\d+).(\d+):(\d+)"
+    re_detect_server_ip = re.compile(PATTERN_SERVER_IP)
+
+    def test(self, selftest):
+        result = False
+        c = selftest.mbed.serial_readline()
+        if c is None:
+            return selftest.RESULT_IO_SERIAL
+        selftest.notify(c)
+
+        m = self.re_detect_server_ip.search(c)
+        if m and len(m.groups()):
+            self.ECHO_SERVER_ADDRESS = ".".join(m.groups()[:4])
+            self.ECHO_PORT = int(m.groups()[4]) # must be integer for socket.connect method
+            selftest.notify("HOST: TCP Server found at: " + self.ECHO_SERVER_ADDRESS + ":" + str(self.ECHO_PORT))
+
+            # We assume this test fails so can't send 'error' message to server
+            try:
+                self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+                self.s.connect((self.ECHO_SERVER_ADDRESS, self.ECHO_PORT))
+            except Exception, e:
+                self.s = None
+                selftest.notify("HOST: Socket error: %s"% e)
+                return selftest.RESULT_ERROR
+
+            print 'HOST: Sending %d echo strings...'% self.ECHO_LOOPs,
+            for i in range(0, self.ECHO_LOOPs):
+                TEST_STRING = str(uuid.uuid4())
+                try:
+                    self.s.sendall(TEST_STRING)
+                    data = self.s.recv(128)
+                except Exception, e:
+                    self.s = None
+                    selftest.notify("HOST: Socket error: %s"% e)
+                    return selftest.RESULT_ERROR
+
+                received_str = repr(data)[1:-1]
+                if TEST_STRING == received_str: # We need to cut not needed single quotes from the string
+                    sys.stdout.write('.')
+                    stdout.flush()
+                    result = True
+                else:
+                    print "Expected: "
+                    print "'%s'"% TEST_STRING
+                    print "received: "
+                    print "'%s'"% received_str
+                    result = False
+                    break
+
+            if self.s is not None:
+                self.s.close()
+        else:
+            selftest.notify("HOST: TCP Server not found")
+            result = False
+        return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/tcpecho_server_loop.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,40 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+# Be sure that the tools directory is in the search path
+import sys
+from os.path import join, abspath, dirname
+ROOT = abspath(join(dirname(__file__), "..", ".."))
+sys.path.insert(0, ROOT)
+
+from tools.private_settings import LOCALHOST
+from SocketServer import BaseRequestHandler, TCPServer
+
+
+class TCP_EchoHandler(BaseRequestHandler):
+    def handle(self):
+        print "\nHandle connection from:", self.client_address
+        while True:
+            data = self.request.recv(1024)
+            if not data: break
+            self.request.sendall(data)
+        self.request.close()
+        print "socket closed"
+
+if __name__ == '__main__':
+    server = TCPServer((LOCALHOST, 7), TCP_EchoHandler)
+    print "listening for connections on:", (LOCALHOST, 7)
+    server.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/udp_link_layer_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,145 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+"""
+How to use:
+make.py -m LPC1768 -t ARM -d E:\ -n NET_14
+udp_link_layer_auto.py -p COM20 -d E:\ -t 10
+"""
+
+import re
+import uuid
+import socket
+import thread
+from sys import stdout
+from time import time, sleep
+from host_test import DefaultTest
+from SocketServer import BaseRequestHandler, UDPServer
+
+
+# Received datagrams (with time)
+dict_udp_recv_datagrams = dict()
+
+# Sent datagrams (with time)
+dict_udp_sent_datagrams = dict()
+
+
+class UDPEchoClient_Handler(BaseRequestHandler):
+    def handle(self):
+        """ One handle per connection
+        """
+        _data, _socket = self.request
+        # Process received datagram
+        data_str = repr(_data)[1:-1]
+        dict_udp_recv_datagrams[data_str] = time()
+
+
+def udp_packet_recv(threadName, server_ip, server_port):
+    """ This function will receive packet stream from mbed device
+    """
+    server = UDPServer((server_ip, server_port), UDPEchoClient_Handler)
+    print "[UDP_COUNTER] Listening for connections... %s:%d"% (server_ip, server_port)
+    server.serve_forever()
+
+
+class UDPEchoServerTest(DefaultTest):
+    ECHO_SERVER_ADDRESS = ""       # UDP IP of datagram bursts
+    ECHO_PORT = 0                  # UDP port for datagram bursts
+    CONTROL_PORT = 23              # TCP port used to get stats from mbed device, e.g. counters
+    s = None                       # Socket
+
+    TEST_PACKET_COUNT = 1000       # how many packets should be send
+    TEST_STRESS_FACTOR = 0.001     # stress factor: 10 ms
+    PACKET_SATURATION_RATIO = 29.9 # Acceptable packet transmission in %
+
+    PATTERN_SERVER_IP = "Server IP Address is (\d+).(\d+).(\d+).(\d+):(\d+)"
+    re_detect_server_ip = re.compile(PATTERN_SERVER_IP)
+
+    def get_control_data(self, command="stat\n"):
+        BUFFER_SIZE = 256
+        try:
+            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+            s.connect((self.ECHO_SERVER_ADDRESS, self.CONTROL_PORT))
+        except Exception, e:
+            data = None
+        s.send(command)
+        data = s.recv(BUFFER_SIZE)
+        s.close()
+        return data
+
+    def test(self):
+        serial_ip_msg = self.mbed.serial_readline()
+        if serial_ip_msg is None:
+            return self.RESULT_IO_SERIAL
+        stdout.write(serial_ip_msg)
+        stdout.flush()
+        # Searching for IP address and port prompted by server
+        m = self.re_detect_server_ip.search(serial_ip_msg)
+        if m and len(m.groups()):
+            self.ECHO_SERVER_ADDRESS = ".".join(m.groups()[:4])
+            self.ECHO_PORT = int(m.groups()[4]) # must be integer for socket.connect method
+            self.notify("HOST: UDP Server found at: " + self.ECHO_SERVER_ADDRESS + ":" + str(self.ECHO_PORT))
+
+        # Open client socket to burst datagrams to UDP server in mbed
+        try:
+            self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+        except Exception, e:
+            self.s = None
+            self.notify("HOST: Error: %s"% e)
+            return self.RESULT_ERROR
+
+        # UDP replied receiver works in background to get echoed datagrams
+        SERVER_IP = str(socket.gethostbyname(socket.getfqdn()))
+        SERVER_PORT = self.ECHO_PORT + 1
+        thread.start_new_thread(udp_packet_recv, ("Thread-udp-recv", SERVER_IP, SERVER_PORT))
+        sleep(0.5)
+
+        # Burst part
+        for no in range(self.TEST_PACKET_COUNT):
+            TEST_STRING = str(uuid.uuid4())
+            payload = str(no) + "__" + TEST_STRING
+            self.s.sendto(payload, (self.ECHO_SERVER_ADDRESS, self.ECHO_PORT))
+            dict_udp_sent_datagrams[payload] = time()
+            sleep(self.TEST_STRESS_FACTOR)
+
+        if self.s is not None:
+            self.s.close()
+
+        # Wait 5 seconds for packets to come
+        result = True
+        self.notify("HOST: Test Summary:")
+        for d in range(5):
+            sleep(1.0)
+            summary_datagram_success = (float(len(dict_udp_recv_datagrams)) / float(self.TEST_PACKET_COUNT)) * 100.0
+            self.notify("HOST: Datagrams received after +%d sec: %.3f%% (%d / %d), stress=%.3f ms"% (d,
+                                                                                                     summary_datagram_success,
+                                                                                                     len(dict_udp_recv_datagrams),
+                                                                                                     self.TEST_PACKET_COUNT,
+                                                                                                     self.TEST_STRESS_FACTOR))
+            result = result and (summary_datagram_success >= self.PACKET_SATURATION_RATIO)
+            stdout.flush()
+
+        # Getting control data from test
+        self.notify("...")
+        self.notify("HOST: Mbed Summary:")
+        mbed_stats = self.get_control_data()
+        self.notify(mbed_stats)
+        return self.RESULT_SUCCESS if result else self.RESULT_FAILURE
+
+
+if __name__ == '__main__':
+    UDPEchoServerTest().run()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/udpecho_client.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,55 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from socket import socket, AF_INET, SOCK_DGRAM
+import string, random
+from time import time
+
+from private_settings import CLIENT_ADDRESS
+
+ECHO_PORT = 7
+
+LEN_PACKET = 127
+N_PACKETS = 5000
+TOT_BITS = float(LEN_PACKET * N_PACKETS * 8) * 2
+MEGA = float(1024 * 1024)
+UPDATE_STEP = (N_PACKETS/10)
+
+class UDP_EchoClient:
+    s = socket(AF_INET, SOCK_DGRAM)
+
+    def __init__(self, host):
+        self.host = host
+        self.packet = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(LEN_PACKET))
+
+    def __packet(self):
+        # Comment out the checks when measuring the throughput
+        # packet = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(LEN_PACKET))
+        UDP_EchoClient.s.sendto(packet, (self.host, ECHO_PORT))
+        data = UDP_EchoClient.s.recv(LEN_PACKET)
+        # assert packet == data, "packet error:\n%s\n%s\n" % (packet, data)
+
+    def test(self):
+        start = time()
+        for i in range(N_PACKETS):
+            if (i % UPDATE_STEP) == 0: print '%.2f%%' % ((float(i)/float(N_PACKETS)) * 100.)
+            self.__packet()
+        t = time() - start
+        print 'Throughput: (%.2f)Mbits/s' % ((TOT_BITS / t)/MEGA)
+
+while True:
+    e = UDP_EchoClient(CLIENT_ADDRESS)
+    e.test()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/udpecho_client_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,77 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import sys
+import socket
+from sys import stdout
+from SocketServer import BaseRequestHandler, UDPServer
+
+class UDPEchoClient_Handler(BaseRequestHandler):
+    def handle(self):
+        """ One handle per connection
+        """
+        data, socket = self.request
+        socket.sendto(data, self.client_address)
+        if '{{end}}' in data:
+            print
+            print data
+        else:
+            sys.stdout.write('.')
+        stdout.flush()
+
+class UDPEchoClientTest():
+
+    def send_server_ip_port(self, selftest, ip_address, port_no):
+        c = selftest.mbed.serial_readline() # 'UDPCllient waiting for server IP and port...'
+        if c is None:
+            selftest.print_result(selftest.RESULT_IO_SERIAL)
+            return
+        selftest.notify(c.strip())
+
+        selftest.notify("HOST: Sending server IP Address to target...")
+        connection_str = ip_address + ":" + str(port_no) + "\n"
+        selftest.mbed.serial_write(connection_str)
+
+        c = selftest.mbed.serial_readline() # 'UDPCllient waiting for server IP and port...'
+        if c is None:
+            self.print_result(selftest.RESULT_IO_SERIAL)
+            return
+        selftest.notify(c.strip())
+        return selftest.RESULT_PASSIVE
+
+    def test(self, selftest):
+        # We need to discover SERVEP_IP and set up SERVER_PORT
+        # Note: Port 7 is Echo Protocol:
+        #
+        # Port number rationale:
+        #
+        # The Echo Protocol is a service in the Internet Protocol Suite defined
+        # in RFC 862. It was originally proposed for testing and measurement
+        # of round-trip times[citation needed] in IP networks.
+        #
+        # A host may connect to a server that supports the Echo Protocol using
+        # the Transmission Control Protocol (TCP) or the User Datagram Protocol
+        # (UDP) on the well-known port number 7. The server sends back an
+        # identical copy of the data it received.
+        SERVER_IP = str(socket.gethostbyname(socket.getfqdn()))
+        SERVER_PORT = 7
+
+        # Returning none will suppress host test from printing success code
+        server = UDPServer((SERVER_IP, SERVER_PORT), UDPEchoClient_Handler)
+        print "HOST: Listening for UDP connections..."
+        self.send_server_ip_port(selftest, SERVER_IP, SERVER_PORT)
+        server.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/udpecho_server.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,29 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from SocketServer import BaseRequestHandler, UDPServer
+from private_settings import SERVER_ADDRESS
+
+class UDP_EchoHandler(BaseRequestHandler):
+    def handle(self):
+        data, socket = self.request
+        print "client:", self.client_address
+        print "data:", data
+        socket.sendto(data, self.client_address)
+
+server = UDPServer((SERVER_ADDRESS, 7195), UDP_EchoHandler)
+print "listening for connections"
+server.serve_forever()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/udpecho_server_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,68 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+import sys
+import uuid
+from sys import stdout
+from socket import socket, AF_INET, SOCK_DGRAM
+
+class UDPEchoServerTest():
+    ECHO_SERVER_ADDRESS = ""
+    ECHO_PORT = 0
+    s = None # Socket
+
+    PATTERN_SERVER_IP = "Server IP Address is (\d+).(\d+).(\d+).(\d+):(\d+)"
+    re_detect_server_ip = re.compile(PATTERN_SERVER_IP)
+
+    def test(self, selftest):
+        result = True
+        serial_ip_msg = selftest.mbed.serial_readline()
+        if serial_ip_msg is None:
+            return selftest.RESULT_IO_SERIAL
+        selftest.notify(serial_ip_msg)
+        # Searching for IP address and port prompted by server
+        m = self.re_detect_server_ip.search(serial_ip_msg)
+        if m and len(m.groups()):
+            self.ECHO_SERVER_ADDRESS = ".".join(m.groups()[:4])
+            self.ECHO_PORT = int(m.groups()[4]) # must be integer for socket.connect method
+            selftest.notify("HOST: UDP Server found at: " + self.ECHO_SERVER_ADDRESS + ":" + str(self.ECHO_PORT))
+
+            # We assume this test fails so can't send 'error' message to server
+            try:
+                self.s = socket(AF_INET, SOCK_DGRAM)
+            except Exception, e:
+                self.s = None
+                selftest.notify("HOST: Socket error: %s"% e)
+                return selftest.RESULT_ERROR
+
+            for i in range(0, 100):
+                TEST_STRING = str(uuid.uuid4())
+                self.s.sendto(TEST_STRING, (self.ECHO_SERVER_ADDRESS, self.ECHO_PORT))
+                data = self.s.recv(len(TEST_STRING))
+                received_str = repr(data)[1:-1]
+                if TEST_STRING != received_str:
+                    result = False
+                    break
+                sys.stdout.write('.')
+                stdout.flush()
+        else:
+            result = False
+
+        if self.s is not None:
+            self.s.close()
+        return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/wait_us_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,69 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from time import time
+
+class WaitusTest():
+    """ This test is reading single characters from stdio
+        and measures time between their occurrences.
+    """
+    TICK_LOOP_COUNTER = 13
+    TICK_LOOP_SUCCESSFUL_COUNTS = 10
+    DEVIATION = 0.10    # +/-10%
+
+    def test(self, selftest):
+        test_result = True
+        # First character to start test (to know after reset when test starts)
+        if selftest.mbed.set_serial_timeout(None) is None:
+            return selftest.RESULT_IO_SERIAL
+        c = selftest.mbed.serial_read(1)
+        if c is None:
+            return selftest.RESULT_IO_SERIAL
+        if c == '$': # target will printout TargetID e.g.: $$$$1040e649d5c09a09a3f6bc568adef61375c6
+            #Read additional 39 bytes of TargetID
+            if selftest.mbed.serial_read(39) is None:
+                return selftest.RESULT_IO_SERIAL
+            c = selftest.mbed.serial_read(1) # Re-read first 'tick'
+            if c is None:
+                return selftest.RESULT_IO_SERIAL
+        start_serial_pool = time()
+        start = time()
+
+        success_counter = 0
+
+        for i in range(0, self.TICK_LOOP_COUNTER):
+            c = selftest.mbed.serial_read(1)
+            if c is None:
+                return selftest.RESULT_IO_SERIAL
+            delta = time() - start
+            deviation = abs(delta - 1)
+            # Round values
+            delta = round(delta, 2)
+            deviation = round(deviation, 2)
+            # Check if time measurements are in given range
+            deviation_ok = True if delta > 0 and deviation <= self.DEVIATION else False
+            success_counter = success_counter+1 if deviation_ok else 0
+            msg = "OK" if deviation_ok else "FAIL"
+            selftest.notify("%s in %.2f sec (%.2f) [%s]"% (c, delta, deviation, msg))
+            start = time()
+            if success_counter >= self.TICK_LOOP_SUCCESSFUL_COUNTS:
+                break
+        measurement_time = time() - start_serial_pool
+        selftest.notify("Consecutive OK timer reads: %d"% success_counter)
+        selftest.notify("Completed in %.2f sec" % (measurement_time))
+        test_result = True if success_counter >= self.TICK_LOOP_SUCCESSFUL_COUNTS else False
+        return selftest.RESULT_SUCCESS if test_result else selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/host_tests/wfi_auto.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,45 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import sys
+import uuid
+import time
+from sys import stdout
+
+class WFITest():
+
+    def test(self, selftest):
+        c = selftest.mbed.serial_readline()
+
+        if c == None:
+            selftest.notify("HOST: No output detected")
+            return selftest.RESULT_IO_SERIAL
+
+        if c.strip() != "0":
+            selftest.notify("HOST: Unexpected output. Expected '0' but received '%s'" % c.strip())
+            return selftest.RESULT_FAILURE
+
+        # Wait 10 seconds to allow serial prints (indicating failure)
+        selftest.mbed.set_serial_timeout(10)
+
+        # If no characters received, pass the test
+        if not selftest.mbed.serial_readline():
+            selftest.notify("HOST: No further output detected")
+            return selftest.RESULT_SUCCESS
+        else:
+            selftest.notify("HOST: Extra output detected")
+            return selftest.RESULT_FAILURE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libraries.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,129 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from tools.paths import *
+from tools.data.support import *
+from tools.tests import TEST_MBED_LIB
+
+
+LIBRARIES = [
+    # RTOS libraries
+    {
+        "id": "rtx",
+        "source_dir": MBED_RTX,
+        "build_dir": RTOS_LIBRARIES,
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "rtos",
+        "source_dir": RTOS_ABSTRACTION,
+        "build_dir": RTOS_LIBRARIES,
+        "dependencies": [MBED_LIBRARIES, MBED_RTX],
+    },
+
+    # RPC
+    {
+        "id": "rpc",
+        "source_dir": MBED_RPC,
+        "build_dir": RPC_LIBRARY,
+        "dependencies": [MBED_LIBRARIES],
+    },
+
+    # USB Device libraries
+    {
+        "id": "usb",
+        "source_dir": USB,
+        "build_dir": USB_LIBRARIES,
+        "dependencies": [MBED_LIBRARIES],
+    },
+
+    # USB Host libraries
+    {
+        "id": "usb_host",
+        "source_dir": USB_HOST,
+        "build_dir": USB_HOST_LIBRARIES,
+        "dependencies": [MBED_LIBRARIES, FAT_FS, MBED_RTX, RTOS_ABSTRACTION],
+    },
+
+    # DSP libraries
+    {
+        "id": "cmsis_dsp",
+        "source_dir": DSP_CMSIS,
+        "build_dir": DSP_LIBRARIES,
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "dsp",
+        "source_dir": DSP_ABSTRACTION,
+        "build_dir": DSP_LIBRARIES,
+        "dependencies": [MBED_LIBRARIES, DSP_CMSIS],
+    },
+
+    # File system libraries
+    {
+        "id": "fat",
+        "source_dir": [FAT_FS, SD_FS],
+        "build_dir": FS_LIBRARY,
+        "dependencies": [MBED_LIBRARIES]
+    },
+
+    # Network libraries
+    {
+        "id": "eth",
+        "source_dir": [ETH_SOURCES, LWIP_SOURCES],
+        "build_dir": ETH_LIBRARY,
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES]
+    },
+
+    {
+        "id": "ublox",
+        "source_dir": [UBLOX_SOURCES, CELLULAR_SOURCES, CELLULAR_USB_SOURCES, LWIP_SOURCES],
+        "build_dir": UBLOX_LIBRARY,
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES],
+    },
+
+    # Unit Testing library
+    {
+        "id": "cpputest",
+        "source_dir": [CPPUTEST_SRC, CPPUTEST_PLATFORM_SRC, CPPUTEST_TESTRUNNER_SCR],
+        "build_dir": CPPUTEST_LIBRARY,
+        "dependencies": [MBED_LIBRARIES],
+        'inc_dirs': [CPPUTEST_INC, CPPUTEST_PLATFORM_INC, CPPUTEST_TESTRUNNER_INC, TEST_MBED_LIB],
+        'inc_dirs_ext': [CPPUTEST_INC_EXT],
+        'macros': ["CPPUTEST_USE_MEM_LEAK_DETECTION=0", "CPPUTEST_USE_STD_CPP_LIB=0", "CPPUTEST=1"],
+    },
+]
+
+
+LIBRARY_MAP = dict([(library['id'], library) for library in LIBRARIES])
+
+
+class Library:
+    DEFAULTS = {
+        "supported": DEFAULT_SUPPORT,
+        'dependencies': None,
+        'inc_dirs': None,       # Include dirs required by library build
+        'inc_dirs_ext': None,   # Include dirs required by others to use with this library
+        'macros': None,         # Additional macros you want to define when building library
+    }
+    def __init__(self, lib_id):
+        self.__dict__.update(Library.DEFAULTS)
+        self.__dict__.update(LIBRARY_MAP[lib_id])
+
+    def is_supported(self, target, toolchain):
+        if not hasattr(self, 'supported'):
+            return True
+        return (target.name in self.supported) and (toolchain in self.supported[target.name])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,303 @@
+#! /usr/bin/env python2
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+TEST BUILD & RUN
+"""
+import sys
+from time import sleep
+from shutil import copy
+from os.path import join, abspath, dirname
+
+# Be sure that the tools directory is in the search path
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from tools.utils import args_error
+from tools.paths import BUILD_DIR
+from tools.paths import RTOS_LIBRARIES
+from tools.paths import RPC_LIBRARY
+from tools.paths import ETH_LIBRARY
+from tools.paths import USB_HOST_LIBRARIES, USB_LIBRARIES
+from tools.paths import DSP_LIBRARIES
+from tools.paths import FS_LIBRARY
+from tools.paths import UBLOX_LIBRARY
+from tools.tests import TESTS, Test, TEST_MAP
+from tools.tests import TEST_MBED_LIB
+from tools.targets import TARGET_MAP
+from tools.options import get_default_options_parser
+from tools.build_api import build_project
+try:
+    import tools.private_settings as ps
+except:
+    ps = object()
+
+
+if __name__ == '__main__':
+    # Parse Options
+    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("-j", "--jobs",
+                      type="int",
+                      dest="jobs",
+                      default=0,
+                      help="Number of concurrent jobs. Default: 0/auto (based on host machine's number of CPUs)")
+
+    parser.add_option("-v", "--verbose",
+                      action="store_true",
+                      dest="verbose",
+                      default=False,
+                      help="Verbose diagnostic output")
+
+    parser.add_option("--silent",
+                      action="store_true",
+                      dest="silent",
+                      default=False,
+                      help="Silent diagnostic output (no copy, compile notification)")
+
+    parser.add_option("-D", "",
+                      action="append",
+                      dest="macros",
+                      help="Add a macro definition")
+
+    # Local run
+    parser.add_option("--automated", action="store_true", dest="automated",
+                      default=False, help="Automated test")
+    parser.add_option("--host", dest="host_test",
+                      default=None, help="Host test")
+    parser.add_option("--extra", dest="extra",
+                      default=None, help="Extra files")
+    parser.add_option("--peripherals", dest="peripherals",
+                      default=None, help="Required peripherals")
+    parser.add_option("--dep", dest="dependencies",
+                      default=None, help="Dependencies")
+    parser.add_option("--source", dest="source_dir",
+                      default=None, help="The source (input) directory", action="append")
+    parser.add_option("--duration", type="int", dest="duration",
+                      default=None, help="Duration of the test")
+    parser.add_option("--build", dest="build_dir",
+                      default=None, help="The build (output) directory")
+    parser.add_option("-N", "--artifact-name", dest="artifact_name",
+                      default=None, help="The built project's name")
+    parser.add_option("-d", "--disk", dest="disk",
+                      default=None, help="The mbed disk")
+    parser.add_option("-s", "--serial", dest="serial",
+                      default=None, help="The mbed serial port")
+    parser.add_option("-b", "--baud", type="int", dest="baud",
+                      default=None, help="The mbed serial baud rate")
+    parser.add_option("-L", "--list-tests", action="store_true", dest="list_tests",
+                      default=False, help="List available tests in order and exit")
+
+    # Ideally, all the tests with a single "main" thread can be run with, or
+    # without the rtos, eth, usb_host, usb, dsp, fat, ublox
+    parser.add_option("--rtos",
+                      action="store_true", dest="rtos",
+                      default=False, help="Link with RTOS library")
+
+    parser.add_option("--rpc",
+                      action="store_true", dest="rpc",
+                      default=False, help="Link with RPC library")
+
+    parser.add_option("--eth",
+                      action="store_true", dest="eth",
+                      default=False,
+                      help="Link with Ethernet library")
+
+    parser.add_option("--usb_host",
+                      action="store_true",
+                      dest="usb_host",
+                      default=False,
+                      help="Link with USB Host library")
+
+    parser.add_option("--usb",
+                      action="store_true",
+                      dest="usb",
+                      default=False,
+                      help="Link with USB Device library")
+
+    parser.add_option("--dsp",
+                      action="store_true",
+                      dest="dsp",
+                      default=False,
+                      help="Link with DSP library")
+
+    parser.add_option("--fat",
+                      action="store_true",
+                      dest="fat",
+                      default=False,
+                      help="Link with FS ad SD card file system library")
+
+    parser.add_option("--ublox",
+                      action="store_true",
+                      dest="ublox",
+                      default=False,
+                      help="Link with U-Blox library")
+
+    parser.add_option("--testlib",
+                      action="store_true",
+                      dest="testlib",
+                      default=False,
+                      help="Link with mbed test library")
+
+    # Specify a different linker script
+    parser.add_option("-l", "--linker", dest="linker_script",
+                      default=None, help="use the specified linker script")
+
+    (options, args) = parser.parse_args()
+
+    # Print available tests in order and exit
+    if options.list_tests is True:
+        print '\n'.join(map(str, sorted(TEST_MAP.values())))
+        sys.exit()
+
+    # force program to "0" if a source dir is specified
+    if options.source_dir is not None:
+        p = 0
+        n = None
+    else:
+    # 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:
+        # We will transform 'n' to list of 'p' (integers which are test numbers)
+        nlist = n.split(',')
+        for test_id in nlist:
+            if test_id not in TEST_MAP.keys():
+                args_error(parser, "[ERROR] Program with name '%s' not found"% test_id)
+
+        p = [TEST_MAP[n].n for n in nlist]
+    elif p is None or (p < 0) or (p > (len(TESTS)-1)):
+        message = "[ERROR] You have to specify one of the following tests:\n"
+        message += '\n'.join(map(str, sorted(TEST_MAP.values())))
+        args_error(parser, message)
+
+    # If 'p' was set via -n to list of numbers make this a single element integer list
+    if type(p) != type([]):
+        p = [p]
+
+    # Target
+    if options.mcu is None :
+        args_error(parser, "[ERROR] You should specify an MCU")
+    mcu = options.mcu
+
+    # Toolchain
+    if options.tool is None:
+        args_error(parser, "[ERROR] You should specify a TOOLCHAIN")
+    toolchain = options.tool
+
+    # Test
+    for test_no in p:
+        test = Test(test_no)
+        if options.automated is not None:    test.automated = options.automated
+        if options.dependencies is not None: test.dependencies = options.dependencies
+        if options.host_test is not None:    test.host_test = options.host_test;
+        if options.peripherals is not None:  test.peripherals = options.peripherals;
+        if options.duration is not None:     test.duration = options.duration;
+        if options.extra is not None:        test.extra_files = options.extra
+
+        if not test.is_supported(mcu, toolchain):
+            print 'The selected test is not supported on target %s with toolchain %s' % (mcu, toolchain)
+            sys.exit()
+
+        # Linking with extra libraries
+        if options.rtos:     test.dependencies.append(RTOS_LIBRARIES)
+        if options.rpc:      test.dependencies.append(RPC_LIBRARY)
+        if options.eth:      test.dependencies.append(ETH_LIBRARY)
+        if options.usb_host: test.dependencies.append(USB_HOST_LIBRARIES)
+        if options.usb:      test.dependencies.append(USB_LIBRARIES)
+        if options.dsp:      test.dependencies.append(DSP_LIBRARIES)
+        if options.fat:      test.dependencies.append(FS_LIBRARY)
+        if options.ublox:    test.dependencies.append(UBLOX_LIBRARY)
+        if options.testlib:  test.dependencies.append(TEST_MBED_LIB)
+
+        build_dir = join(BUILD_DIR, "test", mcu, toolchain, test.id)
+        if options.source_dir is not None:
+            test.source_dir = options.source_dir
+            build_dir = options.source_dir
+
+        if options.build_dir is not None:
+            build_dir = options.build_dir
+
+        try:
+            target = TARGET_MAP[mcu]
+        except KeyError:
+            print "[ERROR] Target %s not supported" % mcu
+            sys.exit(1)
+
+        try:
+            bin_file = build_project(test.source_dir, build_dir, target, toolchain, test.dependencies, options.options,
+                                     linker_script=options.linker_script,
+                                     clean=options.clean,
+                                     verbose=options.verbose,
+                                     silent=options.silent,
+                                     macros=options.macros,
+                                     jobs=options.jobs,
+                                     name=options.artifact_name)
+            print 'Image: %s'% bin_file
+
+            if options.disk:
+                # Simple copy to the mbed disk
+                copy(bin_file, options.disk)
+
+            if options.serial:
+                # Import pyserial: https://pypi.python.org/pypi/pyserial
+                from serial import Serial
+
+                sleep(target.program_cycle_s())
+
+                serial = Serial(options.serial, timeout = 1)
+                if options.baud:
+                    serial.setBaudrate(options.baud)
+
+                serial.flushInput()
+                serial.flushOutput()
+
+                try:
+                    serial.sendBreak()
+                except:
+                    # In linux a termios.error is raised in sendBreak and in setBreak.
+                    # The following setBreak() is needed to release the reset signal on the target mcu.
+                    try:
+                        serial.setBreak(False)
+                    except:
+                        pass
+
+                while True:
+                    c = serial.read(512)
+                    sys.stdout.write(c)
+                    sys.stdout.flush()
+
+        except KeyboardInterrupt, e:
+            print "\n[CTRL+c] exit"
+        except Exception,e:
+            if options.verbose:
+                import traceback
+                traceback.print_exc(file=sys.stdout)
+            else:
+                print "[ERROR] %s" % str(e)
+            
+            sys.exit(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/options.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,44 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from optparse import OptionParser
+from tools.toolchains import TOOLCHAINS
+from tools.targets import TARGET_NAMES
+
+
+def get_default_options_parser():
+    parser = OptionParser()
+
+    targetnames = TARGET_NAMES
+    targetnames.sort()
+    toolchainlist = list(TOOLCHAINS)
+    toolchainlist.sort()
+
+    parser.add_option("-m", "--mcu",
+                  help="build for the given MCU (%s)" % ', '.join(targetnames),
+                  metavar="MCU")
+
+    parser.add_option("-t", "--tool",
+                  help="build using the given TOOLCHAIN (%s)" % ', '.join(toolchainlist),
+                  metavar="TOOLCHAIN")
+
+    parser.add_option("-c", "--clean", action="store_true", default=False,
+                  help="clean the build directory")
+
+    parser.add_option("-o", "--options", action="append",
+                  help='Add a build option ("save-asm": save the asm generated by the compiler, "debug-info": generate debugging information, "analyze": run Goanna static code analyzer")')
+
+    return parser
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patch.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,50 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+http://www.nxp.com/documents/user_manual/UM10360.pdf
+
+32.3.1.1 Criterion for Valid User Code
+The reserved Cortex-M3 exception vector location 7 (offset 0x1C in the vector table)
+should contain the 2's complement of the check-sum of table entries 0 through 6. This
+causes the checksum of the first 8 table entries to be 0. The boot loader code checksums
+the first 8 locations in sector 0 of the flash. If the result is 0, then execution control is
+transferred to the user code.
+"""
+from struct import unpack, pack
+
+
+def patch(bin_path):
+    with open(bin_path, 'r+b') as bin:
+        # Read entries 0 through 6 (Little Endian 32bits words)
+        vector = [unpack('<I', bin.read(4))[0] for _ in range(7)]
+
+        # location 7 (offset 0x1C in the vector table) should contain the 2's
+        # complement of the check-sum of table entries 0 through 6
+        bin.seek(0x1C)
+        bin.write(pack('<I', (~sum(vector) + 1) & 0xFFFFFFFF))
+
+
+def is_patched(bin_path):
+    with open(bin_path, 'rb') as bin:
+        # The checksum of the first 8 table entries should be 0
+        return (sum([unpack('<I', bin.read(4))[0] for _ in range(8)]) & 0xFFFFFFFF) == 0
+
+
+if __name__ == '__main__':
+    bin_path = "C:/Users/emimon01/releases/emilmont/build/test/LPC1768/ARM/MBED_A1/basic.bin"
+    patch(bin_path)
+    assert is_patched(bin_path), "The file is not patched"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paths.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,111 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from os.path import join
+from os import getenv
+
+# Conventions about the directory structure
+from settings import ROOT, BUILD_DIR
+
+# Allow overriding some of the build parameters using environment variables
+BUILD_DIR = getenv("MBED_BUILD_DIR") or BUILD_DIR
+
+# Embedded Libraries Sources
+LIB_DIR = join(ROOT, "libraries")
+
+TOOLS = join(ROOT, "tools")
+TOOLS_DATA = join(TOOLS, "data")
+TOOLS_BOOTLOADERS = join(TOOLS, "bootloaders")
+
+# mbed libraries
+MBED_BASE = join(ROOT, "sdk")
+
+MBED_API = join(MBED_BASE, "api")
+MBED_COMMON = join(MBED_BASE, "common")
+MBED_HAL = join(MBED_BASE, "hal")
+MBED_TARGETS_PATH = join(MBED_BASE, "targets")
+
+MBED_LIBRARIES = join(BUILD_DIR, "mbed")
+
+# Tests
+TEST_DIR = join(LIB_DIR, "tests")
+HOST_TESTS = join(ROOT, "tools", "host_tests")
+
+# mbed RPC
+MBED_RPC = join(LIB_DIR, "rpc")
+
+RPC_LIBRARY = join(BUILD_DIR, "rpc")
+
+# mbed RTOS
+RTOS = join(LIB_DIR, "rtos")
+MBED_RTX = join(RTOS, "rtx")
+RTOS_ABSTRACTION = join(RTOS, "rtos")
+
+RTOS_LIBRARIES = join(BUILD_DIR, "rtos")
+
+# TCP/IP
+NET = join(LIB_DIR, "net")
+
+ETH_SOURCES = join(NET, "eth")
+LWIP_SOURCES = join(NET, "lwip")
+VODAFONE_SOURCES = join(NET, "VodafoneUSBModem")
+CELLULAR_SOURCES = join(NET, "cellular", "CellularModem")
+CELLULAR_USB_SOURCES = join(NET, "cellular", "CellularUSBModem")
+UBLOX_SOURCES = join(NET, "cellular", "UbloxUSBModem")
+
+NET_LIBRARIES = join(BUILD_DIR, "net")
+ETH_LIBRARY = join(NET_LIBRARIES, "eth")
+VODAFONE_LIBRARY = join(NET_LIBRARIES, "VodafoneUSBModem")
+UBLOX_LIBRARY = join(NET_LIBRARIES, "UbloxUSBModem")
+
+# FS
+FS_PATH = join(LIB_DIR, "fs")
+FAT_FS = join(FS_PATH, "fat")
+SD_FS = join(FS_PATH, "sd")
+FS_LIBRARY = join(BUILD_DIR, "fat")
+
+# DSP
+DSP = join(LIB_DIR, "dsp")
+DSP_CMSIS = join(DSP, "cmsis_dsp")
+DSP_ABSTRACTION = join(DSP, "dsp")
+DSP_LIBRARIES = join(BUILD_DIR, "dsp")
+
+# USB Device
+USB = join(LIB_DIR, "USBDevice")
+USB_LIBRARIES = join(BUILD_DIR, "usb")
+
+# USB Host
+USB_HOST = join(LIB_DIR, "USBHost")
+USB_HOST_LIBRARIES = join(BUILD_DIR, "usb_host")
+
+# Export
+EXPORT_DIR = join(BUILD_DIR, "export")
+EXPORT_WORKSPACE = join(EXPORT_DIR, "workspace")
+EXPORT_TMP = join(EXPORT_DIR, ".temp")
+
+# CppUtest library
+CPPUTEST_DIR = join(ROOT, "..")
+CPPUTEST_SRC = join(CPPUTEST_DIR, "cpputest", "src", "CppUTest")
+CPPUTEST_INC = join(CPPUTEST_DIR, "cpputest", "include")
+CPPUTEST_INC_EXT = join(CPPUTEST_DIR, "cpputest", "include", "CppUTest")
+# Platform dependant code is here (for armcc compiler)
+CPPUTEST_PLATFORM_SRC = join(CPPUTEST_DIR, "cpputest", "src", "Platforms", "armcc")
+CPPUTEST_PLATFORM_INC = join(CPPUTEST_DIR, "cpputest", "include", "Platforms", "armcc")
+# Function 'main' used to run all compiled UTs
+CPPUTEST_TESTRUNNER_SCR = join(TEST_DIR, "utest", "testrunner")
+CPPUTEST_TESTRUNNER_INC = join(TEST_DIR, "utest", "testrunner")
+
+CPPUTEST_LIBRARY = join(BUILD_DIR, "cpputest")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/project.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,231 @@
+import sys
+from os.path import join, abspath, dirname, exists, basename
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from shutil import move, rmtree
+from optparse import OptionParser
+from os import path
+
+from tools.paths import EXPORT_DIR, EXPORT_WORKSPACE, EXPORT_TMP
+from tools.paths import MBED_BASE, MBED_LIBRARIES
+from tools.export import export, setup_user_prj, EXPORTERS, mcu_ide_matrix
+from tools.utils import args_error, mkdir
+from tools.tests import TESTS, Test, TEST_MAP
+from tools.targets import TARGET_NAMES
+from tools.libraries import LIBRARIES
+
+try:
+    import tools.private_settings as ps
+except:
+    ps = object()
+
+
+if __name__ == '__main__':
+    # Parse Options
+    parser = OptionParser()
+
+    targetnames = TARGET_NAMES
+    targetnames.sort()
+    toolchainlist = EXPORTERS.keys()
+    toolchainlist.sort()
+
+    parser.add_option("-m", "--mcu",
+                      metavar="MCU",
+                      default='LPC1768',
+                      help="generate project for the given MCU (%s)"% ', '.join(targetnames))
+
+    parser.add_option("-i",
+                      dest="ide",
+                      default='uvision',
+                      help="The target IDE: %s"% str(toolchainlist))
+
+    parser.add_option("-c", "--clean",
+                      action="store_true",
+                      default=False,
+                      help="clean the export directory")
+
+    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("-b",
+                      dest="build",
+                      action="store_true",
+                      default=False,
+                      help="use the mbed library build, instead of the sources")
+
+    parser.add_option("-L", "--list-tests",
+                      action="store_true",
+                      dest="list_tests",
+                      default=False,
+                      help="list available programs in order and exit")
+
+    parser.add_option("-S", "--list-matrix",
+                      action="store_true",
+                      dest="supported_ides",
+                      default=False,
+                      help="displays supported matrix of MCUs and IDEs")
+
+    parser.add_option("-E",
+                      action="store_true",
+                      dest="supported_ides_html",
+                      default=False,
+                      help="writes tools/export/README.md")
+
+    parser.add_option("--source",
+                      dest="source_dir",
+                      default=None,
+                      help="The source (input) directory")
+
+    parser.add_option("-D", "",
+                      action="append",
+                      dest="macros",
+                      help="Add a macro definition")
+
+    (options, args) = parser.parse_args()
+
+    # Print available tests in order and exit
+    if options.list_tests is True:
+        print '\n'.join(map(str, sorted(TEST_MAP.values())))
+        sys.exit()
+
+    # Only prints matrix of supported IDEs
+    if options.supported_ides:
+        print mcu_ide_matrix()
+        exit(0)
+
+    # Only prints matrix of supported IDEs
+    if options.supported_ides_html:
+        html = mcu_ide_matrix(verbose_html=True)
+        try:
+            with open("./export/README.md","w") as f:
+                f.write("Exporter IDE/Platform Support\n")
+                f.write("-----------------------------------\n")
+                f.write("\n")
+                f.write(html)
+        except IOError as e:
+            print "I/O error({0}): {1}".format(e.errno, e.strerror)
+        except:
+            print "Unexpected error:", sys.exc_info()[0]
+            raise
+        exit(0)
+
+    # Clean Export Directory
+    if options.clean:
+        if exists(EXPORT_DIR):
+            rmtree(EXPORT_DIR)
+
+    # Target
+    if options.mcu is None :
+        args_error(parser, "[ERROR] You should specify an MCU")
+    mcus = options.mcu
+
+    # IDE
+    if options.ide is None:
+        args_error(parser, "[ERROR] You should specify an IDE")
+    ide = options.ide
+
+    # Export results
+    successes = []
+    failures = []
+    zip = True
+    clean = True
+
+    # source_dir = use relative paths, otherwise sources are copied
+    sources_relative = True if options.source_dir else False
+
+    for mcu in mcus.split(','):
+        # Program Number or name
+        p, n, src, ide = options.program, options.program_name, options.source_dir, options.ide
+
+        if src is not None:
+            # --source is used to generate IDE files to toolchain directly in the source tree and doesn't generate zip file
+            project_dir = options.source_dir
+            project_name = basename(project_dir)
+            project_temp = path.join(options.source_dir, 'projectfiles', ide)
+            mkdir(project_temp)
+            lib_symbols = []
+            if options.macros:
+                lib_symbols += options.macros
+            zip = False   # don't create zip
+            clean = False # don't cleanup because we use the actual source tree to generate IDE files
+        else:
+            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():
+                    # Check if there is an alias for this in private_settings.py
+                    if getattr(ps, "test_alias", None) is not None:
+                        alias = ps.test_alias.get(n, "")
+                        if not alias in TEST_MAP.keys():
+                            args_error(parser, "[ERROR] Program with name '%s' not found" % n)
+                        else:
+                            n = alias
+                    else:
+                        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"
+                message += '\n'.join(map(str, sorted(TEST_MAP.values())))
+                args_error(parser, message)
+
+            # Project
+            if p is None or (p < 0) or (p > (len(TESTS)-1)):
+                message = "[ERROR] You have to specify one of the following tests:\n"
+                message += '\n'.join(map(str, sorted(TEST_MAP.values())))
+                args_error(parser, message)
+            test = Test(p)
+
+            # Some libraries have extra macros (called by exporter symbols) to we need to pass
+            # them to maintain compilation macros integrity between compiled library and
+            # header files we might use with it
+            lib_symbols = []
+            if options.macros:
+                lib_symbols += options.macros
+            for lib in LIBRARIES:
+                if lib['build_dir'] in test.dependencies:
+                    lib_macros = lib.get('macros', None)
+                    if lib_macros is not None:
+                        lib_symbols.extend(lib_macros)
+
+            if not options.build:
+                # Substitute the library builds with the sources
+                # TODO: Substitute also the other library build paths
+                if MBED_LIBRARIES in test.dependencies:
+                    test.dependencies.remove(MBED_LIBRARIES)
+                    test.dependencies.append(MBED_BASE)
+
+            # Build the project with the same directory structure of the mbed online IDE
+            project_name = test.id
+            project_dir = join(EXPORT_WORKSPACE, project_name)
+            project_temp = EXPORT_TMP
+            setup_user_prj(project_dir, test.source_dir, test.dependencies)
+
+        # Export to selected toolchain
+        tmp_path, report = export(project_dir, project_name, ide, mcu, project_dir, project_temp, clean=clean, zip=zip, extra_symbols=lib_symbols, relative=sources_relative)
+        print tmp_path
+        if report['success']:
+            zip_path = join(EXPORT_DIR, "%s_%s_%s.zip" % (project_name, ide, mcu))
+            if zip:
+                move(tmp_path, zip_path)
+            successes.append("%s::%s\t%s"% (mcu, ide, zip_path))
+        else:
+            failures.append("%s::%s\t%s"% (mcu, ide, report['errormsg']))
+
+    # Prints export results
+    print
+    if len(successes) > 0:
+        print "Successful exports:"
+        for success in successes:
+            print "  * %s"% success
+    if len(failures) > 0:
+        print "Failed exports:"
+        for failure in failures:
+            print "  * %s"% failure
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/settings.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,104 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+from os.path import join, abspath, dirname
+import logging
+
+ROOT = abspath(join(dirname(__file__), ".."))
+
+# These default settings have two purposes:
+#    1) Give a template for writing local "private_settings.py"
+#    2) Give default initialization fields for the "toolchains.py" constructors
+
+##############################################################################
+# Build System Settings
+##############################################################################
+BUILD_DIR = abspath(join(ROOT, "build"))
+
+# ARM
+armcc = "standalone" # "keil", or "standalone", or "ds-5"
+
+if armcc == "keil":
+    ARM_PATH = "C:/Keil_4_54/ARM"
+    ARM_BIN = join(ARM_PATH, "BIN40")
+    ARM_INC = join(ARM_PATH, "RV31", "INC")
+    ARM_LIB = join(ARM_PATH, "RV31", "LIB")
+
+elif armcc == "standalone":
+    ARM_PATH = "C:/Program Files/ARM/armcc_4.1_791"
+    ARM_BIN = join(ARM_PATH, "bin")
+    ARM_INC = join(ARM_PATH, "include")
+    ARM_LIB = join(ARM_PATH, "lib")
+
+elif armcc == "ds-5":
+    ARM_PATH = "C:/Program Files (x86)/DS-5"
+    ARM_BIN = join(ARM_PATH, "bin")
+    ARM_INC = join(ARM_PATH, "include")
+    ARM_LIB = join(ARM_PATH, "lib")
+
+ARM_CPPLIB = join(ARM_LIB, "cpplib")
+MY_ARM_CLIB = join(ARM_PATH, "lib", "microlib")
+
+# GCC ARM
+GCC_ARM_PATH = ""
+
+# GCC CodeRed
+GCC_CR_PATH = "C:/code_red/RedSuite_4.2.0_349/redsuite/Tools/bin"
+
+# IAR
+IAR_PATH = "C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.0/arm"
+
+# Goanna static analyser. Please overload it in private_settings.py
+GOANNA_PATH = "c:/Program Files (x86)/RedLizards/Goanna Central 3.2.3/bin"
+
+# cppcheck path (command) and output message format
+CPPCHECK_CMD = ["cppcheck", "--enable=all"]
+CPPCHECK_MSG_FORMAT = ["--template=[{severity}] {file}@{line}: {id}:{message}"]
+
+BUILD_OPTIONS = []
+
+# mbed.org username
+MBED_ORG_USER = ""
+
+##############################################################################
+# Test System Settings
+##############################################################################
+SERVER_PORT = 59432
+SERVER_ADDRESS = "10.2.200.94"
+LOCALHOST = "10.2.200.94"
+
+MUTs = {
+    "1" : {"mcu": "LPC1768",
+        "port":"COM41", "disk":'E:\\',
+        "peripherals": ["TMP102", "digital_loop", "port_loop", "analog_loop", "SD"]
+    },
+    "2": {"mcu": "LPC11U24",
+        "port":"COM42", "disk":'F:\\',
+        "peripherals":  ["TMP102", "digital_loop", "port_loop", "SD"]
+    },
+    "3" : {"mcu": "KL25Z",
+        "port":"COM43", "disk":'G:\\',
+        "peripherals":  ["TMP102", "digital_loop", "port_loop", "analog_loop", "SD"]
+    },
+}
+
+##############################################################################
+# Private Settings
+##############################################################################
+try:
+    # Allow to overwrite the default settings without the need to edit the
+    # settings file stored in the repository
+    from mbed_settings import *
+except ImportError:
+    print '[WARNING] Using default settings. Define your settings in the file "./mbed_settings.py"'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/singletest.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,262 @@
+#!/usr/bin/env python2
+
+"""
+mbed SDK
+Copyright (c) 2011-2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+"""
+
+"""
+File format example: test_spec.json:
+{
+    "targets": {
+        "KL46Z": ["ARM", "GCC_ARM"],
+        "LPC1768": ["ARM", "GCC_ARM", "GCC_CR", "IAR"],
+        "LPC11U24": ["uARM"],
+        "NRF51822": ["ARM"]
+    }
+}
+
+File format example: muts_all.json:
+{
+    "1" : {"mcu": "LPC1768",
+           "port":"COM4",
+           "disk":"J:\\",
+           "peripherals": ["TMP102", "digital_loop", "port_loop", "analog_loop", "SD"]
+    },
+
+    "2" : {"mcu": "KL25Z",
+           "port":"COM7",
+           "disk":"G:\\",
+           "peripherals": ["digital_loop", "port_loop", "analog_loop"]
+    }
+}
+"""
+
+
+# Be sure that the tools directory is in the search path
+import sys
+from os.path import join, abspath, dirname
+
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+
+# Check: Extra modules which are required by core test suite
+from tools.utils import check_required_modules
+check_required_modules(['prettytable', 'serial'])
+
+# Imports related to mbed build api
+from tools.build_api import mcu_toolchain_matrix
+
+# Imports from TEST API
+from tools.test_api import SingleTestRunner
+from tools.test_api import singletest_in_cli_mode
+from tools.test_api import detect_database_verbose
+from tools.test_api import get_json_data_from_file
+from tools.test_api import get_avail_tests_summary_table
+from tools.test_api import get_default_test_options_parser
+from tools.test_api import print_muts_configuration_from_json
+from tools.test_api import print_test_configuration_from_json
+from tools.test_api import get_autodetected_MUTS_list
+from tools.test_api import get_autodetected_TEST_SPEC
+from tools.test_api import get_module_avail
+from tools.test_exporters import ReportExporter, ResultExporterType
+
+
+# Importing extra modules which can be not installed but if available they can extend test suite functionality
+try:
+    import mbed_lstools
+    from tools.compliance.ioper_runner import IOperTestRunner
+    from tools.compliance.ioper_runner import get_available_oper_test_scopes
+except:
+    pass
+
+def get_version():
+    """ Returns test script version
+    """
+    single_test_version_major = 1
+    single_test_version_minor = 5
+    return (single_test_version_major, single_test_version_minor)
+
+
+if __name__ == '__main__':
+    # Command line options
+    parser = get_default_test_options_parser()
+
+    parser.description = """This script allows you to run mbed defined test cases for particular MCU(s) and corresponding toolchain(s)."""
+    parser.epilog = """Example: singletest.py -i test_spec.json -M muts_all.json"""
+
+    (opts, args) = parser.parse_args()
+
+    # Print scrip version
+    if opts.version:
+        print parser.description
+        print parser.epilog
+        print "Version %d.%d"% get_version()
+        exit(0)
+
+    if opts.db_url and opts.verbose_test_configuration_only:
+        detect_database_verbose(opts.db_url)
+        exit(0)
+
+    # Print summary / information about automation test status
+    if opts.test_automation_report:
+        print get_avail_tests_summary_table(platform_filter=opts.general_filter_regex)
+        exit(0)
+
+    # Print summary / information about automation test status
+    if opts.test_case_report:
+        test_case_report_cols = ['id',
+                                 'automated',
+                                 'description',
+                                 'peripherals',
+                                 'host_test',
+                                 'duration',
+                                 'source_dir']
+        print get_avail_tests_summary_table(cols=test_case_report_cols,
+                                            result_summary=False,
+                                            join_delim='\n',
+                                            platform_filter=opts.general_filter_regex)
+        exit(0)
+
+    # Only prints matrix of supported toolchains
+    if opts.supported_toolchains:
+        print mcu_toolchain_matrix(platform_filter=opts.general_filter_regex)
+        exit(0)
+
+    test_spec = None
+    MUTs = None
+
+    if hasattr(opts, 'auto_detect') and opts.auto_detect:
+        # If auto_detect attribute is present, we assume other auto-detection
+        # parameters like 'toolchains_filter' are also set.
+        print "MBEDLS: Detecting connected mbed-enabled devices... "
+
+        MUTs = get_autodetected_MUTS_list()
+
+        for mut in MUTs.values():
+            print "MBEDLS: Detected %s, port: %s, mounted: %s"% (mut['mcu_unique'] if 'mcu_unique' in mut else mut['mcu'],
+                                    mut['port'],
+                                    mut['disk'])
+
+        # Set up parameters for test specification filter function (we need to set toolchains per target here)
+        use_default_toolchain = 'default' in opts.toolchains_filter.split(',') if opts.toolchains_filter is not None else True
+        use_supported_toolchains = 'all' in opts.toolchains_filter.split(',') if opts.toolchains_filter is not None else False
+        toolchain_filter = opts.toolchains_filter
+        platform_name_filter = opts.general_filter_regex.split(',') if opts.general_filter_regex is not None else opts.general_filter_regex
+        # Test specification with information about each target and associated toolchain
+        test_spec = get_autodetected_TEST_SPEC(MUTs.values(),
+                                               use_default_toolchain=use_default_toolchain,
+                                               use_supported_toolchains=use_supported_toolchains,
+                                               toolchain_filter=toolchain_filter,
+                                               platform_name_filter=platform_name_filter)
+    else:
+        # Open file with test specification
+        # test_spec_filename tells script which targets and their toolchain(s)
+        # should be covered by the test scenario
+        opts.auto_detect = False
+        test_spec = get_json_data_from_file(opts.test_spec_filename) if opts.test_spec_filename else None
+        if test_spec is None:
+            if not opts.test_spec_filename:
+                parser.print_help()
+            exit(-1)
+
+        # Get extra MUTs if applicable
+        MUTs = get_json_data_from_file(opts.muts_spec_filename) if opts.muts_spec_filename else None
+
+        if MUTs is None:
+            if not opts.muts_spec_filename:
+                parser.print_help()
+            exit(-1)
+
+    if opts.verbose_test_configuration_only:
+        print "MUTs configuration in %s:" % ('auto-detected' if opts.auto_detect else opts.muts_spec_filename)
+        if MUTs:
+            print print_muts_configuration_from_json(MUTs, platform_filter=opts.general_filter_regex)
+        print
+        print "Test specification in %s:" % ('auto-detected' if opts.auto_detect else opts.test_spec_filename)
+        if test_spec:
+            print print_test_configuration_from_json(test_spec)
+        exit(0)
+
+    if get_module_avail('mbed_lstools'):
+        if opts.operability_checks:
+            # Check if test scope is valid and run tests
+            test_scope = get_available_oper_test_scopes()
+            if opts.operability_checks in test_scope:
+                tests = IOperTestRunner(scope=opts.operability_checks)
+                test_results = tests.run()
+
+                # Export results in form of JUnit XML report to separate file
+                if opts.report_junit_file_name:
+                    report_exporter = ReportExporter(ResultExporterType.JUNIT_OPER)
+                    report_exporter.report_to_file(test_results, opts.report_junit_file_name)
+            else:
+                print "Unknown interoperability test scope name: '%s'" % (opts.operability_checks)
+                print "Available test scopes: %s" % (','.join(["'%s'" % n for n in test_scope]))
+
+            exit(0)
+
+    # Verbose test specification and MUTs configuration
+    if MUTs and opts.verbose:
+        print print_muts_configuration_from_json(MUTs)
+    if test_spec and opts.verbose:
+        print print_test_configuration_from_json(test_spec)
+
+    if opts.only_build_tests:
+        # We are skipping testing phase, and suppress summary
+        opts.suppress_summary = True
+
+    single_test = SingleTestRunner(_global_loops_count=opts.test_global_loops_value,
+                                   _test_loops_list=opts.test_loops_list,
+                                   _muts=MUTs,
+                                   _clean=opts.clean,
+                                   _opts_db_url=opts.db_url,
+                                   _opts_log_file_name=opts.log_file_name,
+                                   _opts_report_html_file_name=opts.report_html_file_name,
+                                   _opts_report_junit_file_name=opts.report_junit_file_name,
+                                   _opts_report_build_file_name=opts.report_build_file_name,
+                                   _test_spec=test_spec,
+                                   _opts_goanna_for_mbed_sdk=opts.goanna_for_mbed_sdk,
+                                   _opts_goanna_for_tests=opts.goanna_for_tests,
+                                   _opts_shuffle_test_order=opts.shuffle_test_order,
+                                   _opts_shuffle_test_seed=opts.shuffle_test_seed,
+                                   _opts_test_by_names=opts.test_by_names,
+                                   _opts_peripheral_by_names=opts.peripheral_by_names,
+                                   _opts_test_only_peripheral=opts.test_only_peripheral,
+                                   _opts_test_only_common=opts.test_only_common,
+                                   _opts_verbose_skipped_tests=opts.verbose_skipped_tests,
+                                   _opts_verbose_test_result_only=opts.verbose_test_result_only,
+                                   _opts_verbose=opts.verbose,
+                                   _opts_firmware_global_name=opts.firmware_global_name,
+                                   _opts_only_build_tests=opts.only_build_tests,
+                                   _opts_parallel_test_exec=opts.parallel_test_exec,
+                                   _opts_suppress_summary=opts.suppress_summary,
+                                   _opts_test_x_toolchain_summary=opts.test_x_toolchain_summary,
+                                   _opts_copy_method=opts.copy_method,
+                                   _opts_mut_reset_type=opts.mut_reset_type,
+                                   _opts_jobs=opts.jobs,
+                                   _opts_waterfall_test=opts.waterfall_test,
+                                   _opts_consolidate_waterfall_test=opts.consolidate_waterfall_test,
+                                   _opts_extend_test_timeout=opts.extend_test_timeout,
+                                   _opts_auto_detect=opts.auto_detect)
+
+    # Runs test suite in CLI mode
+    if (singletest_in_cli_mode(single_test)):
+        exit(0)
+    else:
+        exit(-1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/size.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,121 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import sys
+from os.path import join, abspath, dirname, exists, splitext
+from subprocess import Popen, PIPE
+import csv
+from collections import defaultdict
+
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from tools.paths import BUILD_DIR, TOOLS_DATA
+from tools.settings import GCC_ARM_PATH
+from tools.tests import TEST_MAP
+from tools.build_api import build_mbed_libs, build_project
+
+SIZE = join(GCC_ARM_PATH, 'arm-none-eabi-size')
+
+def get_size(path):
+    out = Popen([SIZE, path], stdout=PIPE).communicate()[0]
+    return map(int, out.splitlines()[1].split()[:4])
+
+def get_percentage(before, after):
+    if before == 0:
+        return 0 if after == 0 else 100.0
+    return float(after - before) / float(before) * 100.0
+
+def human_size(val):
+    if val>1024:
+        return "%.0fKb" % (float(val)/1024.0)
+    return "%d" % val
+
+def print_diff(name, before, after):
+    print "%s: (%s -> %s) %.2f%%" % (name, human_size(before) , human_size(after) , get_percentage(before , after))
+
+BENCHMARKS = [
+    ("BENCHMARK_1", "CENV"),
+    ("BENCHMARK_2", "PRINTF"),
+    ("BENCHMARK_3", "FP"),
+    ("BENCHMARK_4", "MBED"),
+    ("BENCHMARK_5", "ALL"),
+]
+BENCHMARK_DATA_PATH = join(TOOLS_DATA, 'benchmarks.csv')
+
+
+def benchmarks():
+    # CSV Data
+    csv_data = csv.writer(open(BENCHMARK_DATA_PATH, 'wb'))
+    csv_data.writerow(['Toolchain', "Target", "Benchmark", "code", "data", "bss", "flash"])
+
+    # Build
+    for toolchain in ['ARM', 'uARM', 'GCC_CR', 'GCC_ARM']:
+        for mcu in ["LPC1768", "LPC11U24"]:
+            # Build Libraries
+            build_mbed_libs(mcu, toolchain)
+
+            # Build benchmarks
+            build_dir = join(BUILD_DIR, "benchmarks", mcu, toolchain)
+            for test_id, title in BENCHMARKS:
+                # Build Benchmark
+                try:
+                    test = TEST_MAP[test_id]
+                    path = build_project(test.source_dir, join(build_dir, test_id),
+                                 mcu, toolchain, test.dependencies)
+                    base, ext = splitext(path)
+                    # Check Size
+                    code, data, bss, flash = get_size(base+'.elf')
+                    csv_data.writerow([toolchain, mcu, title, code, data, bss, flash])
+                except Exception, e:
+                    print "Unable to build %s for toolchain %s targeting %s" % (test_id, toolchain, mcu)
+                    print e
+
+
+def compare(t1, t2, target):
+    if not exists(BENCHMARK_DATA_PATH):
+        benchmarks()
+    else:
+        print "Loading: %s" % BENCHMARK_DATA_PATH
+
+    data = csv.reader(open(BENCHMARK_DATA_PATH, 'rb'))
+
+    benchmarks_data = defaultdict(dict)
+    for (toolchain, mcu, name, code, data, bss, flash) in data:
+        if target == mcu:
+            for t in [t1, t2]:
+                if toolchain == t:
+                    benchmarks_data[name][t] = map(int, (code, data, bss, flash))
+
+    print "%s vs %s for %s" % (t1, t2, target)
+    for name, data in benchmarks_data.iteritems():
+        try:
+            # Check Size
+            code_a, data_a, bss_a, flash_a = data[t1]
+            code_u, data_u, bss_u, flash_u = data[t2]
+
+            print "\n=== %s ===" % name
+            print_diff("code", code_a , code_u)
+            print_diff("data", data_a , data_u)
+            print_diff("bss", bss_a , bss_u)
+            print_diff("flash", flash_a , flash_u)
+        except Exception, e:
+            print "No data for benchmark %s" % (name)
+            print e
+
+
+if __name__ == '__main__':
+    compare("GCC_CR", "LPC1768")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/synch.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,373 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+One repository to update them all
+On mbed.org the mbed SDK is split up in multiple repositories, this script takes
+care of updating them all.
+"""
+import sys
+from copy import copy
+from os import walk, remove, makedirs
+from os.path import join, abspath, dirname, relpath, exists, isfile
+from shutil import copyfile
+from optparse import OptionParser
+import re
+import string
+
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from tools.settings import MBED_ORG_PATH, MBED_ORG_USER, BUILD_DIR
+from tools.paths import LIB_DIR
+from tools.utils import run_cmd
+
+MBED_URL = "mbed.org"
+MBED_USER = "mbed_official"
+
+changed = []
+push_remote = True
+quiet = False
+commit_msg = ''
+
+# Code that does have a mirror in the mbed SDK
+# Tuple data: (repo_name, list_of_code_dirs, [team])
+# team is optional - if not specified, the code is published under mbed_official
+OFFICIAL_CODE = (
+    ("mbed-dev" , "mbed"),
+    ("mbed-rtos", "rtos"),
+    ("mbed-dsp" , "dsp"),
+    ("mbed-rpc" , "rpc"),
+
+    ("lwip"    , "net/lwip/lwip"),
+    ("lwip-sys", "net/lwip/lwip-sys"),
+    ("Socket"  , "net/lwip/Socket"),
+
+    ("lwip-eth"         , "net/eth/lwip-eth"),
+    ("EthernetInterface", "net/eth/EthernetInterface"),
+
+    ("USBDevice", "USBDevice"),
+    ("USBHost"  , "USBHost"),
+
+    ("CellularModem", "net/cellular/CellularModem"),
+    ("CellularUSBModem", "net/cellular/CellularUSBModem"),
+    ("UbloxUSBModem", "net/cellular/UbloxUSBModem"),
+    ("UbloxModemHTTPClientTest", ["tests/net/cellular/http/common", "tests/net/cellular/http/ubloxusb"]),
+    ("UbloxModemSMSTest", ["tests/net/cellular/sms/common", "tests/net/cellular/sms/ubloxusb"]),
+    ("FATFileSystem", "fs/fat", "mbed-official"),
+)
+
+
+# Code that does have dependencies to libraries should point to
+# the latest revision. By default, they point to a specific revision.
+CODE_WITH_DEPENDENCIES = (
+    # Libraries
+    "EthernetInterface",
+
+    # RTOS Examples
+    "rtos_basic",
+    "rtos_isr",
+    "rtos_mail",
+    "rtos_mutex",
+    "rtos_queue",
+    "rtos_semaphore",
+    "rtos_signals",
+    "rtos_timer",
+
+    # Net Examples
+    "TCPEchoClient",
+    "TCPEchoServer",
+    "TCPSocket_HelloWorld",
+    "UDPSocket_HelloWorld",
+    "UDPEchoClient",
+    "UDPEchoServer",
+    "BroadcastReceive",
+    "BroadcastSend",
+
+    # mbed sources
+    "mbed-src-program",
+)
+
+# A list of regular expressions that will be checked against each directory
+# name and skipped if they match.
+IGNORE_DIRS = (
+)
+
+IGNORE_FILES = (
+    'COPYING',
+    '\.md',
+    "\.lib",
+    "\.bld"
+)
+
+def ignore_path(name, reg_exps):
+    for r in reg_exps:
+        if re.search(r, name):
+            return True
+    return False
+
+class MbedRepository:
+    @staticmethod
+    def run_and_print(command, cwd):
+        stdout, _, _ = run_cmd(command, wd=cwd, redirect=True)
+        print(stdout)
+
+    def __init__(self, name, team = None):
+        self.name = name
+        self.path = join(MBED_ORG_PATH, name)
+        if team is None:
+            self.url = "http://" + MBED_URL + "/users/" + MBED_USER + "/code/%s/"
+        else:
+            self.url = "http://" + MBED_URL + "/teams/" + team + "/code/%s/"
+        if not exists(self.path):
+            # Checkout code
+            if not exists(MBED_ORG_PATH):
+                makedirs(MBED_ORG_PATH)
+
+            self.run_and_print(['hg', 'clone', self.url % name], cwd=MBED_ORG_PATH)
+
+        else:
+            # Update
+            self.run_and_print(['hg', 'pull'], cwd=self.path)
+            self.run_and_print(['hg', 'update'], cwd=self.path)
+
+    def publish(self):
+        # The maintainer has to evaluate the changes first and explicitly accept them
+        self.run_and_print(['hg', 'addremove'], cwd=self.path)
+        stdout, _, _ = run_cmd(['hg', 'status'], wd=self.path)
+        if stdout == '':
+            print "No changes"
+            return False
+        print stdout
+        if quiet:
+            commit = 'Y'
+        else:
+            commit = raw_input(push_remote and "Do you want to commit and push? Y/N: " or "Do you want to commit? Y/N: ")
+        if commit == 'Y':
+            args = ['hg', 'commit', '-u', MBED_ORG_USER]
+            if commit_msg:
+                args = args + ['-m', commit_msg]
+            self.run_and_print(args, cwd=self.path)
+            if push_remote:
+                self.run_and_print(['hg', 'push'], cwd=self.path)
+        return True
+
+# Check if a file is a text file or a binary file
+# Taken from http://code.activestate.com/recipes/173220/
+text_characters = "".join(map(chr, range(32, 127)) + list("\n\r\t\b"))
+_null_trans = string.maketrans("", "")
+def is_text_file(filename):
+    block_size = 1024
+    def istext(s):
+        if "\0" in s:
+            return 0
+
+        if not s:  # Empty files are considered text
+            return 1
+
+        # Get the non-text characters (maps a character to itself then
+        # use the 'remove' option to get rid of the text characters.)
+        t = s.translate(_null_trans, text_characters)
+
+        # If more than 30% non-text characters, then
+        # this is considered a binary file
+        if float(len(t))/len(s) > 0.30:
+            return 0
+        return 1
+    with open(filename) as f:
+        res = istext(f.read(block_size))
+    return res
+
+# Return the line ending type for the given file ('cr' or 'crlf')
+def get_line_endings(f):
+  examine_size = 1024
+  try:
+    tf = open(f, "rb")
+    lines, ncrlf = tf.readlines(examine_size), 0
+    tf.close()
+    for l in lines:
+      if l.endswith("\r\n"):
+        ncrlf = ncrlf + 1
+    return 'crlf' if ncrlf > len(lines) >> 1 else 'cr'
+  except:
+    return 'cr'
+
+# Copy file to destination, but preserve destination line endings if possible
+# This prevents very annoying issues with huge diffs that appear because of
+# differences in line endings
+def copy_with_line_endings(sdk_file, repo_file):
+    if not isfile(repo_file):
+        copyfile(sdk_file, repo_file)
+        return
+    is_text = is_text_file(repo_file)
+    if is_text:
+        sdk_le = get_line_endings(sdk_file)
+        repo_le = get_line_endings(repo_file)
+    if not is_text or sdk_le == repo_le:
+        copyfile(sdk_file, repo_file)
+    else:
+        print "Converting line endings in '%s' to '%s'" % (abspath(repo_file), repo_le)
+        f = open(sdk_file, "rb")
+        data = f.read()
+        f.close()
+        f = open(repo_file, "wb")
+        data = data.replace("\r\n", "\n") if repo_le == 'cr' else data.replace('\n','\r\n')
+        f.write(data)
+        f.close()
+
+def visit_files(path, visit):
+    for root, dirs, files in walk(path):
+        # Ignore hidden directories
+        for d in copy(dirs):
+            full = join(root, d)
+            if d.startswith('.'):
+                dirs.remove(d)
+            if ignore_path(full, IGNORE_DIRS):
+                print "Skipping '%s'" % full
+                dirs.remove(d)
+
+        for file in files:
+            if ignore_path(file, IGNORE_FILES):
+                continue
+
+            visit(join(root, file))
+
+
+def update_repo(repo_name, sdk_paths, team_name):
+    repo = MbedRepository(repo_name, team_name)
+    # copy files from mbed SDK to mbed_official repository
+    def visit_mbed_sdk(sdk_file):
+        repo_file = join(repo.path, relpath(sdk_file, sdk_path))
+
+        repo_dir = dirname(repo_file)
+        if not exists(repo_dir):
+            makedirs(repo_dir)
+
+        copy_with_line_endings(sdk_file, repo_file)
+    for sdk_path in sdk_paths:
+        visit_files(sdk_path, visit_mbed_sdk)
+
+    # remove repository files that do not exist in the mbed SDK
+    def visit_repo(repo_file):
+        for sdk_path in sdk_paths:
+            sdk_file = join(sdk_path, relpath(repo_file, repo.path))
+            if exists(sdk_file):
+                break
+        else:
+            remove(repo_file)
+            print "remove: %s" % repo_file
+    visit_files(repo.path, visit_repo)
+
+    if repo.publish():
+        changed.append(repo_name)
+
+
+def update_code(repositories):
+    for r in repositories:
+        repo_name, sdk_dir = r[0], r[1]
+        team_name = r[2] if len(r) == 3 else None
+        print '\n=== Updating "%s" ===' % repo_name
+        sdk_dirs = [sdk_dir] if type(sdk_dir) != type([]) else sdk_dir
+        sdk_path = [join(LIB_DIR, d) for d in sdk_dirs]
+        update_repo(repo_name, sdk_path, team_name)
+
+def update_single_repo(repo):
+    repos = [r for r in OFFICIAL_CODE if r[0] == repo]
+    if not repos:
+        print "Repository '%s' not found" % repo
+    else:
+        update_code(repos)
+
+def update_dependencies(repositories):
+    for repo_name in repositories:
+        print '\n=== Updating "%s" ===' % repo_name
+        repo = MbedRepository(repo_name)
+
+        # point to the latest libraries
+        def visit_repo(repo_file):
+            with open(repo_file, "r") as f:
+                url = f.read()
+            with open(repo_file, "w") as f:
+                f.write(url[:(url.rindex('/')+1)])
+        visit_files(repo.path, visit_repo, None, MBED_REPO_EXT)
+
+        if repo.publish():
+            changed.append(repo_name)
+
+
+def update_mbed():
+    update_repo("mbed", [join(BUILD_DIR, "mbed")], None)
+
+def do_sync(options):
+    global push_remote, quiet, commit_msg, changed
+
+    push_remote = not options.nopush
+    quiet = options.quiet
+    commit_msg = options.msg
+    chnaged = []
+
+    if options.code:
+        update_code(OFFICIAL_CODE)
+
+    if options.dependencies:
+        update_dependencies(CODE_WITH_DEPENDENCIES)
+
+    if options.mbed:
+        update_mbed()
+
+    if options.repo:
+        update_single_repo(options.repo)
+
+    if changed:
+        print "Repositories with changes:", changed
+
+    return changed
+
+if __name__ == '__main__':
+    parser = OptionParser()
+
+    parser.add_option("-c", "--code",
+                  action="store_true",  default=False,
+                  help="Update the mbed_official code")
+
+    parser.add_option("-d", "--dependencies",
+                  action="store_true",  default=False,
+                  help="Update the mbed_official code dependencies")
+
+    parser.add_option("-m", "--mbed",
+                  action="store_true",  default=False,
+                  help="Release a build of the mbed library")
+
+    parser.add_option("-n", "--nopush",
+                  action="store_true", default=False,
+                  help="Commit the changes locally only, don't push them")
+
+    parser.add_option("", "--commit_message",
+                  action="store", type="string", default='', dest='msg',
+                  help="Commit message to use for all the commits")
+
+    parser.add_option("-r", "--repository",
+                  action="store", type="string", default='', dest='repo',
+                  help="Synchronize only the given repository")
+
+    parser.add_option("-q", "--quiet",
+                  action="store_true", default=False,
+                  help="Don't ask for confirmation before commiting or pushing")
+
+    (options, args) = parser.parse_args()
+
+    do_sync(options)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,2353 @@
+"""
+mbed SDK
+Copyright (c) 2011-2016 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+CORE_LABELS = {
+    "ARM7TDMI-S": ["ARM7", "LIKE_CORTEX_ARM7"],
+    "Cortex-M0" : ["M0", "CORTEX_M", "LIKE_CORTEX_M0"],
+    "Cortex-M0+": ["M0P", "CORTEX_M", "LIKE_CORTEX_M0"],
+    "Cortex-M1" : ["M1", "CORTEX_M", "LIKE_CORTEX_M1"],
+    "Cortex-M3" : ["M3", "CORTEX_M", "LIKE_CORTEX_M3"],
+    "Cortex-M4" : ["M4", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M4"],
+    "Cortex-M4F" : ["M4", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M4"],
+    "Cortex-M7" : ["M7", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M7"],
+    "Cortex-M7F" : ["M7", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M7"],
+    "Cortex-A9" : ["A9", "CORTEX_A", "LIKE_CORTEX_A9"]
+}
+
+import os
+import binascii
+import struct
+import shutil
+from tools.patch import patch
+from paths import TOOLS_BOOTLOADERS
+
+class Target:
+    def __init__(self):
+        # ARM Core
+        self.core = None
+
+        # Is the disk provided by the interface chip of this board virtual?
+        self.is_disk_virtual = False
+
+        # 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 = []
+
+        # list of macros (-D)
+        self.macros = []
+
+        # Default online compiler:
+        self.default_toolchain = "ARM"
+
+        self.name = self.__class__.__name__
+
+        # Code used to determine devices' platform
+        # This code is prefix in URL link provided in mbed.htm (in mbed disk)
+        self.detect_code = []
+
+    def program_cycle_s(self):
+        return 4 if self.is_disk_virtual else 1.5
+
+    def get_labels(self):
+        return [self.name] + CORE_LABELS[self.core] + self.extra_labels
+
+    def init_hooks(self, hook, toolchain_name):
+        pass
+
+
+### MCU Support ###
+
+class CM4_UARM(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4"
+        self.supported_toolchains = ["uARM"]
+        self.default_toolchain = "uARM"
+
+class CM4_ARM(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4"
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class CM4F_UARM(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.supported_toolchains = ["uARM"]
+        self.default_toolchain = "uARM"
+
+class CM4F_ARM(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+
+### NXP ###
+
+# This class implements the post-link patching step needed by LPC targets
+class LPCTarget(Target):
+    def __init__(self):
+        Target.__init__(self)
+
+    def init_hooks(self, hook, toolchain_name):
+        hook.hook_add_binary("post", self.lpc_patch)
+
+    @staticmethod
+    def lpc_patch(t_self, resources, elf, binf):
+        t_self.debug("LPC Patch: %s" % os.path.split(binf)[1])
+        patch(binf)
+
+class LPC11C24(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11XX_11CXX', 'LPC11CXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+
+        self.progen = {
+            "target":"lpc11c24_301",
+        }
+
+class LPC1114(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11XX_11CXX', 'LPC11XX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc1114_102",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U24(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX', 'LPC11U24_401']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.detect_code = ["1040"]
+        self.progen = {
+            "target":"lpc11u24_201",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class OC_MBUINO(LPC11U24):
+    def __init__(self):
+        LPC11U24.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX']
+        self.macros = ['TARGET_LPC11U24']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u24_201",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U24_301(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+
+class LPC11U34_421(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+
+class MICRONFCBOARD(LPC11U34_421):
+    def __init__(self):
+        LPC11U34_421.__init__(self)
+        self.macros = ['LPC11U34_421', 'APPNEARME_MICRONFCBOARD']
+        self.extra_labels = ['NXP', 'LPC11UXX', 'APPNEARME_MICRONFCBOARD']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+
+class LPC11U35_401(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u35_401",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U35_501(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR" , "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u35_501",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U35_501_IBDAP(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR" , "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u35_501",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class XADOW_M0(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u35_501",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U35_Y5_MBUG(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR" , "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u35_501",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U37_501(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"lpc11u37_501",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPCCAPPUCCINO(LPC11U37_501):
+    def __init__(self):
+        LPC11U37_501.__init__(self)
+
+class ARCH_GPRS(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX', 'LPC11U37_501']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"lpc11u37_501",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC11U68(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['NXP', 'LPC11U6X']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_CR", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["1168"]
+        self.progen = {
+            "target":"lpc11u68",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC1347(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC13XX']
+        self.supported_toolchains = ["ARM", "GCC_ARM","IAR"]
+        self.progen = {
+            "target":"lpc1347",
+        }
+
+class LPC1549(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC15XX']
+        self.supported_toolchains = ["uARM", "GCC_CR", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["1549"]
+        self.progen = {
+            "target":"lpc1549",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC1768(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC176X', 'MBED_LPC1768']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.detect_code = ["1010"]
+        self.progen = {
+            "target":"mbed-lpc1768",
+        }
+
+class ARCH_PRO(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC176X']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.macros = ['TARGET_LPC1768']
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"arch-pro",
+        }
+
+class UBLOX_C027(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC176X']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.macros = ['TARGET_LPC1768']
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"ublox-c027",
+        }
+
+class XBED_LPC1768(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC176X', 'XBED_LPC1768']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
+        self.macros = ['TARGET_LPC1768']
+        self.detect_code = ["1010"]
+        self.progen = {
+            "target":"lpc1768",
+        }
+
+class LPC2368(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "ARM7TDMI-S"
+        self.extra_labels = ['NXP', 'LPC23XX']
+        self.supported_toolchains = ["ARM", "GCC_ARM", "GCC_CR"]
+        self.progen = {
+            "target":"lpc2368",
+        }
+
+class LPC2460(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "ARM7TDMI-S"
+        self.extra_labels = ['NXP', 'LPC2460']
+        self.supported_toolchains = ["GCC_ARM"]
+        self.progen = {
+            "target":"lpc2460",
+        }
+
+class LPC810(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['NXP', 'LPC81X']
+        self.supported_toolchains = ["uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"lpc810",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC812(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['NXP', 'LPC81X']
+        self.supported_toolchains = ["uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.detect_code = ["1050"]
+        self.progen = {
+            "target":"lpc812m101",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC824(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['NXP', 'LPC82X']
+        self.supported_toolchains = ["uARM", "GCC_ARM","GCC_CR", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"lpc824m201",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class SSCI824(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['NXP', 'LPC82X']
+        self.supported_toolchains = ["uARM", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"ssci824",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class LPC4088(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['NXP', 'LPC408X']
+        self.supported_toolchains = ["ARM", "GCC_CR", "GCC_ARM", "IAR"]
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"lpc4088",
+        }
+
+    def init_hooks(self, hook, toolchain_name):
+        if toolchain_name in ['ARM_STD', 'ARM_MICRO']:
+            hook.hook_add_binary("post", self.binary_hook)
+
+    @staticmethod
+    def binary_hook(t_self, resources, elf, binf):
+        if not os.path.isdir(binf):
+            # Regular binary file, nothing to do
+            LPCTarget.lpc_patch(t_self, resources, elf, binf)
+            return
+        outbin = open(binf + ".temp", "wb")
+        partf = open(os.path.join(binf, "ER_IROM1"), "rb")
+        # Pad the fist part (internal flash) with 0xFF to 512k
+        data = partf.read()
+        outbin.write(data)
+        outbin.write('\xFF' * (512*1024 - len(data)))
+        partf.close()
+        # Read and append the second part (external flash) in chunks of fixed size
+        chunksize = 128 * 1024
+        partf = open(os.path.join(binf, "ER_IROM2"), "rb")
+        while True:
+            data = partf.read(chunksize)
+            outbin.write(data)
+            if len(data) < chunksize:
+                break
+        partf.close()
+        outbin.close()
+        # Remove the directory with the binary parts and rename the temporary
+        # file to 'binf'
+        shutil.rmtree(binf, True)
+        os.rename(binf + '.temp', binf)
+        t_self.debug("Generated custom binary file (internal flash + SPIFI)")
+        LPCTarget.lpc_patch(t_self, resources, elf, binf)
+
+class LPC4088_DM(LPC4088):
+    pass
+
+class LPC4330_M4(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['NXP', 'LPC43XX', 'LPC4330']
+        self.supported_toolchains = ["ARM", "GCC_CR", "IAR", "GCC_ARM"]
+        self.progen = {
+            "target":"lpc4330",
+        }
+
+class LPC4330_M0(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC43XX', 'LPC4330']
+        self.supported_toolchains = ["ARM", "GCC_CR", "IAR"]
+
+class LPC4337(LPCTarget):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['NXP', 'LPC43XX', 'LPC4337']
+        self.supported_toolchains = ["ARM"]
+        self.progen = {
+            "target":"lpc4337",
+        }
+
+class LPC1800(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['NXP', 'LPC43XX']
+        self.supported_toolchains = ["ARM", "GCC_CR", "IAR"]
+
+class LPC11U37H_401(LPCTarget):
+    def __init__(self):
+        LPCTarget.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['NXP', 'LPC11UXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"lpc11u37_401",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+### Freescale ###
+
+class KL05Z(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Freescale', 'KLXX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"frdm-kl05z",
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+class KL25Z(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Freescale', 'KLXX']
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.detect_code = ["0200"]
+        self.progen = {
+            "target":"frdm-kl25z",
+        }
+
+class KL26Z(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Freescale', 'KLXX']
+        self.supported_toolchains = ["ARM","GCC_ARM","IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"kl26z",
+        }
+
+class KL43Z(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Freescale', 'KLXX']
+        self.supported_toolchains = ["GCC_ARM", "ARM"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.progen = {
+            "target":"frdm-kl43z",
+        }
+
+class KL46Z(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Freescale', 'KLXX']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.detect_code = ["0220"]
+        self.progen = {
+            "target":"frdm-kl46z",
+        }
+
+class K20D50M(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4"
+        self.extra_labels = ['Freescale', 'K20XX']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "IAR"]
+        self.is_disk_virtual = True
+        self.detect_code = ["0230"]
+        self.progen = {
+            "target":"frdm-k20d50m",
+        }
+
+class K22F(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['Freescale', 'KSDK2_MCUS', 'FRDM', 'KPSDK_MCUS', 'KPSDK_CODE']
+        self.macros = ["CPU_MK22FN512VLH12", "FSL_RTOS_MBED"]
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.detect_code = ["0231"]
+        self.progen = {
+            "target":"frdm-k22f",
+        }
+
+class KL27Z(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Freescale', 'KSDK2_MCUS', 'FRDM']
+        self.macros = ["CPU_MKL27Z64VLH4", "FSL_RTOS_MBED"]
+        self.supported_toolchains = ["ARM","GCC_ARM","IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.default_toolchain = "ARM"
+        self.detect_code = ["0261"]
+        self.progen_target = {
+            "target":"frdm-kl27z",
+        }
+
+class K64F(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['Freescale', 'KSDK2_MCUS', 'FRDM', 'KPSDK_MCUS', 'KPSDK_CODE', 'MCU_K64F']
+        self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED"]
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.is_disk_virtual = True
+        self.default_toolchain = "ARM"
+        self.detect_code = ["0240"]
+        self.progen = {
+            "target":"frdm-k64f",
+        }
+
+class MTS_GAMBIT(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['Freescale', 'KSDK2_MCUS', 'K64F', 'KPSDK_MCUS', 'KPSDK_CODE', 'MCU_K64F']
+        self.supported_toolchains = ["ARM", "GCC_ARM"]
+        self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"]
+        self.is_disk_virtual = True
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"mts-gambit",
+        }
+
+class HEXIWEAR(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['Freescale', 'KSDK2_MCUS', 'K64F']
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+        self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"]
+        self.is_disk_virtual = True
+        self.default_toolchain = "ARM"
+        self.detect_code = ["0214"]
+        self.progen = {
+            "target":"hexiwear-k64f",
+        }
+
+class TEENSY3_1(Target):
+    OUTPUT_EXT = 'hex'
+
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4"
+        self.extra_labels = ['Freescale', 'K20XX', 'K20DX256']
+        self.supported_toolchains = ["GCC_ARM", "ARM"]
+        self.is_disk_virtual = True
+        self.detect_code = ["0230"]
+        self.progen = {
+            "target":"teensy-31",
+        }
+
+    def init_hooks(self, hook, toolchain_name):
+        if toolchain_name in ['ARM_STD', 'ARM_MICRO', 'GCC_ARM']:
+            hook.hook_add_binary("post", self.binary_hook)
+
+    @staticmethod
+    def binary_hook(t_self, resources, elf, binf):
+        from intelhex import IntelHex
+        binh = IntelHex()
+        binh.loadbin(binf, offset = 0)
+
+        with open(binf.replace(".bin", ".hex"), "w") as f:
+            binh.tofile(f, format='hex')
+
+### STMicro ###
+
+class NUCLEO_F030R8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F030R8']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0725"]
+        self.progen = {
+            "target":"nucleo-f030r8",
+        }
+
+class NUCLEO_F031K6(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F031K6']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["0791"]
+        self.progen = {
+            "target":"nucleo-f031k6",
+        }
+
+class NUCLEO_F042K6(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F042K6']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["0785"]
+        self.progen = {
+            "target":"nucleo-f042k6",
+        }
+
+class NUCLEO_F070RB(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F070RB']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0755"]
+        self.progen = {
+            "target":"nucleo-f070rb",
+        }
+
+class NUCLEO_F072RB(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F072RB']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0730"]
+        self.progen = {
+            "target":"nucleo-f072rb",
+        }
+
+class NUCLEO_F091RC(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F091RC']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0750"]
+        self.progen = {
+            "target":"nucleo-f091rc",
+        }
+
+class NUCLEO_F103RB(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['STM', 'STM32F1', 'STM32F103RB']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0700"]
+        self.progen = {
+            "target":"nucleo-f103rb",
+        }
+
+class NUCLEO_F302R8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F3', 'STM32F302R8']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0705"]
+        self.progen = {
+            "target":"nucleo-f302r8",
+        }
+
+class NUCLEO_F303K8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F3', 'STM32F303K8']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["0775"]
+        self.progen = {
+            "target":"nucleo-f303k8",
+        }
+
+class NUCLEO_F303RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F3', 'STM32F303RE']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0745"]
+        self.progen = {
+            "target":"nucleo-f303re",
+        }
+
+class NUCLEO_F334R8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F3', 'STM32F334R8']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0735"]
+        self.progen = {
+            "target":"nucleo-f334r8",
+        }
+
+class NUCLEO_F401RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F401RE']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0720"]
+        self.progen = {
+            "target":"nucleo-f401re",
+        }
+
+class NUCLEO_F410RB(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F410RB']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0740"]
+        self.progen = {
+            "target":"nucleo-f410rb",
+        }
+
+class NUCLEO_F411RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0740"]
+        self.progen = {
+            "target":"nucleo-f411re",
+        }
+
+class ELMO_F411RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["----"]
+
+class NUCLEO_F446RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F446RE']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0777"]
+        self.progen = {
+            "target":"nucleo-f446re",
+        }
+
+class B96B_F446VE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F446VE']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0840"]
+
+class NUCLEO_F746ZG(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M7F"
+        self.extra_labels = ['STM', 'STM32F7', 'STM32F746', 'STM32F746ZG']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.detect_code = ["0816"]
+        self.progen = {
+            "target":"nucleo-f746zg",
+            "iar": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'iar_nucleo_f746zg.ewp.tmpl')],
+            }
+        }
+
+class NUCLEO_L031K6(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32L0', 'STM32L031K6']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["0790"]
+        self.progen = {
+            "target":"nucleo-l031k6",
+        }
+
+class NUCLEO_L053R8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['STM', 'STM32L0', 'STM32L053R8']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0715"]
+        self.progen = {
+            "target":"nucleo-l053r8",
+        }
+
+class NUCLEO_L073RZ(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['STM', 'STM32L0', 'STM32L073RZ']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0760"]
+        self.progen = {
+            "target":"nucleo-l073rz",
+        }
+
+
+class NUCLEO_L152RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['STM', 'STM32L1', 'STM32L152RE']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0710"]
+        self.progen = {
+            "target":"nucleo-l152re",
+        }
+
+class NUCLEO_L476RG(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32L4', 'STM32L476RG']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO", "MORPHO"]
+        self.detect_code = ["0765"]
+        self.progen = {
+            "target":"nucleo-l476rg",
+        }
+
+class STM32F3XX(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4"
+        self.extra_labels = ['STM', 'STM32F3XX']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+
+class STM32F407(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F4XX']
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+
+class ARCH_MAX(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F407', 'STM32F407VG']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.macros = ['LSI_VALUE=32000']
+        self.progen = {
+            "target":"lpc1768",
+        }
+    def program_cycle_s(self):
+        return 2
+
+class DISCO_F051R8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['STM', 'STM32F0', 'STM32F051', 'STM32F051R8']
+        self.supported_toolchains = ["GCC_ARM"]
+        self.default_toolchain = "uARM"
+
+class DISCO_F100RB(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['STM', 'STM32F1', 'STM32F100RB']
+        self.supported_toolchains = ["GCC_ARM"]
+        self.default_toolchain = "uARM"
+
+class DISCO_F303VC(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F3', 'STM32F303', 'STM32F303VC']
+        self.supported_toolchains = ["GCC_ARM"]
+        self.default_toolchain = "uARM"
+
+class DISCO_F334C8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F3', 'STM32F334C8']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.detect_code = ["0810"]
+        self.progen = {
+            "target":"disco-f334c8",
+        }
+
+class DISCO_F407VG(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F407', 'STM32F407VG']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.progen = {
+            "target":"disco-f407vg",
+        }
+        self.default_toolchain = "ARM"
+
+class DISCO_F429ZI(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F429', 'STM32F429ZI']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"disco-f429zi",
+        }
+
+class DISCO_F469NI(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F469', 'STM32F469NI']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.detect_code = ["0788"]
+        self.progen = {
+            "target":"disco-f469ni",
+        }
+
+class DISCO_L053C8(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['STM', 'STM32L0', 'STM32L053C8']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"disco-l053c8",
+        }
+
+class DISCO_F746NG(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M7F"
+        self.extra_labels = ['STM', 'STM32F7', 'STM32F746', 'STM32F746NG']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.detect_code = ["0815"]
+        self.progen = {
+            "target":"disco-f746ng",
+        }
+
+class DISCO_L476VG(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32L4', 'STM32L476VG']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.detect_code = ["0820"]
+        self.progen = {
+            "target":"disco-l476vg",
+        }
+
+class MTS_MDOT_F405RG(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F405RG']
+        self.macros = ['HSE_VALUE=26000000', 'OS_CLOCK=48000000']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.is_disk_virtual = True
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"mts-mdot-f405rg",
+        }
+
+class MTS_MDOT_F411RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
+        self.macros = ['HSE_VALUE=26000000', 'OS_CLOCK=96000000', 'USE_PLL_HSE_EXTC=0', 'VECT_TAB_OFFSET=0x00010000']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"mts-mdot-f411re",
+        }
+
+    def init_hooks(self, hook, toolchain_name):
+        if toolchain_name in ['GCC_ARM', 'ARM_STD', 'ARM_MICRO']:
+            hook.hook_add_binary("post", self.combine_bins)
+
+    # combine application binary with bootloader
+    # bootloader + padding to 64kB + application + md5sum (16 bytes)
+    @staticmethod
+    def combine_bins(t_self, resources, elf, binf):
+        loader = os.path.join(TOOLS_BOOTLOADERS, "MTS_MDOT_F411RE", "bootloader.bin")
+        target = binf + ".tmp"
+        if not os.path.exists(loader):
+            print "Can't find bootloader binary: " + loader
+            return
+        outbin = open(target, 'w+b')
+        part = open(loader, 'rb')
+        data = part.read()
+        outbin.write(data)
+        outbin.write('\xFF' * (64*1024 - len(data)))
+        part.close()
+        part = open(binf, 'rb')
+        data = part.read()
+        outbin.write(data)
+        part.close()
+        outbin.seek(0, 0)
+        data = outbin.read()
+        outbin.seek(0, 1)
+        crc = struct.pack('<I', binascii.crc32(data) & 0xFFFFFFFF)
+        outbin.write(crc)
+        outbin.close()
+        os.remove(binf)
+        os.rename(target, binf)
+
+class MTS_DRAGONFLY_F411RE(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
+        self.macros = ['HSE_VALUE=26000000', 'VECT_TAB_OFFSET=0x08010000']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"mts-dragonfly-f411re",
+        }
+
+    def init_hooks(self, hook, toolchain_name):
+        if toolchain_name in ['GCC_ARM', 'ARM_STD', 'ARM_MICRO']:
+            hook.hook_add_binary("post", self.combine_bins)
+
+    # combine application binary with bootloader
+    # bootloader + padding to 64kB + application + md5sum (16 bytes)
+    @staticmethod
+    def combine_bins(t_self, resources, elf, binf):
+        loader = os.path.join(TOOLS_BOOTLOADERS, "MTS_DRAGONFLY_F411RE", "bootloader.bin")
+        target = binf + ".tmp"
+        if not os.path.exists(loader):
+            print "Can't find bootloader binary: " + loader
+            return
+        outbin = open(target, 'w+b')
+        part = open(loader, 'rb')
+        data = part.read()
+        outbin.write(data)
+        outbin.write('\xFF' * (64*1024 - len(data)))
+        part.close()
+        part = open(binf, 'rb')
+        data = part.read()
+        outbin.write(data)
+        part.close()
+        outbin.seek(0, 0)
+        data = outbin.read()
+        outbin.seek(0, 1)
+        crc = struct.pack('<I', binascii.crc32(data) & 0xFFFFFFFF)
+        outbin.write(crc)
+        outbin.close()
+        os.remove(binf)
+        os.rename(target, binf)
+
+class MOTE_L152RC(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['STM', 'STM32L1', 'STM32L152RC']
+        self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.detect_code = ["4100"]
+        self.progen = {
+            "target":"stm32l151rc",
+        }
+class DISCO_F401VC(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F401', 'STM32F401VC']
+        self.supported_toolchains = ["GCC_ARM"]
+        self.default_toolchain = "GCC_ARM"
+
+class UBLOX_C029(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['STM', 'STM32F4', 'STM32F439', 'STM32F439ZI']
+        self.macros = ['HSE_VALUE=24000000', 'HSE_STARTUP_TIMEOUT=5000']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "uARM"
+        self.supported_form_factors = ["ARDUINO"]
+
+class NZ32_SC151(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['STM', 'STM32L1', 'STM32L151RC']
+        self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"stm32l151rc",
+        }
+    # After flashing device, how long to delay until we assume program is running
+    def program_cycle_s(self):
+        return 1.5
+
+
+### Nordic ###
+
+class MCU_NRF51(Target):
+    # the following is a list of possible Nordic softdevices in decreasing order
+    # of preference.
+    EXPECTED_SOFTDEVICES_WITH_OFFSETS = [
+        {
+            'name'   : 's130_nrf51_1.0.0_softdevice.hex',
+            'boot'   : 's130_nrf51_1.0.0_bootloader.hex',
+            'offset' : 0x1C000
+        },
+        {
+            'name'   : 's110_nrf51822_8.0.0_softdevice.hex',
+            'boot'   : 's110_nrf51822_8.0.0_bootloader.hex',
+            'offset' : 0x18000
+        },
+        {
+            'name'   : 's110_nrf51822_7.1.0_softdevice.hex',
+            'boot'   : 's110_nrf51822_7.1.0_bootloader.hex',
+            'offset' : 0x16000
+        },
+        {
+            'name'   : 's110_nrf51822_7.0.0_softdevice.hex',
+            'boot'   : 's110_nrf51822_7.0.0_bootloader.hex',
+            'offset' : 0x16000
+        },
+        {
+            'name'   : 's110_nrf51822_6.0.0_softdevice.hex',
+            'boot'   : 's110_nrf51822_6.0.0_bootloader.hex',
+            'offset' : 0x14000
+        }
+    ]
+    OVERRIDE_BOOTLOADER_FILENAME = "nrf51822_bootloader.hex"
+    OUTPUT_EXT = 'hex'
+    MERGE_SOFT_DEVICE = True
+    MERGE_BOOTLOADER = False
+
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ["NORDIC", "MCU_NRF51", "MCU_NRF51822"]
+        self.macros = ['NRF51', 'TARGET_NRF51822']
+        self.supported_toolchains = ["ARM", "GCC_ARM"]
+        self.is_disk_virtual = True
+        self.detect_code = ["1070"]
+
+    def program_cycle_s(self):
+        return 6
+
+    def init_hooks(self, hook, toolchain_name):
+        if toolchain_name in ['ARM_STD', 'GCC_ARM']:
+            hook.hook_add_binary("post", self.binary_hook)
+
+    @staticmethod
+    def binary_hook(t_self, resources, elf, binf):
+
+        # Scan to find the actual paths of soft device
+        sdf = None
+        for softdeviceAndOffsetEntry in t_self.target.EXPECTED_SOFTDEVICES_WITH_OFFSETS:
+            for hexf in resources.hex_files:
+                if hexf.find(softdeviceAndOffsetEntry['name']) != -1:
+                    t_self.debug("SoftDevice file found %s." % softdeviceAndOffsetEntry['name'])
+                    sdf = hexf
+
+                if sdf is not None: break
+            if sdf is not None: break
+
+        if sdf is None:
+            t_self.debug("Hex file not found. Aborting.")
+            return
+
+        # Look for bootloader file that matches this soft device or bootloader override image
+        blf = None
+        if t_self.target.MERGE_BOOTLOADER is True:
+            for hexf in resources.hex_files:
+                if hexf.find(t_self.target.OVERRIDE_BOOTLOADER_FILENAME) != -1:
+                    t_self.debug("Bootloader file found %s." % t_self.target.OVERRIDE_BOOTLOADER_FILENAME)
+                    blf = hexf
+                    break
+                elif hexf.find(softdeviceAndOffsetEntry['boot']) != -1:
+                    t_self.debug("Bootloader file found %s." % softdeviceAndOffsetEntry['boot'])
+                    blf = hexf
+                    break
+
+        # Merge user code with softdevice
+        from intelhex import IntelHex
+        binh = IntelHex()
+        binh.loadbin(binf, offset=softdeviceAndOffsetEntry['offset'])
+
+        if t_self.target.MERGE_SOFT_DEVICE is True:
+            t_self.debug("Merge SoftDevice file %s" % softdeviceAndOffsetEntry['name'])
+            sdh = IntelHex(sdf)
+            binh.merge(sdh)
+
+        if t_self.target.MERGE_BOOTLOADER is True and blf is not None:
+            t_self.debug("Merge BootLoader file %s" % blf)
+            blh = IntelHex(blf)
+            binh.merge(blh)
+
+        with open(binf.replace(".bin", ".hex"), "w") as f:
+            binh.tofile(f, format='hex')
+
+
+# 16KB Nordic targets are tight on SRAM using S130 (default) so we
+# introduce two possible options:
+# 1) Use S130 (default) - for this derive from MCU_NRF51_16K
+# 2) Use S110  - for this derive from MCU_NRF51_16K_S110
+# Note that the 'default' option will track the default choice
+# for other Nordic targets, and so can take advantage of other
+# future SoftDevice improvements
+
+# The *_BASE targets should *not* be inherited from, as they do not
+# specify enough for building a target
+
+# 16KB MCU version, e.g. Nordic nRF51822, Seeed Arch BLE, etc.
+class MCU_NRF51_16K_BASE(MCU_NRF51):
+    def __init__(self):
+        MCU_NRF51.__init__(self)
+        self.extra_labels += ['MCU_NORDIC_16K', 'MCU_NRF51_16K']
+        self.macros += ['TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K']
+
+# derivative class used to create softdevice+bootloader enabled images
+class MCU_NRF51_16K_BOOT_BASE(MCU_NRF51_16K_BASE):
+    def __init__(self):
+        MCU_NRF51_16K_BASE.__init__(self)
+        self.extra_labels += ['MCU_NRF51_16K_BOOT']
+        self.macros += ['TARGET_MCU_NRF51_16K_BOOT', 'TARGET_OTA_ENABLED']
+        self.MERGE_SOFT_DEVICE = True
+        self.MERGE_BOOTLOADER = True
+
+# derivative class used to create program only images for use with FOTA
+class MCU_NRF51_16K_OTA_BASE(MCU_NRF51_16K_BASE):
+    def __init__(self):
+        MCU_NRF51_16K_BASE.__init__(self)
+        self.extra_labels += ['MCU_NRF51_16K_OTA']
+        self.macros += ['TARGET_MCU_NRF51_16K_OTA', 'TARGET_OTA_ENABLED']
+        self.MERGE_SOFT_DEVICE = False
+
+class MCU_NRF51_16K(MCU_NRF51_16K_BASE):
+    def __init__(self):
+        MCU_NRF51_16K_BASE.__init__(self)
+        self.extra_labels += ['MCU_NRF51_16K_S130']
+        self.macros += ['TARGET_MCU_NRF51_16K_S130']
+
+class MCU_NRF51_S110:
+    """ Interface for overwriting the default SoftDevices """
+    def __init__(self):
+        self.EXPECTED_SOFTDEVICES_WITH_OFFSETS = [
+            {
+                'name'   : 's110_nrf51822_8.0.0_softdevice.hex',
+                'boot'   : 's110_nrf51822_8.0.0_bootloader.hex',
+                'offset' : 0x18000
+            },
+            {
+                'name'   : 's110_nrf51822_7.1.0_softdevice.hex',
+                'boot'   : 's110_nrf51822_7.1.0_bootloader.hex',
+                'offset' : 0x16000
+            }
+        ]
+        self.extra_labels += ['MCU_NRF51_16K_S110']
+        self.macros += ['TARGET_MCU_NRF51_16K_S110']
+
+class MCU_NRF51_16K_S110(MCU_NRF51_16K_BASE, MCU_NRF51_S110):
+    def __init__(self):
+        MCU_NRF51_16K_BASE.__init__(self)
+        MCU_NRF51_S110.__init__(self)
+
+class MCU_NRF51_16K_BOOT(MCU_NRF51_16K_BOOT_BASE):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT_BASE.__init__(self)
+        self.extra_labels += ['MCU_NRF51_16K_S130']
+        self.macros += ['TARGET_MCU_NRF51_16K_S130']
+
+class MCU_NRF51_16K_BOOT_S110(MCU_NRF51_16K_BOOT_BASE, MCU_NRF51_S110):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT_BASE.__init__(self)
+        MCU_NRF51_S110.__init__(self)
+
+class MCU_NRF51_16K_OTA(MCU_NRF51_16K_OTA_BASE):
+    def __init__(self):
+        MCU_NRF51_16K_OTA_BASE.__init__(self)
+        self.extra_labels += ['MCU_NRF51_16K_S130']
+        self.macros += ['TARGET_MCU_NRF51_16K_S130']
+
+class MCU_NRF51_16K_OTA_S110(MCU_NRF51_16K_OTA_BASE, MCU_NRF51_S110):
+    def __init__(self):
+        MCU_NRF51_16K_OTA_BASE.__init__(self)
+        MCU_NRF51_S110.__init__(self)
+
+
+# 32KB MCU version, e.g. Nordic nRF51-DK, nRF51-Dongle, etc.
+class MCU_NRF51_32K(MCU_NRF51):
+    def __init__(self):
+        MCU_NRF51.__init__(self)
+        self.extra_labels += ['MCU_NORDIC_32K', 'MCU_NRF51_32K']
+        self.macros += ['TARGET_MCU_NORDIC_32K', 'TARGET_MCU_NRF51_32K']
+
+class MCU_NRF51_32K_BOOT(MCU_NRF51_32K):
+    def __init__(self):
+        MCU_NRF51_32K.__init__(self)
+        self.extra_labels += ['MCU_NRF51_32K_BOOT']
+        self.macros += ['TARGET_MCU_NRF51_32K_BOOT', 'TARGET_OTA_ENABLED']
+        self.MERGE_SOFT_DEVICE = True
+        self.MERGE_BOOTLOADER = True
+
+class MCU_NRF51_32K_OTA(MCU_NRF51_32K):
+    def __init__(self):
+        MCU_NRF51_32K.__init__(self)
+        self.extra_labels += ['MCU_NRF51_32K_OTA']
+        self.macros += ['TARGET_MCU_NRF51_32K_OTA', 'TARGET_OTA_ENABLED']
+        self.MERGE_SOFT_DEVICE = False
+
+#
+# nRF51 based development kits
+#
+
+# This one is special for legacy reasons
+class NRF51822(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.extra_labels += ['NRF51822', 'NRF51822_MKIT']
+        self.macros += ['TARGET_NRF51822_MKIT']
+        self.progen = {
+            "target":"mkit",
+        }
+class NRF51822_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['NRF51822', 'NRF51822_MKIT']
+        self.macros += ['TARGET_NRF51822_MKIT']
+
+class NRF51822_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['NRF51822', 'NRF51822_MKIT']
+        self.macros += ['TARGET_NRF51822_MKIT']
+
+class ARCH_BLE(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"arch-ble",
+        }
+
+class ARCH_BLE_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['ARCH_BLE']
+        self.macros += ['TARGET_ARCH_BLE']
+        self.supported_form_factors = ["ARDUINO"]
+
+class ARCH_BLE_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['ARCH_BLE']
+        self.macros += ['TARGET_ARCH_BLE']
+        self.supported_form_factors = ["ARDUINO"]
+
+class ARCH_LINK(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.extra_labels += ['ARCH_BLE']
+        self.macros += ['TARGET_ARCH_BLE']
+        self.supported_form_factors = ["ARDUINO"]
+
+class ARCH_LINK_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['ARCH_BLE', 'ARCH_LINK']
+        self.macros += ['TARGET_ARCH_BLE', 'TARGET_ARCH_LINK']
+        self.supported_form_factors = ["ARDUINO"]
+
+class ARCH_LINK_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['ARCH_BLE', 'ARCH_LINK']
+        self.macros += ['TARGET_ARCH_BLE', 'TARGET_ARCH_LINK']
+        self.supported_form_factors = ["ARDUINO"]
+
+class SEEED_TINY_BLE(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.progen = {
+            "target":"seed-tinyble",
+        }
+
+class SEEED_TINY_BLE_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['SEEED_TINY_BLE']
+        self.macros += ['TARGET_SEEED_TINY_BLE']
+
+class SEEED_TINY_BLE_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['SEEED_TINY_BLE']
+        self.macros += ['TARGET_SEEED_TINY_BLE']
+
+class HRM1017(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.macros += ['TARGET_NRF_LFCLK_RC']
+        self.progen = {
+            "target":"hrm1017",
+        }
+class HRM1017_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['HRM1017']
+        self.macros += ['TARGET_HRM1017', 'TARGET_NRF_LFCLK_RC']
+
+class HRM1017_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['HRM1017']
+        self.macros += ['TARGET_HRM1017', 'TARGET_NRF_LFCLK_RC']
+
+class RBLAB_NRF51822(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"rblab-nrf51822",
+        }
+
+class RBLAB_NRF51822_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['RBLAB_NRF51822']
+        self.macros += ['TARGET_RBLAB_NRF51822']
+        self.supported_form_factors = ["ARDUINO"]
+
+class RBLAB_NRF51822_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['RBLAB_NRF51822']
+        self.macros += ['TARGET_RBLAB_NRF51822']
+        self.supported_form_factors = ["ARDUINO"]
+
+class RBLAB_BLENANO(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+
+class RBLAB_BLENANO_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['RBLAB_BLENANO']
+        self.macros += ['TARGET_RBLAB_BLENANO']
+
+class RBLAB_BLENANO_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['RBLAB_BLENANO']
+        self.macros += ['TARGET_RBLAB_BLENANO']
+
+class NRF51822_Y5_MBUG(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+
+class WALLBOT_BLE(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+
+class WALLBOT_BLE_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['WALLBOT_BLE']
+        self.macros += ['TARGET_WALLBOT_BLE']
+
+class WALLBOT_BLE_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['WALLBOT_BLE']
+        self.macros += ['TARGET_WALLBOT_BLE']
+
+class DELTA_DFCM_NNN40(MCU_NRF51_32K):
+    def __init__(self):
+        MCU_NRF51_32K.__init__(self)
+        self.macros += ['TARGET_NRF_LFCLK_RC']
+        self.progen = {
+            "target":"dfcm-nnn40",
+        }
+    def program_cycle_s(self):
+        return 10
+
+class DELTA_DFCM_NNN40_BOOT(MCU_NRF51_32K_BOOT):
+    def __init__(self):
+        MCU_NRF51_32K_BOOT.__init__(self)
+        self.extra_labels += ['DELTA_DFCM_NNN40']
+        self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC']
+    def program_cycle_s(self):
+        return 10
+
+class DELTA_DFCM_NNN40_OTA(MCU_NRF51_32K_OTA):
+    def __init__(self):
+        MCU_NRF51_32K_OTA.__init__(self)
+        self.extra_labels += ['DELTA_DFCM_NNN40']
+        self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC']
+    def program_cycle_s(self):
+        return 10
+
+class NRF51_DK(MCU_NRF51_32K):
+    def __init__(self):
+        MCU_NRF51_32K.__init__(self)
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"nrf51-dk",
+        }
+
+class NRF51_DK_BOOT(MCU_NRF51_32K_BOOT):
+    def __init__(self):
+        MCU_NRF51_32K_BOOT.__init__(self)
+        self.extra_labels += ['NRF51_DK']
+        self.macros += ['TARGET_NRF51_DK']
+        self.supported_form_factors = ["ARDUINO"]
+
+class NRF51_DK_OTA(MCU_NRF51_32K_OTA):
+    def __init__(self):
+        MCU_NRF51_32K_OTA.__init__(self)
+        self.extra_labels += ['NRF51_DK']
+        self.macros += ['TARGET_NRF51_DK']
+        self.supported_form_factors = ["ARDUINO"]
+
+class NRF51_DONGLE(MCU_NRF51_32K):
+    def __init__(self):
+        MCU_NRF51_32K.__init__(self)
+        self.progen = {
+            "target":"nrf51-dongle",
+        }
+
+class NRF51_DONGLE_BOOT(MCU_NRF51_32K_BOOT):
+    def __init__(self):
+        MCU_NRF51_32K_BOOT.__init__(self)
+        self.extra_labels += ['NRF51_DONGLE']
+        self.macros += ['TARGET_NRF51_DONGLE']
+
+class NRF51_DONGLE_OTA(MCU_NRF51_32K_OTA):
+    def __init__(self):
+        MCU_NRF51_32K_OTA.__init__(self)
+        self.extra_labels += ['NRF51_DONGLE']
+        self.macros += ['TARGET_NRF51_DONGLE']
+
+class NRF51_MICROBIT(MCU_NRF51_16K_S110):
+    def __init__(self):
+        MCU_NRF51_16K_S110.__init__(self)
+        self.macros += ['TARGET_NRF_LFCLK_RC']
+
+class NRF51_MICROBIT_BOOT(MCU_NRF51_16K_BOOT_S110):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT_S110.__init__(self)
+        self.extra_labels += ['NRF51_MICROBIT']
+        self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
+
+class NRF51_MICROBIT_OTA(MCU_NRF51_16K_OTA_S110):
+    def __init__(self):
+        MCU_NRF51_16K_OTA_S110.__init__(self)
+        self.extra_labels += ['NRF51_MICROBIT']
+        self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
+
+class NRF51_MICROBIT_B(MCU_NRF51_16K):
+    def __init__(self):
+        MCU_NRF51_16K.__init__(self)
+        self.extra_labels += ['NRF51_MICROBIT']
+        self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
+
+class NRF51_MICROBIT_B_BOOT(MCU_NRF51_16K_BOOT):
+    def __init__(self):
+        MCU_NRF51_16K_BOOT.__init__(self)
+        self.extra_labels += ['NRF51_MICROBIT']
+        self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
+
+class NRF51_MICROBIT_B_OTA(MCU_NRF51_16K_OTA):
+    def __init__(self):
+        MCU_NRF51_16K_OTA.__init__(self)
+        self.extra_labels += ['NRF51_MICROBIT']
+        self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
+
+class TY51822R3(MCU_NRF51_32K):
+    def __init__(self):
+        MCU_NRF51_32K.__init__(self)
+        self.macros += ['TARGET_NRF_32MHZ_XTAL']
+        self.supported_toolchains = ["ARM", "GCC_ARM"]
+
+class TY51822R3_BOOT(MCU_NRF51_32K_BOOT):
+    def __init__(self):
+        MCU_NRF51_32K_BOOT.__init__(self)
+        self.extra_labels += ['TY51822R3']
+        self.macros += ['TARGET_TY51822R3', 'TARGET_NRF_32MHZ_XTAL']
+        self.supported_toolchains = ["ARM", "GCC_ARM"]
+
+class TY51822R3_OTA(MCU_NRF51_32K_OTA):
+    def __init__(self):
+        MCU_NRF51_32K_OTA.__init__(self)
+        self.extra_labels += ['NRF51_DK']
+        self.macros += ['TARGET_TY51822R3', 'TARGET_NRF_32MHZ_XTAL']
+        self.supported_toolchains = ["ARM", "GCC_ARM"]
+
+
+### ARM ###
+
+class ARM_MPS2_Target(Target):
+    def __init__(self):
+        Target.__init__(self)
+
+class ARM_MPS2_M0(ARM_MPS2_Target):
+    def __init__(self):
+        ARM_MPS2_Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M0']
+        self.macros = ['CMSDK_CM0']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class ARM_MPS2_M0P(ARM_MPS2_Target):
+    def __init__(self):
+        ARM_MPS2_Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M0P']
+        self.macros = ['CMSDK_CM0plus']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class ARM_MPS2_M1(ARM_MPS2_Target):
+    def __init__(self):
+        ARM_MPS2_Target.__init__(self)
+        self.core = "Cortex-M1"
+        self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M1']
+        self.macros = ['CMSDK_CM1']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class ARM_MPS2_M3(ARM_MPS2_Target):
+    def __init__(self):
+        ARM_MPS2_Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M3']
+        self.macros = ['CMSDK_CM3']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class ARM_MPS2_M4(ARM_MPS2_Target):
+    def __init__(self):
+        ARM_MPS2_Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M4']
+        self.macros = ['CMSDK_CM4']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class ARM_MPS2_M7(ARM_MPS2_Target):
+    def __init__(self):
+        ARM_MPS2_Target.__init__(self)
+        self.core = "Cortex-M7"
+        self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M7']
+        self.macros = ['CMSDK_CM7']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+class ARM_IOTSS_Target(Target):
+    def __init__(self):
+        Target.__init__(self)
+class ARM_IOTSS_BEID(ARM_IOTSS_Target):
+    def __init__(self):
+        ARM_IOTSS_Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['ARM_SSG', 'IOTSS', 'IOTSS_BEID']
+        self.macros = ['CMSDK_BEID']
+        self.supported_toolchains = ["ARM"]
+        self.default_toolchain = "ARM"
+
+
+### Renesas ###
+
+class RZ_A1H(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-A9"
+        self.extra_labels = ['RENESAS', 'MBRZA1H']
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+        self.supported_form_factors = ["ARDUINO"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target": "gr-peach",
+            "iar": {
+                # rewrite generic template, this device needs futher support for FPU in progendef
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'iar_rz_a1h.ewp.tmpl')],
+            }
+        }
+
+    def program_cycle_s(self):
+        return 2
+
+class VK_RZ_A1H(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-A9"
+        self.extra_labels = ['RENESAS', 'VKRZA1H']
+        self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target": "vk-rza1h",
+            "iar": {
+                # rewrite generic template, this device needs futher support for FPU in progendef
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'iar_rz_a1h.ewp.tmpl')],
+            }
+        }
+
+    def program_cycle_s(self):
+        return 2
+
+### Maxim Integrated ###
+
+class MAXWSNENV(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['Maxim', 'MAX32610']
+        self.macros = ['__SYSTEM_HFX=24000000']
+        self.supported_toolchains = ["GCC_ARM", "IAR", "ARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target": "maxwsnenv",
+        }
+
+class MAX32600MBED(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['Maxim', 'MAX32600']
+        self.macros = ['__SYSTEM_HFX=24000000']
+        self.supported_toolchains = ["GCC_ARM", "IAR", "ARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target": "max32600mbed",
+        }
+
+### Silicon Labs ###
+
+class EFM32GG_STK3700(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['Silicon_Labs', 'EFM32']
+        self.macros = ['EFM32GG990F1024']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"efm32gg_stk3700", #TODO: add to progen
+        }
+
+
+
+class EFM32LG_STK3600(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M3"
+        self.extra_labels = ['Silicon_Labs', 'EFM32']
+        self.macros = ['EFM32LG990F256']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"efm32lg_stk3600", #TODO: add to progen
+        }
+
+
+
+class EFM32WG_STK3800(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['Silicon_Labs', 'EFM32']
+        self.macros = ['EFM32WG990F256']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"efm32wg_stk3800", #TODO: add to progen
+        }
+
+
+
+class EFM32ZG_STK3200(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Silicon_Labs', 'EFM32']
+        self.macros = ['EFM32ZG222F32']
+        self.supported_toolchains = ["GCC_ARM", "uARM"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"efm32zg_stk3200", #TODO: add to progen
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+
+class EFM32HG_STK3400(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Silicon_Labs', 'EFM32']
+        self.macros = ['EFM32HG322F64']
+        self.supported_toolchains = ["GCC_ARM", "uARM"]
+        self.default_toolchain = "uARM"
+        self.progen = {
+            "target":"efm32hg_stk3400", #TODO: add to progen
+            "uvision": {
+                "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
+            }
+        }
+
+
+class EFM32PG_STK3401(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4F"
+        self.extra_labels = ['Silicon_Labs', 'EFM32']
+        self.macros = ['EFM32PG1B200F256GM48']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM", "IAR"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"efm32pg_stk3401", #TODO: add to progen
+        }
+
+
+
+##WIZnet
+
+class WIZWIKI_W7500(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['WIZNET', 'W7500x', 'WIZwiki_W7500']
+        self.supported_toolchains = ["uARM", "ARM"]
+        self.default_toolchain = "ARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"wizwiki_w7500",
+        }
+
+class WIZWIKI_W7500P(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['WIZNET', 'W7500x', 'WIZwiki_W7500P']
+        self.supported_toolchains = ["uARM", "ARM"]
+        self.default_toolchain = "ARM"
+        self.supported_form_factors = ["ARDUINO"]
+        self.progen = {
+            "target":"wizwiki_w7500p", # TODO: add to progen
+        }
+
+class WIZWIKI_W7500ECO(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0"
+        self.extra_labels = ['WIZNET', 'W7500x', 'WIZwiki_W7500ECO']
+        self.supported_toolchains = ["uARM", "ARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"wizwiki_w7500eco", # TODO: add to progen
+        }
+
+
+class SAMR21G18A(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAMR21']
+        self.macros = ['__SAMR21G18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"samr21g18a",
+        }
+
+class SAMD21J18A(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAMD21']
+        self.macros = ['__SAMD21J18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"samd21j18a",
+        }
+
+class SAMD21G18A(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAMD21']
+        self.macros = ['__SAMD21G18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"samd21g18a",
+        }
+
+class SAML21J18A(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M0+"
+        self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAML21']
+        self.macros = ['__SAML21J18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"samr21j18a",
+        }
+        self.progen_target ='samr21j18a'
+
+class SAMG55J19(Target):
+    def __init__(self):
+        Target.__init__(self)
+        self.core = "Cortex-M4"
+        self.extra_labels = ['Atmel', 'SAM_CortexM4', 'SAMG55']
+        self.macros = ['__SAMG55J19__', 'BOARD=75', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
+        self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
+        self.default_toolchain = "ARM"
+        self.progen = {
+            "target":"samg55j19",
+        }
+        self.progen_target ='samg55j19'
+
+# Get a single instance for each target
+TARGETS = [
+
+    ### NXP ###
+    LPC11C24(),
+    LPC11U24(),
+    OC_MBUINO(),        # LPC11U24
+    LPC11U24_301(),
+    LPC11U34_421(),
+    MICRONFCBOARD(),    # LPC11U34_421
+    LPC11U35_401(),
+    LPC11U35_501(),     # LPC11U35_501
+    LPC11U35_501_IBDAP(), # LPC11U35_501
+    XADOW_M0(),         # LPC11U35_501
+    LPC11U35_Y5_MBUG(), # LPC11U35_501
+    LPC11U37_501(),
+    LPCCAPPUCCINO(),    # LPC11U37_501
+    ARCH_GPRS(),        # LPC11U37_501
+    LPC11U68(),
+    LPC1114(),
+    LPC1347(),
+    LPC1549(),
+    LPC1768(),          # LPC1768
+    ARCH_PRO(),         # LPC1768
+    UBLOX_C027(),       # LPC1768
+    XBED_LPC1768(),     # LPC1768
+    LPC2368(),
+    LPC2460(),
+    LPC810(),
+    LPC812(),
+    LPC824(),
+    SSCI824(),          # LPC824
+    LPC4088(),
+    LPC4088_DM(),
+    LPC4330_M4(),
+    LPC4330_M0(),
+    LPC4337(),
+    LPC11U37H_401(),
+
+    ### Freescale ###
+    KL05Z(),
+    KL25Z(),
+    KL26Z(),
+    KL43Z(),
+    KL46Z(),
+    K20D50M(),
+    K22F(),
+    KL27Z(),
+    K64F(),       # FRDM K64F
+    MTS_GAMBIT(),
+    HEXIWEAR(),
+    TEENSY3_1(),
+
+    ### STMicro ###
+    B96B_F446VE(),
+    NUCLEO_F030R8(),
+    NUCLEO_F031K6(),
+    NUCLEO_F042K6(),
+    NUCLEO_F070RB(),
+    NUCLEO_F072RB(),
+    NUCLEO_F091RC(),
+    NUCLEO_F103RB(),
+    NUCLEO_F302R8(),
+    NUCLEO_F303K8(),
+    NUCLEO_F303RE(),
+    NUCLEO_F334R8(),
+    NUCLEO_F401RE(),
+    NUCLEO_F410RB(),
+    NUCLEO_F411RE(),
+    NUCLEO_F746ZG(),
+    ELMO_F411RE(),
+    NUCLEO_F446RE(),
+    NUCLEO_L031K6(),
+    NUCLEO_L053R8(),
+    NUCLEO_L073RZ(),
+    NUCLEO_L152RE(),
+    NUCLEO_L476RG(),
+    STM32F3XX(),
+    STM32F407(),
+    DISCO_F051R8(),
+    DISCO_F100RB(),
+    DISCO_F303VC(),
+    DISCO_F334C8(),
+    DISCO_F746NG(),
+    DISCO_F407VG(),     # STM32F407
+    ARCH_MAX(),         # STM32F407
+    DISCO_F429ZI(),
+    DISCO_F469NI(),
+    DISCO_L053C8(),
+    DISCO_L476VG(),
+    MTS_MDOT_F405RG(),
+    MTS_MDOT_F411RE(),
+    MOTE_L152RC(),
+    MTS_DRAGONFLY_F411RE(),
+    DISCO_F401VC(),
+    UBLOX_C029(),       # STM32F439
+    NZ32_SC151(),       # STM32L151
+
+    ### Nordic ###
+    NRF51822(),             # nRF51_16K
+    NRF51822_BOOT(),        # nRF51_16K
+    NRF51822_OTA(),         # nRF51_16K
+    ARCH_BLE(),             # nRF51_16K
+    ARCH_BLE_BOOT(),        # nRF51_16K
+    ARCH_BLE_OTA(),         # nRF51_16K
+    ARCH_LINK(),            # nRF51_16K
+    ARCH_LINK_BOOT(),       # nRF51_16K
+    ARCH_LINK_OTA(),        # nRF51_16K
+    SEEED_TINY_BLE(),       # nRF51_16K
+    SEEED_TINY_BLE_BOOT(),  # nRF51_16K
+    SEEED_TINY_BLE_OTA(),   # nRF51_16K
+    HRM1017(),              # nRF51_16K
+    HRM1017_BOOT(),         # nRF51_16K
+    HRM1017_OTA(),          # nRF51_16K
+    RBLAB_NRF51822(),       # nRF51_16K
+    RBLAB_NRF51822_BOOT(),  # nRF51_16K
+    RBLAB_NRF51822_OTA(),   # nRF51_16K
+    RBLAB_BLENANO(),        # nRF51_16K
+    RBLAB_BLENANO_BOOT(),   # nRF51_16K
+    RBLAB_BLENANO_OTA(),    # nRF51_16K
+    NRF51822_Y5_MBUG(),     # nRF51_16K
+    WALLBOT_BLE(),          # nRF51_16K
+    WALLBOT_BLE_BOOT(),     # nRF51_16K
+    WALLBOT_BLE_OTA(),      # nRF51_16K
+    DELTA_DFCM_NNN40(),     # nRF51_16K
+    DELTA_DFCM_NNN40_BOOT(),# nRF51_16K
+    DELTA_DFCM_NNN40_OTA(), # nRF51_16K
+    NRF51_DK(),             # nRF51_32K
+    NRF51_DK_BOOT(),        # nRF51_32K
+    NRF51_DK_OTA(),         # nRF51_32K
+    NRF51_DONGLE(),         # nRF51_32K
+    NRF51_DONGLE_BOOT(),    # nRF51_32K
+    NRF51_DONGLE_OTA(),     # nRF51_32K
+    NRF51_MICROBIT(),       # nRF51_16K - S110
+    NRF51_MICROBIT_BOOT(),  # nRF51_16K - S110
+    NRF51_MICROBIT_OTA(),   # nRF51_16K - S110
+    NRF51_MICROBIT_B(),     # nRF51_16K - default
+    NRF51_MICROBIT_B_BOOT(),# nRF51_16K - default
+    NRF51_MICROBIT_B_OTA(), # nRF51_16K - default
+    TY51822R3(),            # nRF51_32K
+    TY51822R3_BOOT(),       # nRF51_32K
+    TY51822R3_OTA(),        # nRF51_32K
+
+
+    ### ARM ###
+    ARM_MPS2_M0(),
+    ARM_MPS2_M0P(),
+    ARM_MPS2_M1(),
+    ARM_MPS2_M3(),
+    ARM_MPS2_M4(),
+    ARM_MPS2_M7(),
+
+    ARM_IOTSS_BEID(),
+
+    ### Renesas ###
+    RZ_A1H(),
+    VK_RZ_A1H(),
+
+    ### Maxim Integrated ###
+    MAXWSNENV(),
+    MAX32600MBED(),
+
+    ### Silicon Labs ###
+    EFM32GG_STK3700(),
+    EFM32LG_STK3600(),
+    EFM32WG_STK3800(),
+    EFM32ZG_STK3200(),
+    EFM32HG_STK3400(),
+	EFM32PG_STK3401(),
+
+    ### WIZnet ###
+    WIZWIKI_W7500(),
+    WIZWIKI_W7500P(),
+    WIZWIKI_W7500ECO(),
+
+    ### Atmel ###
+    SAMR21G18A(),
+    SAMD21J18A(),
+    SAMD21G18A(),
+    SAML21J18A(),
+    SAMG55J19(),
+
+]
+
+# Map each target name to its unique instance
+TARGET_MAP = {}
+for t in TARGETS:
+    TARGET_MAP[t.name] = t
+
+TARGET_NAMES = TARGET_MAP.keys()
+
+# Some targets with different name have the same exporters
+EXPORT_MAP = { }
+
+# Detection APIs
+def get_target_detect_codes():
+    """ Returns dictionary mapping detect_code -> platform_name
+    """
+    result = {}
+    for target in TARGETS:
+        for detect_code in target.detect_code:
+            result[detect_code] = target.name
+    return result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,158 @@
+#! /usr/bin/env python2
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+TEST BUILD & RUN
+"""
+import sys
+import os
+import json
+
+ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+from tools.test_api import test_path_to_name, find_tests, print_tests, build_tests, test_spec_from_test_build
+from tools.options import get_default_options_parser
+from tools.build_api import build_project, build_library
+from tools.targets import TARGET_MAP
+from tools.utils import mkdir
+
+if __name__ == '__main__':
+    try:
+        # Parse Options
+        parser = get_default_options_parser()
+        
+        parser.add_option("-j", "--jobs",
+                          type="int",
+                          dest="jobs",
+                          default=1,
+                          help="Number of concurrent jobs (default 1). Use 0 for auto based on host machine's number of CPUs")
+
+        parser.add_option("--source", dest="source_dir",
+                          default=None, help="The source (input) directory (for sources other than tests). Defaults to current directory.", action="append")
+
+        parser.add_option("--build", dest="build_dir",
+                          default=None, help="The build (output) directory")
+
+        parser.add_option("-l", "--list", action="store_true", dest="list",
+                          default=False, help="List (recursively) available tests in order and exit")
+
+        parser.add_option("-p", "--paths", dest="paths",
+                          default=None, help="Limit the tests to those within the specified comma separated list of paths")
+        
+        format_choices = ["list", "json"]
+        format_default_choice = "list"
+        format_help = "Change the format in which tests are listed. Choices include: %s. Default: %s" % (", ".join(format_choices), format_default_choice)
+        parser.add_option("-f", "--format", type="choice", dest="format",
+                          choices=format_choices, default=format_default_choice, help=format_help)
+        
+        parser.add_option("-n", "--names", dest="names",
+                          default=None, help="Limit the tests to a comma separated list of names")
+                          
+        parser.add_option("--test-spec", dest="test_spec",
+                          default=None, help="Destination path for a test spec file that can be used by the Greentea automated test tool")
+        
+        parser.add_option("-v", "--verbose",
+                          action="store_true",
+                          dest="verbose",
+                          default=False,
+                          help="Verbose diagnostic output")
+
+        (options, args) = parser.parse_args()
+
+        # Filter tests by path if specified 
+        if options.paths:
+            all_paths = options.paths.split(",")
+        else:
+            all_paths = ["."]
+        
+        all_tests = {}
+        tests = {}
+        
+        # Find all tests in the relevant paths
+        for path in all_paths:
+            all_tests.update(find_tests(path))
+        
+        # Filter tests by name if specified
+        if options.names:
+            all_names = options.names.split(",")
+            
+            all_tests_keys = all_tests.keys()
+            for name in all_names:
+                if name in all_tests_keys:
+                    tests[name] = all_tests[name]
+                else:
+                    print "[Warning] Test with name '%s' was not found in the available tests" % (name)
+        else:
+            tests = all_tests
+
+        if options.list:
+            # Print available tests in order and exit
+            print_tests(tests, options.format)
+        else:
+            # Build all tests
+            if not options.build_dir:
+                print "[ERROR] You must specify a build path"
+                sys.exit(1)
+            
+            base_source_paths = options.source_dir
+            
+            # Default base source path is the current directory
+            if not base_source_paths:
+                base_source_paths = ['.']
+            
+            
+            target = TARGET_MAP[options.mcu]
+            
+            lib_build_res = build_library(base_source_paths, options.build_dir, target, options.tool,
+                                            options=options.options,
+                                            jobs=options.jobs,
+                                            clean=options.clean,
+                                            archive=False)
+            
+            # Build all the tests
+            test_build = build_tests(tests, [options.build_dir], options.build_dir, target, options.tool,
+                    options=options.options,
+                    clean=options.clean,
+                    jobs=options.jobs)
+            
+            # If a path to a test spec is provided, write it to a file
+            if options.test_spec:
+                test_spec_data = test_spec_from_test_build(test_build)
+                
+                # Create the target dir for the test spec if necessary
+                # mkdir will not create the dir if it already exists
+                test_spec_dir = os.path.dirname(options.test_spec)
+                if test_spec_dir:
+                    mkdir(test_spec_dir)
+                
+                try:
+                    with open(options.test_spec, 'w') as f:
+                        f.write(json.dumps(test_spec_data, indent=2))
+                except IOError, e:
+                    print "[ERROR] Error writing test spec to file"
+                    print e
+            
+        sys.exit()
+
+    except KeyboardInterrupt, e:
+        print "\n[CTRL+c] exit"
+    except Exception,e:
+        import traceback
+        traceback.print_exc(file=sys.stdout)
+        print "[ERROR] %s" % str(e)
+        sys.exit(1)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_api.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,2084 @@
+"""
+mbed SDK
+Copyright (c) 2011-2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.wirkus@arm.com>
+"""
+
+import os
+import re
+import sys
+import json
+import uuid
+import pprint
+import random
+import optparse
+import datetime
+import threading
+import ctypes
+from types import ListType
+from colorama import Fore, Back, Style
+from prettytable import PrettyTable
+
+from time import sleep, time
+from Queue import Queue, Empty
+from os.path import join, exists, basename
+from threading import Thread, Lock
+from subprocess import Popen, PIPE
+
+# Imports related to mbed build api
+from tools.tests import TESTS
+from tools.tests import TEST_MAP
+from tools.paths import BUILD_DIR
+from tools.paths import HOST_TESTS
+from tools.utils import ToolException
+from tools.utils import NotSupportedException
+from tools.utils import construct_enum
+from tools.targets import TARGET_MAP
+from tools.test_db import BaseDBAccess
+from tools.build_api import build_project, build_mbed_libs, build_lib
+from tools.build_api import get_target_supported_toolchains
+from tools.build_api import write_build_report
+from tools.build_api import prep_report
+from tools.build_api import prep_properties
+from tools.build_api import create_result
+from tools.build_api import add_result_to_report
+from tools.libraries import LIBRARIES, LIBRARY_MAP
+from tools.toolchains import TOOLCHAIN_BIN_PATH
+from tools.test_exporters import ReportExporter, ResultExporterType
+
+import tools.host_tests.host_tests_plugins as host_tests_plugins
+
+try:
+    import mbed_lstools
+    from tools.compliance.ioper_runner import get_available_oper_test_scopes
+except:
+    pass
+
+
+class ProcessObserver(Thread):
+    def __init__(self, proc):
+        Thread.__init__(self)
+        self.proc = proc
+        self.queue = Queue()
+        self.daemon = True
+        self.active = True
+        self.start()
+
+    def run(self):
+        while self.active:
+            c = self.proc.stdout.read(1)
+            self.queue.put(c)
+
+    def stop(self):
+        self.active = False
+        try:
+            self.proc.terminate()
+        except Exception, _:
+            pass
+
+
+class SingleTestExecutor(threading.Thread):
+    """ Example: Single test class in separate thread usage
+    """
+    def __init__(self, single_test):
+        self.single_test = single_test
+        threading.Thread.__init__(self)
+
+    def run(self):
+        start = time()
+        # Execute tests depending on options and filter applied
+        test_summary, shuffle_seed, test_summary_ext, test_suite_properties_ext = self.single_test.execute()
+        elapsed_time = time() - start
+
+        # Human readable summary
+        if not self.single_test.opts_suppress_summary:
+            # prints well-formed summary with results (SQL table like)
+            print self.single_test.generate_test_summary(test_summary, shuffle_seed)
+        if self.single_test.opts_test_x_toolchain_summary:
+            # prints well-formed summary with results (SQL table like)
+            # table shows text x toolchain test result matrix
+            print self.single_test.generate_test_summary_by_target(test_summary, shuffle_seed)
+        print "Completed in %.2f sec"% (elapsed_time)
+
+
+class SingleTestRunner(object):
+    """ Object wrapper for single test run which may involve multiple MUTs
+    """
+    RE_DETECT_TESTCASE_RESULT = None
+
+    # Return codes for test script
+    TEST_RESULT_OK = "OK"
+    TEST_RESULT_FAIL = "FAIL"
+    TEST_RESULT_ERROR = "ERROR"
+    TEST_RESULT_UNDEF = "UNDEF"
+    TEST_RESULT_IOERR_COPY = "IOERR_COPY"
+    TEST_RESULT_IOERR_DISK = "IOERR_DISK"
+    TEST_RESULT_IOERR_SERIAL = "IOERR_SERIAL"
+    TEST_RESULT_TIMEOUT = "TIMEOUT"
+    TEST_RESULT_NO_IMAGE = "NO_IMAGE"
+    TEST_RESULT_MBED_ASSERT = "MBED_ASSERT"
+    TEST_RESULT_BUILD_FAILED = "BUILD_FAILED"
+    TEST_RESULT_NOT_SUPPORTED = "NOT_SUPPORTED"
+
+    GLOBAL_LOOPS_COUNT = 1  # How many times each test should be repeated
+    TEST_LOOPS_LIST = []    # We redefine no.of loops per test_id
+    TEST_LOOPS_DICT = {}    # TEST_LOOPS_LIST in dict format: { test_id : test_loop_count}
+
+    muts = {} # MUTs descriptor (from external file)
+    test_spec = {} # Test specification (from external file)
+
+    # mbed test suite -> SingleTestRunner
+    TEST_RESULT_MAPPING = {"success" : TEST_RESULT_OK,
+                           "failure" : TEST_RESULT_FAIL,
+                           "error" : TEST_RESULT_ERROR,
+                           "ioerr_copy" : TEST_RESULT_IOERR_COPY,
+                           "ioerr_disk" : TEST_RESULT_IOERR_DISK,
+                           "ioerr_serial" : TEST_RESULT_IOERR_SERIAL,
+                           "timeout" : TEST_RESULT_TIMEOUT,
+                           "no_image" : TEST_RESULT_NO_IMAGE,
+                           "end" : TEST_RESULT_UNDEF,
+                           "mbed_assert" : TEST_RESULT_MBED_ASSERT,
+                           "build_failed" : TEST_RESULT_BUILD_FAILED,
+                           "not_supproted" : TEST_RESULT_NOT_SUPPORTED
+    }
+
+    def __init__(self,
+                 _global_loops_count=1,
+                 _test_loops_list=None,
+                 _muts={},
+                 _clean=False,
+                 _opts_db_url=None,
+                 _opts_log_file_name=None,
+                 _opts_report_html_file_name=None,
+                 _opts_report_junit_file_name=None,
+                 _opts_report_build_file_name=None,
+                 _opts_build_report={},
+                 _opts_build_properties={},
+                 _test_spec={},
+                 _opts_goanna_for_mbed_sdk=None,
+                 _opts_goanna_for_tests=None,
+                 _opts_shuffle_test_order=False,
+                 _opts_shuffle_test_seed=None,
+                 _opts_test_by_names=None,
+                 _opts_peripheral_by_names=None,
+                 _opts_test_only_peripheral=False,
+                 _opts_test_only_common=False,
+                 _opts_verbose_skipped_tests=False,
+                 _opts_verbose_test_result_only=False,
+                 _opts_verbose=False,
+                 _opts_firmware_global_name=None,
+                 _opts_only_build_tests=False,
+                 _opts_parallel_test_exec=False,
+                 _opts_suppress_summary=False,
+                 _opts_test_x_toolchain_summary=False,
+                 _opts_copy_method=None,
+                 _opts_mut_reset_type=None,
+                 _opts_jobs=None,
+                 _opts_waterfall_test=None,
+                 _opts_consolidate_waterfall_test=None,
+                 _opts_extend_test_timeout=None,
+                 _opts_auto_detect=None,
+                 _opts_include_non_automated=False):
+        """ Let's try hard to init this object
+        """
+        from colorama import init
+        init()
+
+        PATTERN = "\\{(" + "|".join(self.TEST_RESULT_MAPPING.keys()) + ")\\}"
+        self.RE_DETECT_TESTCASE_RESULT = re.compile(PATTERN)
+        # Settings related to test loops counters
+        try:
+            _global_loops_count = int(_global_loops_count)
+        except:
+            _global_loops_count = 1
+        if _global_loops_count < 1:
+            _global_loops_count = 1
+        self.GLOBAL_LOOPS_COUNT = _global_loops_count
+        self.TEST_LOOPS_LIST = _test_loops_list if _test_loops_list else []
+        self.TEST_LOOPS_DICT = self.test_loop_list_to_dict(_test_loops_list)
+
+        self.shuffle_random_seed = 0.0
+        self.SHUFFLE_SEED_ROUND = 10
+
+        # MUT list and test specification storage
+        self.muts = _muts
+        self.test_spec = _test_spec
+
+        # Settings passed e.g. from command line
+        self.opts_db_url = _opts_db_url
+        self.opts_log_file_name = _opts_log_file_name
+        self.opts_report_html_file_name = _opts_report_html_file_name
+        self.opts_report_junit_file_name = _opts_report_junit_file_name
+        self.opts_report_build_file_name = _opts_report_build_file_name
+        self.opts_goanna_for_mbed_sdk = _opts_goanna_for_mbed_sdk
+        self.opts_goanna_for_tests = _opts_goanna_for_tests
+        self.opts_shuffle_test_order = _opts_shuffle_test_order
+        self.opts_shuffle_test_seed = _opts_shuffle_test_seed
+        self.opts_test_by_names = _opts_test_by_names
+        self.opts_peripheral_by_names = _opts_peripheral_by_names
+        self.opts_test_only_peripheral = _opts_test_only_peripheral
+        self.opts_test_only_common = _opts_test_only_common
+        self.opts_verbose_skipped_tests = _opts_verbose_skipped_tests
+        self.opts_verbose_test_result_only = _opts_verbose_test_result_only
+        self.opts_verbose = _opts_verbose
+        self.opts_firmware_global_name = _opts_firmware_global_name
+        self.opts_only_build_tests = _opts_only_build_tests
+        self.opts_parallel_test_exec = _opts_parallel_test_exec
+        self.opts_suppress_summary = _opts_suppress_summary
+        self.opts_test_x_toolchain_summary = _opts_test_x_toolchain_summary
+        self.opts_copy_method = _opts_copy_method
+        self.opts_mut_reset_type = _opts_mut_reset_type
+        self.opts_jobs = _opts_jobs if _opts_jobs is not None else 1
+        self.opts_waterfall_test = _opts_waterfall_test
+        self.opts_consolidate_waterfall_test = _opts_consolidate_waterfall_test
+        self.opts_extend_test_timeout = _opts_extend_test_timeout
+        self.opts_clean = _clean
+        self.opts_auto_detect = _opts_auto_detect
+        self.opts_include_non_automated = _opts_include_non_automated
+
+        self.build_report = _opts_build_report
+        self.build_properties = _opts_build_properties
+
+        # File / screen logger initialization
+        self.logger = CLITestLogger(file_name=self.opts_log_file_name)  # Default test logger
+
+        # Database related initializations
+        self.db_logger = factory_db_logger(self.opts_db_url)
+        self.db_logger_build_id = None # Build ID (database index of build_id table)
+        # Let's connect to database to set up credentials and confirm database is ready
+        if self.db_logger:
+            self.db_logger.connect_url(self.opts_db_url) # Save db access info inside db_logger object
+            if self.db_logger.is_connected():
+                # Get hostname and uname so we can use it as build description
+                # when creating new build_id in external database
+                (_hostname, _uname) = self.db_logger.get_hostname()
+                _host_location = os.path.dirname(os.path.abspath(__file__))
+                build_id_type = None if self.opts_only_build_tests is None else self.db_logger.BUILD_ID_TYPE_BUILD_ONLY
+                self.db_logger_build_id = self.db_logger.get_next_build_id(_hostname, desc=_uname, location=_host_location, type=build_id_type)
+                self.db_logger.disconnect()
+
+    def dump_options(self):
+        """ Function returns data structure with common settings passed to SingelTestRunner
+            It can be used for example to fill _extra fields in database storing test suite single run data
+            Example:
+            data = self.dump_options()
+            or
+            data_str = json.dumps(self.dump_options())
+        """
+        result = {"db_url" : str(self.opts_db_url),
+                  "log_file_name" :  str(self.opts_log_file_name),
+                  "shuffle_test_order" : str(self.opts_shuffle_test_order),
+                  "shuffle_test_seed" : str(self.opts_shuffle_test_seed),
+                  "test_by_names" :  str(self.opts_test_by_names),
+                  "peripheral_by_names" : str(self.opts_peripheral_by_names),
+                  "test_only_peripheral" :  str(self.opts_test_only_peripheral),
+                  "test_only_common" :  str(self.opts_test_only_common),
+                  "verbose" :  str(self.opts_verbose),
+                  "firmware_global_name" :  str(self.opts_firmware_global_name),
+                  "only_build_tests" :  str(self.opts_only_build_tests),
+                  "copy_method" :  str(self.opts_copy_method),
+                  "mut_reset_type" :  str(self.opts_mut_reset_type),
+                  "jobs" :  str(self.opts_jobs),
+                  "extend_test_timeout" :  str(self.opts_extend_test_timeout),
+                  "_dummy" : ''
+        }
+        return result
+
+    def shuffle_random_func(self):
+        return self.shuffle_random_seed
+
+    def is_shuffle_seed_float(self):
+        """ return true if function parameter can be converted to float
+        """
+        result = True
+        try:
+            float(self.shuffle_random_seed)
+        except ValueError:
+            result = False
+        return result
+
+    # This will store target / toolchain specific properties
+    test_suite_properties_ext = {}  # target : toolchain
+    # Here we store test results
+    test_summary = []
+    # Here we store test results in extended data structure
+    test_summary_ext = {}
+    execute_thread_slice_lock = Lock()
+
+    def execute_thread_slice(self, q, target, toolchains, clean, test_ids, build_report, build_properties):
+        for toolchain in toolchains:
+            tt_id = "%s::%s" % (toolchain, target)
+
+            T = TARGET_MAP[target]
+
+            # print target, toolchain
+            # Test suite properties returned to external tools like CI
+            test_suite_properties = {
+                'jobs': self.opts_jobs,
+                'clean': clean,
+                'target': target,
+                'vendor': T.extra_labels[0],
+                'test_ids': ', '.join(test_ids),
+                'toolchain': toolchain,
+                'shuffle_random_seed': self.shuffle_random_seed
+            }
+
+
+            # print '=== %s::%s ===' % (target, toolchain)
+            # Let's build our test
+            if target not in TARGET_MAP:
+                print self.logger.log_line(self.logger.LogType.NOTIF, 'Skipped tests for %s target. Target platform not found'% (target))
+                continue
+
+            build_mbed_libs_options = ["analyze"] if self.opts_goanna_for_mbed_sdk else None
+            clean_mbed_libs_options = True if self.opts_goanna_for_mbed_sdk or clean or self.opts_clean else None
+
+
+            try:
+                build_mbed_libs_result = build_mbed_libs(T,
+                                                         toolchain,
+                                                         options=build_mbed_libs_options,
+                                                         clean=clean_mbed_libs_options,
+                                                         verbose=self.opts_verbose,
+                                                         jobs=self.opts_jobs,
+                                                         report=build_report,
+                                                         properties=build_properties)
+
+                if not build_mbed_libs_result:
+                    print self.logger.log_line(self.logger.LogType.NOTIF, 'Skipped tests for %s target. Toolchain %s is not yet supported for this target'% (T.name, toolchain))
+                    continue
+
+            except ToolException:
+                print self.logger.log_line(self.logger.LogType.ERROR, 'There were errors while building MBED libs for %s using %s'% (target, toolchain))
+                continue
+
+            build_dir = join(BUILD_DIR, "test", target, toolchain)
+
+            test_suite_properties['build_mbed_libs_result'] = build_mbed_libs_result
+            test_suite_properties['build_dir'] = build_dir
+            test_suite_properties['skipped'] = []
+
+            # Enumerate through all tests and shuffle test order if requested
+            test_map_keys = sorted(TEST_MAP.keys())
+
+            if self.opts_shuffle_test_order:
+                random.shuffle(test_map_keys, self.shuffle_random_func)
+                # Update database with shuffle seed f applicable
+                if self.db_logger:
+                    self.db_logger.reconnect();
+                    if self.db_logger.is_connected():
+                        self.db_logger.update_build_id_info(self.db_logger_build_id, _shuffle_seed=self.shuffle_random_func())
+                        self.db_logger.disconnect();
+
+            if self.db_logger:
+                self.db_logger.reconnect();
+                if self.db_logger.is_connected():
+                    # Update MUTs and Test Specification in database
+                    self.db_logger.update_build_id_info(self.db_logger_build_id, _muts=self.muts, _test_spec=self.test_spec)
+                    # Update Extra information in database (some options passed to test suite)
+                    self.db_logger.update_build_id_info(self.db_logger_build_id, _extra=json.dumps(self.dump_options()))
+                    self.db_logger.disconnect();
+
+            valid_test_map_keys = self.get_valid_tests(test_map_keys, target, toolchain, test_ids, self.opts_include_non_automated)
+            skipped_test_map_keys = self.get_skipped_tests(test_map_keys, valid_test_map_keys)
+
+            for skipped_test_id in skipped_test_map_keys:
+                test_suite_properties['skipped'].append(skipped_test_id)
+
+
+            # First pass through all tests and determine which libraries need to be built
+            libraries = []
+            for test_id in valid_test_map_keys:
+                test = TEST_MAP[test_id]
+
+                # Detect which lib should be added to test
+                # Some libs have to compiled like RTOS or ETH
+                for lib in LIBRARIES:
+                    if lib['build_dir'] in test.dependencies and lib['id'] not in libraries:
+                        libraries.append(lib['id'])
+
+
+            build_project_options = ["analyze"] if self.opts_goanna_for_tests else None
+            clean_project_options = True if self.opts_goanna_for_tests or clean or self.opts_clean else None
+
+            # Build all required libraries
+            for lib_id in libraries:
+                try:
+                    build_lib(lib_id,
+                              T,
+                              toolchain,
+                              options=build_project_options,
+                              verbose=self.opts_verbose,
+                              clean=clean_mbed_libs_options,
+                              jobs=self.opts_jobs,
+                              report=build_report,
+                              properties=build_properties)
+
+                except ToolException:
+                    print self.logger.log_line(self.logger.LogType.ERROR, 'There were errors while building library %s'% (lib_id))
+                    continue
+
+
+            for test_id in valid_test_map_keys:
+                test = TEST_MAP[test_id]
+
+                test_suite_properties['test.libs.%s.%s.%s'% (target, toolchain, test_id)] = ', '.join(libraries)
+
+                # TODO: move this 2 below loops to separate function
+                INC_DIRS = []
+                for lib_id in libraries:
+                    if 'inc_dirs_ext' in LIBRARY_MAP[lib_id] and LIBRARY_MAP[lib_id]['inc_dirs_ext']:
+                        INC_DIRS.extend(LIBRARY_MAP[lib_id]['inc_dirs_ext'])
+
+                MACROS = []
+                for lib_id in libraries:
+                    if 'macros' in LIBRARY_MAP[lib_id] and LIBRARY_MAP[lib_id]['macros']:
+                        MACROS.extend(LIBRARY_MAP[lib_id]['macros'])
+                MACROS.append('TEST_SUITE_TARGET_NAME="%s"'% target)
+                MACROS.append('TEST_SUITE_TEST_ID="%s"'% test_id)
+                test_uuid = uuid.uuid4()
+                MACROS.append('TEST_SUITE_UUID="%s"'% str(test_uuid))
+
+                # Prepare extended test results data structure (it can be used to generate detailed test report)
+                if target not in self.test_summary_ext:
+                    self.test_summary_ext[target] = {}  # test_summary_ext : toolchain
+                if toolchain not in self.test_summary_ext[target]:
+                    self.test_summary_ext[target][toolchain] = {}    # test_summary_ext : toolchain : target
+
+                tt_test_id = "%s::%s::%s" % (toolchain, target, test_id)    # For logging only
+
+                project_name = self.opts_firmware_global_name if self.opts_firmware_global_name else None
+                try:
+                    path = build_project(test.source_dir,
+                                     join(build_dir, test_id),
+                                     T,
+                                     toolchain,
+                                     test.dependencies,
+                                     options=build_project_options,
+                                     clean=clean_project_options,
+                                     verbose=self.opts_verbose,
+                                     name=project_name,
+                                     macros=MACROS,
+                                     inc_dirs=INC_DIRS,
+                                     jobs=self.opts_jobs,
+                                     report=build_report,
+                                     properties=build_properties,
+                                     project_id=test_id,
+                                     project_description=test.get_description())
+
+                except Exception, e:
+                    project_name_str = project_name if project_name is not None else test_id
+
+
+                    test_result = self.TEST_RESULT_FAIL
+
+                    if isinstance(e, ToolException):
+                        print self.logger.log_line(self.logger.LogType.ERROR, 'There were errors while building project %s'% (project_name_str))
+                        test_result = self.TEST_RESULT_BUILD_FAILED
+                    elif isinstance(e, NotSupportedException):
+                        print self.logger.log_line(self.logger.LogType.INFO, 'The project %s is not supported'% (project_name_str))
+                        test_result = self.TEST_RESULT_NOT_SUPPORTED
+
+
+                    # Append test results to global test summary
+                    self.test_summary.append(
+                        (test_result, target, toolchain, test_id, test.get_description(), 0, 0, '-')
+                    )
+
+                    # Add detailed test result to test summary structure
+                    if test_id not in self.test_summary_ext[target][toolchain]:
+                        self.test_summary_ext[target][toolchain][test_id] = []
+
+                    self.test_summary_ext[target][toolchain][test_id].append({ 0: {
+                        'result' : test_result,
+                        'output' : '',
+                        'target_name' : target,
+                        'target_name_unique': target,
+                        'toolchain_name' : toolchain,
+                        'id' : test_id,
+                        'description' : test.get_description(),
+                        'elapsed_time' : 0,
+                        'duration' : 0,
+                        'copy_method' : None
+                    }})
+                    continue
+
+                if self.opts_only_build_tests:
+                    # With this option we are skipping testing phase
+                    continue
+
+                # Test duration can be increased by global value
+                test_duration = test.duration
+                if self.opts_extend_test_timeout is not None:
+                    test_duration += self.opts_extend_test_timeout
+
+                # For an automated test the duration act as a timeout after
+                # which the test gets interrupted
+                test_spec = self.shape_test_request(target, path, test_id, test_duration)
+                test_loops = self.get_test_loop_count(test_id)
+
+                test_suite_properties['test.duration.%s.%s.%s'% (target, toolchain, test_id)] = test_duration
+                test_suite_properties['test.loops.%s.%s.%s'% (target, toolchain, test_id)] = test_loops
+                test_suite_properties['test.path.%s.%s.%s'% (target, toolchain, test_id)] = path
+
+                # read MUTs, test specification and perform tests
+                handle_results = self.handle(test_spec, target, toolchain, test_loops=test_loops)
+
+                if handle_results is None:
+                    continue
+
+                for handle_result in handle_results:
+                    if handle_result:
+                        single_test_result, detailed_test_results = handle_result
+                    else:
+                        continue
+
+                    # Append test results to global test summary
+                    if single_test_result is not None:
+                        self.test_summary.append(single_test_result)
+
+                    # Add detailed test result to test summary structure
+                    if target not in self.test_summary_ext[target][toolchain]:
+                        if test_id not in self.test_summary_ext[target][toolchain]:
+                            self.test_summary_ext[target][toolchain][test_id] = []
+
+                        append_test_result = detailed_test_results
+
+                        # If waterfall and consolidate-waterfall options are enabled,
+                        # only include the last test result in the report.
+                        if self.opts_waterfall_test and self.opts_consolidate_waterfall_test:
+                            append_test_result = {0: detailed_test_results[len(detailed_test_results) - 1]}
+
+                        self.test_summary_ext[target][toolchain][test_id].append(append_test_result)
+
+            test_suite_properties['skipped'] = ', '.join(test_suite_properties['skipped'])
+            self.test_suite_properties_ext[target][toolchain] = test_suite_properties
+
+        q.put(target + '_'.join(toolchains))
+        return
+
+    def execute(self):
+        clean = self.test_spec.get('clean', False)
+        test_ids = self.test_spec.get('test_ids', [])
+        q = Queue()
+
+        # Generate seed for shuffle if seed is not provided in
+        self.shuffle_random_seed = round(random.random(), self.SHUFFLE_SEED_ROUND)
+        if self.opts_shuffle_test_seed is not None and self.is_shuffle_seed_float():
+            self.shuffle_random_seed = round(float(self.opts_shuffle_test_seed), self.SHUFFLE_SEED_ROUND)
+
+
+        if self.opts_parallel_test_exec:
+            ###################################################################
+            # Experimental, parallel test execution per singletest instance.
+            ###################################################################
+            execute_threads = []    # Threads used to build mbed SDL, libs, test cases and execute tests
+            # Note: We are building here in parallel for each target separately!
+            # So we are not building the same thing multiple times and compilers
+            # in separate threads do not collide.
+            # Inside execute_thread_slice() function function handle() will be called to
+            # get information about available MUTs (per target).
+            for target, toolchains in self.test_spec['targets'].iteritems():
+                self.test_suite_properties_ext[target] = {}
+                t = threading.Thread(target=self.execute_thread_slice, args = (q, target, toolchains, clean, test_ids, self.build_report, self.build_properties))
+                t.daemon = True
+                t.start()
+                execute_threads.append(t)
+
+            for t in execute_threads:
+                q.get() # t.join() would block some threads because we should not wait in any order for thread end
+        else:
+            # Serialized (not parallel) test execution
+            for target, toolchains in self.test_spec['targets'].iteritems():
+                if target not in self.test_suite_properties_ext:
+                    self.test_suite_properties_ext[target] = {}
+
+                self.execute_thread_slice(q, target, toolchains, clean, test_ids, self.build_report, self.build_properties)
+                q.get()
+
+        if self.db_logger:
+            self.db_logger.reconnect();
+            if self.db_logger.is_connected():
+                self.db_logger.update_build_id_info(self.db_logger_build_id, _status_fk=self.db_logger.BUILD_ID_STATUS_COMPLETED)
+                self.db_logger.disconnect();
+
+        return self.test_summary, self.shuffle_random_seed, self.test_summary_ext, self.test_suite_properties_ext, self.build_report, self.build_properties
+
+    def get_valid_tests(self, test_map_keys, target, toolchain, test_ids, include_non_automated):
+        valid_test_map_keys = []
+
+        for test_id in test_map_keys:
+            test = TEST_MAP[test_id]
+            if self.opts_test_by_names and test_id not in self.opts_test_by_names.split(','):
+                continue
+
+            if test_ids and test_id not in test_ids:
+                continue
+
+            if self.opts_test_only_peripheral and not test.peripherals:
+                if self.opts_verbose_skipped_tests:
+                    print self.logger.log_line(self.logger.LogType.INFO, 'Common test skipped for target %s'% (target))
+                continue
+
+            if self.opts_peripheral_by_names and test.peripherals and not len([i for i in test.peripherals if i in self.opts_peripheral_by_names.split(',')]):
+                # We will skip tests not forced with -p option
+                if self.opts_verbose_skipped_tests:
+                    print self.logger.log_line(self.logger.LogType.INFO, 'Common test skipped for target %s'% (target))
+                continue
+
+            if self.opts_test_only_common and test.peripherals:
+                if self.opts_verbose_skipped_tests:
+                    print self.logger.log_line(self.logger.LogType.INFO, 'Peripheral test skipped for target %s'% (target))
+                continue
+
+            if not include_non_automated and not test.automated:
+                if self.opts_verbose_skipped_tests:
+                    print self.logger.log_line(self.logger.LogType.INFO, 'Non automated test skipped for target %s'% (target))
+                continue
+
+            if test.is_supported(target, toolchain):
+                if test.peripherals is None and self.opts_only_build_tests:
+                    # When users are using 'build only flag' and test do not have
+                    # specified peripherals we can allow test building by default
+                    pass
+                elif self.opts_peripheral_by_names and test_id not in self.opts_peripheral_by_names.split(','):
+                    # If we force peripheral with option -p we expect test
+                    # to pass even if peripheral is not in MUTs file.
+                    pass
+                elif not self.is_peripherals_available(target, test.peripherals):
+                    if self.opts_verbose_skipped_tests:
+                        if test.peripherals:
+                            print self.logger.log_line(self.logger.LogType.INFO, 'Peripheral %s test skipped for target %s'% (",".join(test.peripherals), target))
+                        else:
+                            print self.logger.log_line(self.logger.LogType.INFO, 'Test %s skipped for target %s'% (test_id, target))
+                    continue
+
+                # The test has made it through all the filters, so add it to the valid tests list
+                valid_test_map_keys.append(test_id)
+
+        return valid_test_map_keys
+
+    def get_skipped_tests(self, all_test_map_keys, valid_test_map_keys):
+        # NOTE: This will not preserve order
+        return list(set(all_test_map_keys) - set(valid_test_map_keys))
+
+    def generate_test_summary_by_target(self, test_summary, shuffle_seed=None):
+        """ Prints well-formed summary with results (SQL table like)
+            table shows text x toolchain test result matrix
+        """
+        RESULT_INDEX = 0
+        TARGET_INDEX = 1
+        TOOLCHAIN_INDEX = 2
+        TEST_INDEX = 3
+        DESC_INDEX = 4
+
+        unique_targets = get_unique_value_from_summary(test_summary, TARGET_INDEX)
+        unique_tests = get_unique_value_from_summary(test_summary, TEST_INDEX)
+        unique_test_desc = get_unique_value_from_summary_ext(test_summary, TEST_INDEX, DESC_INDEX)
+        unique_toolchains = get_unique_value_from_summary(test_summary, TOOLCHAIN_INDEX)
+
+        result = "Test summary:\n"
+        for target in unique_targets:
+            result_dict = {} # test : { toolchain : result }
+            unique_target_toolchains = []
+            for test in test_summary:
+                if test[TARGET_INDEX] == target:
+                    if test[TOOLCHAIN_INDEX] not in unique_target_toolchains:
+                        unique_target_toolchains.append(test[TOOLCHAIN_INDEX])
+                    if test[TEST_INDEX] not in result_dict:
+                        result_dict[test[TEST_INDEX]] = {}
+                    result_dict[test[TEST_INDEX]][test[TOOLCHAIN_INDEX]] = test[RESULT_INDEX]
+
+            pt_cols = ["Target", "Test ID", "Test Description"] + unique_target_toolchains
+            pt = PrettyTable(pt_cols)
+            for col in pt_cols:
+                pt.align[col] = "l"
+            pt.padding_width = 1 # One space between column edges and contents (default)
+
+            for test in unique_tests:
+                if test in result_dict:
+                    test_results = result_dict[test]
+                    if test in unique_test_desc:
+                        row = [target, test, unique_test_desc[test]]
+                        for toolchain in unique_toolchains:
+                            if toolchain in test_results:
+                                row.append(test_results[toolchain])
+                        pt.add_row(row)
+            result += pt.get_string()
+            shuffle_seed_text = "Shuffle Seed: %.*f"% (self.SHUFFLE_SEED_ROUND,
+                                                       shuffle_seed if shuffle_seed else self.shuffle_random_seed)
+            result += "\n%s"% (shuffle_seed_text if self.opts_shuffle_test_order else '')
+        return result
+
+    def generate_test_summary(self, test_summary, shuffle_seed=None):
+        """ Prints well-formed summary with results (SQL table like)
+            table shows target x test results matrix across
+        """
+        success_code = 0    # Success code that can be leter returned to
+        result = "Test summary:\n"
+        # Pretty table package is used to print results
+        pt = PrettyTable(["Result", "Target", "Toolchain", "Test ID", "Test Description",
+                          "Elapsed Time (sec)", "Timeout (sec)", "Loops"])
+        pt.align["Result"] = "l" # Left align
+        pt.align["Target"] = "l" # Left align
+        pt.align["Toolchain"] = "l" # Left align
+        pt.align["Test ID"] = "l" # Left align
+        pt.align["Test Description"] = "l" # Left align
+        pt.padding_width = 1 # One space between column edges and contents (default)
+
+        result_dict = {self.TEST_RESULT_OK : 0,
+                       self.TEST_RESULT_FAIL : 0,
+                       self.TEST_RESULT_ERROR : 0,
+                       self.TEST_RESULT_UNDEF : 0,
+                       self.TEST_RESULT_IOERR_COPY : 0,
+                       self.TEST_RESULT_IOERR_DISK : 0,
+                       self.TEST_RESULT_IOERR_SERIAL : 0,
+                       self.TEST_RESULT_NO_IMAGE : 0,
+                       self.TEST_RESULT_TIMEOUT : 0,
+                       self.TEST_RESULT_MBED_ASSERT : 0,
+                       self.TEST_RESULT_BUILD_FAILED : 0,
+                       self.TEST_RESULT_NOT_SUPPORTED : 0
+        }
+
+        for test in test_summary:
+            if test[0] in result_dict:
+                result_dict[test[0]] += 1
+            pt.add_row(test)
+        result += pt.get_string()
+        result += "\n"
+
+        # Print result count
+        result += "Result: " + ' / '.join(['%s %s' % (value, key) for (key, value) in {k: v for k, v in result_dict.items() if v != 0}.iteritems()])
+        shuffle_seed_text = "Shuffle Seed: %.*f\n"% (self.SHUFFLE_SEED_ROUND,
+                                                    shuffle_seed if shuffle_seed else self.shuffle_random_seed)
+        result += "\n%s"% (shuffle_seed_text if self.opts_shuffle_test_order else '')
+        return result
+
+    def test_loop_list_to_dict(self, test_loops_str):
+        """ Transforms test_id=X,test_id=X,test_id=X into dictionary {test_id : test_id_loops_count}
+        """
+        result = {}
+        if test_loops_str:
+            test_loops = test_loops_str.split(',')
+            for test_loop in test_loops:
+                test_loop_count = test_loop.split('=')
+                if len(test_loop_count) == 2:
+                    _test_id, _test_loops = test_loop_count
+                    try:
+                        _test_loops = int(_test_loops)
+                    except:
+                        continue
+                    result[_test_id] = _test_loops
+        return result
+
+    def get_test_loop_count(self, test_id):
+        """ This function returns no. of loops per test (deducted by test_id_.
+            If test is not in list of redefined loop counts it will use default value.
+        """
+        result = self.GLOBAL_LOOPS_COUNT
+        if test_id in self.TEST_LOOPS_DICT:
+            result = self.TEST_LOOPS_DICT[test_id]
+        return result
+
+    def delete_file(self, file_path):
+        """ Remove file from the system
+        """
+        result = True
+        resutl_msg = ""
+        try:
+            os.remove(file_path)
+        except Exception, e:
+            resutl_msg = e
+            result = False
+        return result, resutl_msg
+
+    def handle_mut(self, mut, data, target_name, toolchain_name, test_loops=1):
+        """ Test is being invoked for given MUT.
+        """
+        # Get test information, image and test timeout
+        test_id = data['test_id']
+        test = TEST_MAP[test_id]
+        test_description = TEST_MAP[test_id].get_description()
+        image = data["image"]
+        duration = data.get("duration", 10)
+
+        if mut is None:
+            print "Error: No Mbed available: MUT[%s]" % data['mcu']
+            return None
+
+        mcu = mut['mcu']
+        copy_method = mut.get('copy_method')        # Available board configuration selection e.g. core selection etc.
+
+        if self.db_logger:
+            self.db_logger.reconnect()
+
+        selected_copy_method = self.opts_copy_method if copy_method is None else copy_method
+
+        # Tests can be looped so test results must be stored for the same test
+        test_all_result = []
+        # Test results for one test ran few times
+        detailed_test_results = {}  # { Loop_number: { results ... } }
+
+        for test_index in range(test_loops):
+
+            # If mbedls is available and we are auto detecting MUT info,
+            # update MUT info (mounting may changed)
+            if get_module_avail('mbed_lstools') and self.opts_auto_detect:
+                platform_name_filter = [mcu]
+                muts_list = {}
+                found = False
+
+                for i in range(0, 60):
+                    print('Looking for %s with MBEDLS' % mcu)
+                    muts_list = get_autodetected_MUTS_list(platform_name_filter=platform_name_filter)
+
+                    if 1 not in muts_list:
+                        sleep(3)
+                    else:
+                        found = True
+                        break
+
+                if not found:
+                    print "Error: mbed not found with MBEDLS: %s" % data['mcu']
+                    return None
+                else:
+                    mut = muts_list[1]
+
+            disk = mut.get('disk')
+            port = mut.get('port')
+
+            if disk is None or port is None:
+                return None
+
+            target_by_mcu = TARGET_MAP[mut['mcu']]
+            target_name_unique = mut['mcu_unique'] if 'mcu_unique' in mut else mut['mcu']
+            # Some extra stuff can be declared in MUTs structure
+            reset_type = mut.get('reset_type')  # reboot.txt, reset.txt, shutdown.txt
+            reset_tout = mut.get('reset_tout')  # COPY_IMAGE -> RESET_PROC -> SLEEP(RESET_TOUT)
+
+            # When the build and test system were separate, this was relative to a
+            # base network folder base path: join(NETWORK_BASE_PATH, )
+            image_path = image
+
+            # Host test execution
+            start_host_exec_time = time()
+
+            single_test_result = self.TEST_RESULT_UNDEF # single test run result
+            _copy_method = selected_copy_method
+
+            if not exists(image_path):
+                single_test_result = self.TEST_RESULT_NO_IMAGE
+                elapsed_time = 0
+                single_test_output = self.logger.log_line(self.logger.LogType.ERROR, 'Image file does not exist: %s'% image_path)
+                print single_test_output
+            else:
+                # Host test execution
+                start_host_exec_time = time()
+
+                host_test_verbose = self.opts_verbose_test_result_only or self.opts_verbose
+                host_test_reset = self.opts_mut_reset_type if reset_type is None else reset_type
+                host_test_result = self.run_host_test(test.host_test,
+                                                      image_path, disk, port, duration,
+                                                      micro=target_name,
+                                                      verbose=host_test_verbose,
+                                                      reset=host_test_reset,
+                                                      reset_tout=reset_tout,
+                                                      copy_method=selected_copy_method,
+                                                      program_cycle_s=target_by_mcu.program_cycle_s())
+                single_test_result, single_test_output, single_testduration, single_timeout = host_test_result
+
+            # Store test result
+            test_all_result.append(single_test_result)
+            total_elapsed_time = time() - start_host_exec_time   # Test time with copy (flashing) / reset
+            elapsed_time = single_testduration  # TIme of single test case execution after reset
+
+            detailed_test_results[test_index] = {
+                'result' : single_test_result,
+                'output' : single_test_output,
+                'target_name' : target_name,
+                'target_name_unique' : target_name_unique,
+                'toolchain_name' : toolchain_name,
+                'id' : test_id,
+                'description' : test_description,
+                'elapsed_time' : round(elapsed_time, 2),
+                'duration' : single_timeout,
+                'copy_method' : _copy_method,
+            }
+
+            print self.print_test_result(single_test_result, target_name_unique, toolchain_name,
+                                         test_id, test_description, elapsed_time, single_timeout)
+
+            # Update database entries for ongoing test
+            if self.db_logger and self.db_logger.is_connected():
+                test_type = 'SingleTest'
+                self.db_logger.insert_test_entry(self.db_logger_build_id,
+                                                 target_name,
+                                                 toolchain_name,
+                                                 test_type,
+                                                 test_id,
+                                                 single_test_result,
+                                                 single_test_output,
+                                                 elapsed_time,
+                                                 single_timeout,
+                                                 test_index)
+
+            # If we perform waterfall test we test until we get OK and we stop testing
+            if self.opts_waterfall_test and single_test_result == self.TEST_RESULT_OK:
+                break
+
+        if self.db_logger:
+            self.db_logger.disconnect()
+
+        return (self.shape_global_test_loop_result(test_all_result, self.opts_waterfall_test and self.opts_consolidate_waterfall_test),
+                target_name_unique,
+                toolchain_name,
+                test_id,
+                test_description,
+                round(elapsed_time, 2),
+                single_timeout,
+                self.shape_test_loop_ok_result_count(test_all_result)), detailed_test_results
+
+    def handle(self, test_spec, target_name, toolchain_name, test_loops=1):
+        """ Function determines MUT's mbed disk/port and copies binary to
+            target.
+        """
+        handle_results = []
+        data = json.loads(test_spec)
+
+        # Find a suitable MUT:
+        mut = None
+        for id, m in self.muts.iteritems():
+            if m['mcu'] == data['mcu']:
+                mut = m
+                handle_result = self.handle_mut(mut, data, target_name, toolchain_name, test_loops=test_loops)
+                handle_results.append(handle_result)
+
+        return handle_results
+
+    def print_test_result(self, test_result, target_name, toolchain_name,
+                          test_id, test_description, elapsed_time, duration):
+        """ Use specific convention to print test result and related data
+        """
+        tokens = []
+        tokens.append("TargetTest")
+        tokens.append(target_name)
+        tokens.append(toolchain_name)
+        tokens.append(test_id)
+        tokens.append(test_description)
+        separator = "::"
+        time_info = " in %.2f of %d sec" % (round(elapsed_time, 2), duration)
+        result = separator.join(tokens) + " [" + test_result +"]" + time_info
+        return Fore.MAGENTA + result + Fore.RESET
+
+    def shape_test_loop_ok_result_count(self, test_all_result):
+        """ Reformats list of results to simple string
+        """
+        test_loop_count = len(test_all_result)
+        test_loop_ok_result = test_all_result.count(self.TEST_RESULT_OK)
+        return "%d/%d"% (test_loop_ok_result, test_loop_count)
+
+    def shape_global_test_loop_result(self, test_all_result, waterfall_and_consolidate):
+        """ Reformats list of results to simple string
+        """
+        result = self.TEST_RESULT_FAIL
+
+        if all(test_all_result[0] == res for res in test_all_result):
+            result = test_all_result[0]
+        elif waterfall_and_consolidate and any(res == self.TEST_RESULT_OK for res in test_all_result):
+            result = self.TEST_RESULT_OK
+
+        return result
+
+    def run_host_test(self, name, image_path, disk, port, duration,
+                      micro=None, reset=None, reset_tout=None,
+                      verbose=False, copy_method=None, program_cycle_s=None):
+        """ Function creates new process with host test configured with particular test case.
+            Function also is pooling for serial port activity from process to catch all data
+            printed by test runner and host test during test execution
+        """
+
+        def get_char_from_queue(obs):
+            """ Get character from queue safe way
+            """
+            try:
+                c = obs.queue.get(block=True, timeout=0.5)
+            except Empty, _:
+                c = None
+            return c
+
+        def filter_queue_char(c):
+            """ Filters out non ASCII characters from serial port
+            """
+            if ord(c) not in range(128):
+                c = ' '
+            return c
+
+        def get_test_result(output):
+            """ Parse test 'output' data
+            """
+            result = self.TEST_RESULT_TIMEOUT
+            for line in "".join(output).splitlines():
+                search_result = self.RE_DETECT_TESTCASE_RESULT.search(line)
+                if search_result and len(search_result.groups()):
+                    result = self.TEST_RESULT_MAPPING[search_result.groups(0)[0]]
+                    break
+            return result
+
+        def get_auto_property_value(property_name, line):
+            """ Scans auto detection line from MUT and returns scanned parameter 'property_name'
+                Returns string
+            """
+            result = None
+            if re.search("HOST: Property '%s'"% property_name, line) is not None:
+                property = re.search("HOST: Property '%s' = '([\w\d _]+)'"% property_name, line)
+                if property is not None and len(property.groups()) == 1:
+                    result = property.groups()[0]
+            return result
+
+        # print "{%s} port:%s disk:%s"  % (name, port, disk),
+        cmd = ["python",
+               '%s.py'% name,
+               '-d', disk,
+               '-f', '"%s"'% image_path,
+               '-p', port,
+               '-t', str(duration),
+               '-C', str(program_cycle_s)]
+
+        if get_module_avail('mbed_lstools') and self.opts_auto_detect:
+            cmd += ['--auto']
+
+        # Add extra parameters to host_test
+        if copy_method is not None:
+            cmd += ["-c", copy_method]
+        if micro is not None:
+            cmd += ["-m", micro]
+        if reset is not None:
+            cmd += ["-r", reset]
+        if reset_tout is not None:
+            cmd += ["-R", str(reset_tout)]
+
+        if verbose:
+            print Fore.MAGENTA + "Executing '" + " ".join(cmd) + "'" + Fore.RESET
+            print "Test::Output::Start"
+
+        proc = Popen(cmd, stdout=PIPE, cwd=HOST_TESTS)
+        obs = ProcessObserver(proc)
+        update_once_flag = {}   # Stores flags checking if some auto-parameter was already set
+        line = ''
+        output = []
+        start_time = time()
+        while (time() - start_time) < (2 * duration):
+            c = get_char_from_queue(obs)
+            if c:
+                if verbose:
+                    sys.stdout.write(c)
+                c = filter_queue_char(c)
+                output.append(c)
+                # Give the mbed under test a way to communicate the end of the test
+                if c in ['\n', '\r']:
+
+                    # Checking for auto-detection information from the test about MUT reset moment
+                    if 'reset_target' not in update_once_flag and "HOST: Reset target..." in line:
+                        # We will update this marker only once to prevent multiple time resets
+                        update_once_flag['reset_target'] = True
+                        start_time = time()
+
+                    # Checking for auto-detection information from the test about timeout
+                    auto_timeout_val = get_auto_property_value('timeout', line)
+                    if 'timeout' not in update_once_flag and auto_timeout_val is not None:
+                        # We will update this marker only once to prevent multiple time resets
+                        update_once_flag['timeout'] = True
+                        duration = int(auto_timeout_val)
+
+                    # Detect mbed assert:
+                    if 'mbed assertation failed: ' in line:
+                        output.append('{{mbed_assert}}')
+                        break
+
+                    # Check for test end
+                    if '{end}' in line:
+                        break
+                    line = ''
+                else:
+                    line += c
+        end_time = time()
+        testcase_duration = end_time - start_time   # Test case duration from reset to {end}
+
+        c = get_char_from_queue(obs)
+
+        if c:
+            if verbose:
+                sys.stdout.write(c)
+            c = filter_queue_char(c)
+            output.append(c)
+
+        if verbose:
+            print "Test::Output::Finish"
+        # Stop test process
+        obs.stop()
+
+        result = get_test_result(output)
+        return (result, "".join(output), testcase_duration, duration)
+
+    def is_peripherals_available(self, target_mcu_name, peripherals=None):
+        """ Checks if specified target should run specific peripheral test case defined in MUTs file
+        """
+        if peripherals is not None:
+            peripherals = set(peripherals)
+        for id, mut in self.muts.iteritems():
+            # Target MCU name check
+            if mut["mcu"] != target_mcu_name:
+                continue
+            # Peripherals check
+            if peripherals is not None:
+                if 'peripherals' not in mut:
+                    continue
+                if not peripherals.issubset(set(mut['peripherals'])):
+                    continue
+            return True
+        return False
+
+    def shape_test_request(self, mcu, image_path, test_id, duration=10):
+        """ Function prepares JSON structure describing test specification
+        """
+        test_spec = {
+            "mcu": mcu,
+            "image": image_path,
+            "duration": duration,
+            "test_id": test_id,
+        }
+        return json.dumps(test_spec)
+
+
+def get_unique_value_from_summary(test_summary, index):
+    """ Gets list of unique target names
+    """
+    result = []
+    for test in test_summary:
+        target_name = test[index]
+        if target_name not in result:
+            result.append(target_name)
+    return sorted(result)
+
+
+def get_unique_value_from_summary_ext(test_summary, index_key, index_val):
+    """ Gets list of unique target names and return dictionary
+    """
+    result = {}
+    for test in test_summary:
+        key = test[index_key]
+        val = test[index_val]
+        if key not in result:
+            result[key] = val
+    return result
+
+
+def show_json_file_format_error(json_spec_filename, line, column):
+    """ Prints JSON broken content
+    """
+    with open(json_spec_filename) as data_file:
+        line_no = 1
+        for json_line in data_file:
+            if line_no + 5 >= line: # Print last few lines before error
+                print 'Line %d:\t'%line_no + json_line, # Prints line
+            if line_no == line:
+                print ' ' * len('Line %d:'%line_no) + '\t', '-' * (column-1) + '^'
+                break
+            line_no += 1
+
+
+def json_format_error_defect_pos(json_error_msg):
+    """ Gets first error line and column in JSON file format.
+        Parsed from exception thrown by json.loads() string
+    """
+    result = None
+    line, column = 0, 0
+    # Line value search
+    line_search = re.search('line [0-9]+', json_error_msg)
+    if line_search is not None:
+        ls = line_search.group().split(' ')
+        if len(ls) == 2:
+            line = int(ls[1])
+            # Column position search
+            column_search = re.search('column [0-9]+', json_error_msg)
+            if column_search is not None:
+                cs = column_search.group().split(' ')
+                if len(cs) == 2:
+                    column = int(cs[1])
+                    result = [line, column]
+    return result
+
+
+def get_json_data_from_file(json_spec_filename, verbose=False):
+    """ Loads from file JSON formatted string to data structure
+    """
+    result = None
+    try:
+        with open(json_spec_filename) as data_file:
+            try:
+                result = json.load(data_file)
+            except ValueError as json_error_msg:
+                result = None
+                print 'JSON file %s parsing failed. Reason: %s' % (json_spec_filename, json_error_msg)
+                # We can print where error occurred inside JSON file if we can parse exception msg
+                json_format_defect_pos = json_format_error_defect_pos(str(json_error_msg))
+                if json_format_defect_pos is not None:
+                    line = json_format_defect_pos[0]
+                    column = json_format_defect_pos[1]
+                    print
+                    show_json_file_format_error(json_spec_filename, line, column)
+
+    except IOError as fileopen_error_msg:
+        print 'JSON file %s not opened. Reason: %s'% (json_spec_filename, fileopen_error_msg)
+        print
+    if verbose and result:
+        pp = pprint.PrettyPrinter(indent=4)
+        pp.pprint(result)
+    return result
+
+
+def print_muts_configuration_from_json(json_data, join_delim=", ", platform_filter=None):
+    """ Prints MUTs configuration passed to test script for verboseness
+    """
+    muts_info_cols = []
+    # We need to check all unique properties for each defined MUT
+    for k in json_data:
+        mut_info = json_data[k]
+        for mut_property in mut_info:
+            if mut_property not in muts_info_cols:
+                muts_info_cols.append(mut_property)
+
+    # Prepare pretty table object to display all MUTs
+    pt_cols = ["index"] + muts_info_cols
+    pt = PrettyTable(pt_cols)
+    for col in pt_cols:
+        pt.align[col] = "l"
+
+    # Add rows to pretty print object
+    for k in json_data:
+        row = [k]
+        mut_info = json_data[k]
+
+        add_row = True
+        if platform_filter and 'mcu' in mut_info:
+            add_row = re.search(platform_filter, mut_info['mcu']) is not None
+        if add_row:
+            for col in muts_info_cols:
+                cell_val = mut_info[col] if col in mut_info else None
+                if type(cell_val) == ListType:
+                    cell_val = join_delim.join(cell_val)
+                row.append(cell_val)
+            pt.add_row(row)
+    return pt.get_string()
+
+
+def print_test_configuration_from_json(json_data, join_delim=", "):
+    """ Prints test specification configuration passed to test script for verboseness
+    """
+    toolchains_info_cols = []
+    # We need to check all toolchains for each device
+    for k in json_data:
+        # k should be 'targets'
+        targets = json_data[k]
+        for target in targets:
+            toolchains = targets[target]
+            for toolchain in toolchains:
+                if toolchain not in toolchains_info_cols:
+                    toolchains_info_cols.append(toolchain)
+
+    # Prepare pretty table object to display test specification
+    pt_cols = ["mcu"] + sorted(toolchains_info_cols)
+    pt = PrettyTable(pt_cols)
+    for col in pt_cols:
+        pt.align[col] = "l"
+
+    # { target : [conflicted toolchains] }
+    toolchain_conflicts = {}
+    toolchain_path_conflicts = []
+    for k in json_data:
+        # k should be 'targets'
+        targets = json_data[k]
+        for target in targets:
+            target_supported_toolchains = get_target_supported_toolchains(target)
+            if not target_supported_toolchains:
+                target_supported_toolchains = []
+            target_name = target if target in TARGET_MAP else "%s*"% target
+            row = [target_name]
+            toolchains = targets[target]
+
+            for toolchain in sorted(toolchains_info_cols):
+                # Check for conflicts: target vs toolchain
+                conflict = False
+                conflict_path = False
+                if toolchain in toolchains:
+                    if toolchain not in target_supported_toolchains:
+                        conflict = True
+                        if target not in toolchain_conflicts:
+                            toolchain_conflicts[target] = []
+                        toolchain_conflicts[target].append(toolchain)
+                # Add marker inside table about target usage / conflict
+                cell_val = 'Yes' if toolchain in toolchains else '-'
+                if conflict:
+                    cell_val += '*'
+                # Check for conflicts: toolchain vs toolchain path
+                if toolchain in TOOLCHAIN_BIN_PATH:
+                    toolchain_path = TOOLCHAIN_BIN_PATH[toolchain]
+                    if not os.path.isdir(toolchain_path):
+                        conflict_path = True
+                        if toolchain not in toolchain_path_conflicts:
+                            toolchain_path_conflicts.append(toolchain)
+                if conflict_path:
+                    cell_val += '#'
+                row.append(cell_val)
+            pt.add_row(row)
+
+    # generate result string
+    result = pt.get_string()    # Test specification table
+    if toolchain_conflicts or toolchain_path_conflicts:
+        result += "\n"
+        result += "Toolchain conflicts:\n"
+        for target in toolchain_conflicts:
+            if target not in TARGET_MAP:
+                result += "\t* Target %s unknown\n"% (target)
+            conflict_target_list = join_delim.join(toolchain_conflicts[target])
+            sufix = 's' if len(toolchain_conflicts[target]) > 1 else ''
+            result += "\t* Target %s does not support %s toolchain%s\n"% (target, conflict_target_list, sufix)
+
+        for toolchain in toolchain_path_conflicts:
+        # Let's check toolchain configuration
+            if toolchain in TOOLCHAIN_BIN_PATH:
+                toolchain_path = TOOLCHAIN_BIN_PATH[toolchain]
+                if not os.path.isdir(toolchain_path):
+                    result += "\t# Toolchain %s path not found: %s\n"% (toolchain, toolchain_path)
+    return result
+
+
+def get_avail_tests_summary_table(cols=None, result_summary=True, join_delim=',',platform_filter=None):
+    """ Generates table summary with all test cases and additional test cases
+        information using pretty print functionality. Allows test suite user to
+        see test cases
+    """
+    # get all unique test ID prefixes
+    unique_test_id = []
+    for test in TESTS:
+        split = test['id'].split('_')[:-1]
+        test_id_prefix = '_'.join(split)
+        if test_id_prefix not in unique_test_id:
+            unique_test_id.append(test_id_prefix)
+    unique_test_id.sort()
+    counter_dict_test_id_types = dict((t, 0) for t in unique_test_id)
+    counter_dict_test_id_types_all = dict((t, 0) for t in unique_test_id)
+
+    test_properties = ['id',
+                       'automated',
+                       'description',
+                       'peripherals',
+                       'host_test',
+                       'duration'] if cols is None else cols
+
+    # All tests status table print
+    pt = PrettyTable(test_properties)
+    for col in test_properties:
+        pt.align[col] = "l"
+    pt.align['duration'] = "r"
+
+    counter_all = 0
+    counter_automated = 0
+    pt.padding_width = 1 # One space between column edges and contents (default)
+
+    for test_id in sorted(TEST_MAP.keys()):
+        if platform_filter is not None:
+            # FIlter out platforms using regex
+            if re.search(platform_filter, test_id) is None:
+                continue
+        row = []
+        test = TEST_MAP[test_id]
+        split = test_id.split('_')[:-1]
+        test_id_prefix = '_'.join(split)
+
+        for col in test_properties:
+            col_value = test[col]
+            if type(test[col]) == ListType:
+                col_value = join_delim.join(test[col])
+            elif test[col] == None:
+                col_value = "-"
+
+            row.append(col_value)
+        if test['automated'] == True:
+            counter_dict_test_id_types[test_id_prefix] += 1
+            counter_automated += 1
+        pt.add_row(row)
+        # Update counters
+        counter_all += 1
+        counter_dict_test_id_types_all[test_id_prefix] += 1
+    result = pt.get_string()
+    result += "\n\n"
+
+    if result_summary and not platform_filter:
+        # Automation result summary
+        test_id_cols = ['automated', 'all', 'percent [%]', 'progress']
+        pt = PrettyTable(test_id_cols)
+        pt.align['automated'] = "r"
+        pt.align['all'] = "r"
+        pt.align['percent [%]'] = "r"
+
+        percent_progress = round(100.0 * counter_automated / float(counter_all), 1)
+        str_progress = progress_bar(percent_progress, 75)
+        pt.add_row([counter_automated, counter_all, percent_progress, str_progress])
+        result += "Automation coverage:\n"
+        result += pt.get_string()
+        result += "\n\n"
+
+        # Test automation coverage table print
+        test_id_cols = ['id', 'automated', 'all', 'percent [%]', 'progress']
+        pt = PrettyTable(test_id_cols)
+        pt.align['id'] = "l"
+        pt.align['automated'] = "r"
+        pt.align['all'] = "r"
+        pt.align['percent [%]'] = "r"
+        for unique_id in unique_test_id:
+            # print "\t\t%s: %d / %d" % (unique_id, counter_dict_test_id_types[unique_id], counter_dict_test_id_types_all[unique_id])
+            percent_progress = round(100.0 * counter_dict_test_id_types[unique_id] / float(counter_dict_test_id_types_all[unique_id]), 1)
+            str_progress = progress_bar(percent_progress, 75)
+            row = [unique_id,
+                   counter_dict_test_id_types[unique_id],
+                   counter_dict_test_id_types_all[unique_id],
+                   percent_progress,
+                   "[" + str_progress + "]"]
+            pt.add_row(row)
+        result += "Test automation coverage:\n"
+        result += pt.get_string()
+        result += "\n\n"
+    return result
+
+
+def progress_bar(percent_progress, saturation=0):
+    """ This function creates progress bar with optional simple saturation mark
+    """
+    step = int(percent_progress / 2)    # Scale by to (scale: 1 - 50)
+    str_progress = '#' * step + '.' * int(50 - step)
+    c = '!' if str_progress[38] == '.' else '|'
+    if saturation > 0:
+        saturation = saturation / 2
+        str_progress = str_progress[:saturation] + c + str_progress[saturation:]
+    return str_progress
+
+
+def singletest_in_cli_mode(single_test):
+    """ Runs SingleTestRunner object in CLI (Command line interface) mode
+
+        @return returns success code (0 == success) for building and running tests
+    """
+    start = time()
+    # Execute tests depending on options and filter applied
+    test_summary, shuffle_seed, test_summary_ext, test_suite_properties_ext, build_report, build_properties = single_test.execute()
+    elapsed_time = time() - start
+
+    # Human readable summary
+    if not single_test.opts_suppress_summary:
+        # prints well-formed summary with results (SQL table like)
+        print single_test.generate_test_summary(test_summary, shuffle_seed)
+    if single_test.opts_test_x_toolchain_summary:
+        # prints well-formed summary with results (SQL table like)
+        # table shows text x toolchain test result matrix
+        print single_test.generate_test_summary_by_target(test_summary, shuffle_seed)
+
+    print "Completed in %.2f sec"% (elapsed_time)
+    print
+    # Write summary of the builds
+
+    print_report_exporter = ReportExporter(ResultExporterType.PRINT, package="build")
+    status = print_report_exporter.report(build_report)
+
+    # Store extra reports in files
+    if single_test.opts_report_html_file_name:
+        # Export results in form of HTML report to separate file
+        report_exporter = ReportExporter(ResultExporterType.HTML)
+        report_exporter.report_to_file(test_summary_ext, single_test.opts_report_html_file_name, test_suite_properties=test_suite_properties_ext)
+    if single_test.opts_report_junit_file_name:
+        # Export results in form of JUnit XML report to separate file
+        report_exporter = ReportExporter(ResultExporterType.JUNIT)
+        report_exporter.report_to_file(test_summary_ext, single_test.opts_report_junit_file_name, test_suite_properties=test_suite_properties_ext)
+    if single_test.opts_report_build_file_name:
+        # Export build results as html report to sparate file
+        report_exporter = ReportExporter(ResultExporterType.JUNIT, package="build")
+        report_exporter.report_to_file(build_report, single_test.opts_report_build_file_name, test_suite_properties=build_properties)
+
+    # Returns True if no build failures of the test projects or their dependencies
+    return status
+
+class TestLogger():
+    """ Super-class for logging and printing ongoing events for test suite pass
+    """
+    def __init__(self, store_log=True):
+        """ We can control if logger actually stores log in memory
+            or just handled all log entries immediately
+        """
+        self.log = []
+        self.log_to_file = False
+        self.log_file_name = None
+        self.store_log = store_log
+
+        self.LogType = construct_enum(INFO='Info',
+                                      WARN='Warning',
+                                      NOTIF='Notification',
+                                      ERROR='Error',
+                                      EXCEPT='Exception')
+
+        self.LogToFileAttr = construct_enum(CREATE=1,    # Create or overwrite existing log file
+                                            APPEND=2)    # Append to existing log file
+
+    def log_line(self, LogType, log_line, timestamp=True, line_delim='\n'):
+        """ Log one line of text
+        """
+        log_timestamp = time()
+        log_entry = {'log_type' : LogType,
+                     'log_timestamp' : log_timestamp,
+                     'log_line' : log_line,
+                     '_future' : None
+        }
+        # Store log in memory
+        if self.store_log:
+            self.log.append(log_entry)
+        return log_entry
+
+
+class CLITestLogger(TestLogger):
+    """ Logger used with CLI (Command line interface) test suite. Logs on screen and to file if needed
+    """
+    def __init__(self, store_log=True, file_name=None):
+        TestLogger.__init__(self)
+        self.log_file_name = file_name
+        #self.TIMESTAMP_FORMAT = '%y-%m-%d %H:%M:%S' # Full date and time
+        self.TIMESTAMP_FORMAT = '%H:%M:%S' # Time only
+
+    def log_print(self, log_entry, timestamp=True):
+        """ Prints on screen formatted log entry
+        """
+        ts = log_entry['log_timestamp']
+        timestamp_str = datetime.datetime.fromtimestamp(ts).strftime("[%s] "% self.TIMESTAMP_FORMAT) if timestamp else ''
+        log_line_str = "%(log_type)s: %(log_line)s"% (log_entry)
+        return timestamp_str + log_line_str
+
+    def log_line(self, LogType, log_line, timestamp=True, line_delim='\n'):
+        """ Logs line, if log file output was specified log line will be appended
+            at the end of log file
+        """
+        log_entry = TestLogger.log_line(self, LogType, log_line)
+        log_line_str = self.log_print(log_entry, timestamp)
+        if self.log_file_name is not None:
+            try:
+                with open(self.log_file_name, 'a') as f:
+                    f.write(log_line_str + line_delim)
+            except IOError:
+                pass
+        return log_line_str
+
+
+def factory_db_logger(db_url):
+    """ Factory database driver depending on database type supplied in database connection string db_url
+    """
+    if db_url is not None:
+        from tools.test_mysql import MySQLDBAccess
+        connection_info = BaseDBAccess().parse_db_connection_string(db_url)
+        if connection_info is not None:
+            (db_type, username, password, host, db_name) = BaseDBAccess().parse_db_connection_string(db_url)
+            if db_type == 'mysql':
+                return MySQLDBAccess()
+    return None
+
+
+def detect_database_verbose(db_url):
+    """ uses verbose mode (prints) database detection sequence to check it database connection string is valid
+    """
+    result = BaseDBAccess().parse_db_connection_string(db_url)
+    if result is not None:
+        # Parsing passed
+        (db_type, username, password, host, db_name) = result
+        #print "DB type '%s', user name '%s', password '%s', host '%s', db name '%s'"% result
+        # Let's try to connect
+        db_ = factory_db_logger(db_url)
+        if db_ is not None:
+            print "Connecting to database '%s'..."% db_url,
+            db_.connect(host, username, password, db_name)
+            if db_.is_connected():
+                print "ok"
+                print "Detecting database..."
+                print db_.detect_database(verbose=True)
+                print "Disconnecting...",
+                db_.disconnect()
+                print "done"
+        else:
+            print "Database type '%s' unknown"% db_type
+    else:
+        print "Parse error: '%s' - DB Url error"% (db_url)
+
+
+def get_module_avail(module_name):
+    """ This function returns True if module_name is already impored module
+    """
+    return module_name in sys.modules.keys()
+
+
+def get_autodetected_MUTS_list(platform_name_filter=None):
+    oldError = None
+    if os.name == 'nt':
+        # Disable Windows error box temporarily
+        oldError = ctypes.windll.kernel32.SetErrorMode(1) #note that SEM_FAILCRITICALERRORS = 1
+
+    mbeds = mbed_lstools.create()
+    detect_muts_list = mbeds.list_mbeds()
+
+    if os.name == 'nt':
+        ctypes.windll.kernel32.SetErrorMode(oldError)
+
+    return get_autodetected_MUTS(detect_muts_list, platform_name_filter=platform_name_filter)
+
+def get_autodetected_MUTS(mbeds_list, platform_name_filter=None):
+    """ Function detects all connected to host mbed-enabled devices and generates artificial MUTS file.
+        If function fails to auto-detect devices it will return empty dictionary.
+
+        if get_module_avail('mbed_lstools'):
+            mbeds = mbed_lstools.create()
+            mbeds_list = mbeds.list_mbeds()
+
+        @param mbeds_list list of mbeds captured from mbed_lstools
+        @param platform_name You can filter 'platform_name' with list of filtered targets from 'platform_name_filter'
+    """
+    result = {}   # Should be in muts_all.json format
+    # Align mbeds_list from mbed_lstools to MUT file format (JSON dictionary with muts)
+    # mbeds_list = [{'platform_name': 'NUCLEO_F302R8', 'mount_point': 'E:', 'target_id': '07050200623B61125D5EF72A', 'serial_port': u'COM34'}]
+    index = 1
+    for mut in mbeds_list:
+        # Filter the MUTS if a filter is specified
+
+        if platform_name_filter and not mut['platform_name'] in platform_name_filter:
+            continue
+
+        # For mcu_unique - we are assigning 'platform_name_unique' value from  mbedls output (if its existing)
+        # if not we  are creating our own unique value (last few chars from platform's target_id).
+        m = {'mcu': mut['platform_name'],
+             'mcu_unique' : mut['platform_name_unique'] if 'platform_name_unique' in mut else "%s[%s]" % (mut['platform_name'], mut['target_id'][-4:]),
+             'port': mut['serial_port'],
+             'disk': mut['mount_point'],
+             'peripherals': []     # No peripheral detection
+             }
+        if index not in result:
+            result[index] = {}
+        result[index] = m
+        index += 1
+    return result
+
+
+def get_autodetected_TEST_SPEC(mbeds_list,
+                               use_default_toolchain=True,
+                               use_supported_toolchains=False,
+                               toolchain_filter=None,
+                               platform_name_filter=None):
+    """ Function detects all connected to host mbed-enabled devices and generates artificial test_spec file.
+        If function fails to auto-detect devices it will return empty 'targets' test_spec description.
+
+        use_default_toolchain - if True add default toolchain to test_spec
+        use_supported_toolchains - if True add all supported toolchains to test_spec
+        toolchain_filter - if [...list of toolchains...] add from all toolchains only those in filter to test_spec
+    """
+    result = {'targets': {} }
+
+    for mut in mbeds_list:
+        mcu = mut['mcu']
+        if platform_name_filter is None or (platform_name_filter and mut['mcu'] in platform_name_filter):
+            if mcu in TARGET_MAP:
+                default_toolchain = TARGET_MAP[mcu].default_toolchain
+                supported_toolchains = TARGET_MAP[mcu].supported_toolchains
+
+                # Decide which toolchains should be added to test specification toolchain pool for each target
+                toolchains = []
+                if use_default_toolchain:
+                    toolchains.append(default_toolchain)
+                if use_supported_toolchains:
+                    toolchains += supported_toolchains
+                if toolchain_filter is not None:
+                    all_toolchains = supported_toolchains + [default_toolchain]
+                    for toolchain in toolchain_filter.split(','):
+                        if toolchain in all_toolchains:
+                            toolchains.append(toolchain)
+
+                result['targets'][mcu] = list(set(toolchains))
+    return result
+
+
+def get_default_test_options_parser():
+    """ Get common test script options used by CLI, web services etc.
+    """
+    parser = optparse.OptionParser()
+    parser.add_option('-i', '--tests',
+                      dest='test_spec_filename',
+                      metavar="FILE",
+                      help='Points to file with test specification')
+
+    parser.add_option('-M', '--MUTS',
+                      dest='muts_spec_filename',
+                      metavar="FILE",
+                      help='Points to file with MUTs specification (overwrites settings.py and private_settings.py)')
+
+    parser.add_option("-j", "--jobs",
+                      dest='jobs',
+                      metavar="NUMBER",
+                      type="int",
+                      help="Define number of compilation jobs. Default value is 1")
+
+    if get_module_avail('mbed_lstools'):
+        # Additional features available when mbed_lstools is installed on host and imported
+        # mbed_lstools allow users to detect connected to host mbed-enabled devices
+        parser.add_option('', '--auto',
+                          dest='auto_detect',
+                          metavar=False,
+                          action="store_true",
+                          help='Use mbed-ls module to detect all connected mbed devices')
+
+        parser.add_option('', '--tc',
+                          dest='toolchains_filter',
+                          help="Toolchain filter for --auto option. Use toolchains names separated by comma, 'default' or 'all' to select toolchains")
+
+        test_scopes = ','.join(["'%s'" % n for n in get_available_oper_test_scopes()])
+        parser.add_option('', '--oper',
+                          dest='operability_checks',
+                          help='Perform interoperability tests between host and connected mbed devices. Available test scopes are: %s' % test_scopes)
+
+    parser.add_option('', '--clean',
+                      dest='clean',
+                      metavar=False,
+                      action="store_true",
+                      help='Clean the build directory')
+
+    parser.add_option('-P', '--only-peripherals',
+                      dest='test_only_peripheral',
+                      default=False,
+                      action="store_true",
+                      help='Test only peripheral declared for MUT and skip common tests')
+
+    parser.add_option('-C', '--only-commons',
+                      dest='test_only_common',
+                      default=False,
+                      action="store_true",
+                      help='Test only board internals. Skip perpherials tests and perform common tests')
+
+    parser.add_option('-n', '--test-by-names',
+                      dest='test_by_names',
+                      help='Runs only test enumerated it this switch. Use comma to separate test case names')
+
+    parser.add_option('-p', '--peripheral-by-names',
+                      dest='peripheral_by_names',
+                      help='Forces discovery of particular peripherals. Use comma to separate peripheral names')
+
+    copy_methods = host_tests_plugins.get_plugin_caps('CopyMethod')
+    copy_methods_str = "Plugin support: " + ', '.join(copy_methods)
+
+    parser.add_option('-c', '--copy-method',
+                      dest='copy_method',
+                      help="Select binary copy (flash) method. Default is Python's shutil.copy() method. %s"% copy_methods_str)
+
+    reset_methods = host_tests_plugins.get_plugin_caps('ResetMethod')
+    reset_methods_str = "Plugin support: " + ', '.join(reset_methods)
+
+    parser.add_option('-r', '--reset-type',
+                      dest='mut_reset_type',
+                      default=None,
+                      help='Extra reset method used to reset MUT by host test script. %s'% reset_methods_str)
+
+    parser.add_option('-g', '--goanna-for-tests',
+                      dest='goanna_for_tests',
+                      metavar=False,
+                      action="store_true",
+                      help='Run Goanna static analyse tool for tests. (Project will be rebuilded)')
+
+    parser.add_option('-G', '--goanna-for-sdk',
+                      dest='goanna_for_mbed_sdk',
+                      metavar=False,
+                      action="store_true",
+                      help='Run Goanna static analyse tool for mbed SDK (Project will be rebuilded)')
+
+    parser.add_option('-s', '--suppress-summary',
+                      dest='suppress_summary',
+                      default=False,
+                      action="store_true",
+                      help='Suppresses display of wellformatted table with test results')
+
+    parser.add_option('-t', '--test-summary',
+                      dest='test_x_toolchain_summary',
+                      default=False,
+                      action="store_true",
+                      help='Displays wellformatted table with test x toolchain test result per target')
+
+    parser.add_option('-A', '--test-automation-report',
+                      dest='test_automation_report',
+                      default=False,
+                      action="store_true",
+                      help='Prints information about all tests and exits')
+
+    parser.add_option('-R', '--test-case-report',
+                      dest='test_case_report',
+                      default=False,
+                      action="store_true",
+                      help='Prints information about all test cases and exits')
+
+    parser.add_option("-S", "--supported-toolchains",
+                      action="store_true",
+                      dest="supported_toolchains",
+                      default=False,
+                      help="Displays supported matrix of MCUs and toolchains")
+
+    parser.add_option("-O", "--only-build",
+                      action="store_true",
+                      dest="only_build_tests",
+                      default=False,
+                      help="Only build tests, skips actual test procedures (flashing etc.)")
+
+    parser.add_option('', '--parallel',
+                      dest='parallel_test_exec',
+                      default=False,
+                      action="store_true",
+                      help='Experimental, you execute test runners for connected to your host MUTs in parallel (speeds up test result collection)')
+
+    parser.add_option('', '--config',
+                      dest='verbose_test_configuration_only',
+                      default=False,
+                      action="store_true",
+                      help='Displays full test specification and MUTs configration and exits')
+
+    parser.add_option('', '--loops',
+                      dest='test_loops_list',
+                      help='Set no. of loops per test. Format: TEST_1=1,TEST_2=2,TEST_3=3')
+
+    parser.add_option('', '--global-loops',
+                      dest='test_global_loops_value',
+                      help='Set global number of test loops per test. Default value is set 1')
+
+    parser.add_option('', '--consolidate-waterfall',
+                      dest='consolidate_waterfall_test',
+                      default=False,
+                      action="store_true",
+                      help='Used with --waterfall option. Adds only one test to report reflecting outcome of waterfall test.')
+
+    parser.add_option('-W', '--waterfall',
+                      dest='waterfall_test',
+                      default=False,
+                      action="store_true",
+                      help='Used with --loops or --global-loops options. Tests until OK result occurs and assumes test passed')
+
+    parser.add_option('-N', '--firmware-name',
+                      dest='firmware_global_name',
+                      help='Set global name for all produced projects. Note, proper file extension will be added by buid scripts')
+
+    parser.add_option('-u', '--shuffle',
+                      dest='shuffle_test_order',
+                      default=False,
+                      action="store_true",
+                      help='Shuffles test execution order')
+
+    parser.add_option('', '--shuffle-seed',
+                      dest='shuffle_test_seed',
+                      default=None,
+                      help='Shuffle seed (If you want to reproduce your shuffle order please use seed provided in test summary)')
+
+    parser.add_option('-f', '--filter',
+                      dest='general_filter_regex',
+                      default=None,
+                      help='For some commands you can use filter to filter out results')
+
+    parser.add_option('', '--inc-timeout',
+                      dest='extend_test_timeout',
+                      metavar="NUMBER",
+                      type="int",
+                      help='You can increase global timeout for each test by specifying additional test timeout in seconds')
+
+    parser.add_option('', '--db',
+                      dest='db_url',
+                      help='This specifies what database test suite uses to store its state. To pass DB connection info use database connection string. Example: \'mysql://username:password@127.0.0.1/db_name\'')
+
+    parser.add_option('-l', '--log',
+                      dest='log_file_name',
+                      help='Log events to external file (note not all console entries may be visible in log file)')
+
+    parser.add_option('', '--report-html',
+                      dest='report_html_file_name',
+                      help='You can log test suite results in form of HTML report')
+
+    parser.add_option('', '--report-junit',
+                      dest='report_junit_file_name',
+                      help='You can log test suite results in form of JUnit compliant XML report')
+
+    parser.add_option("", "--report-build",
+                      dest="report_build_file_name",
+                      help="Output the build results to a junit xml file")
+
+    parser.add_option('', '--verbose-skipped',
+                      dest='verbose_skipped_tests',
+                      default=False,
+                      action="store_true",
+                      help='Prints some extra information about skipped tests')
+
+    parser.add_option('-V', '--verbose-test-result',
+                      dest='verbose_test_result_only',
+                      default=False,
+                      action="store_true",
+                      help='Prints test serial output')
+
+    parser.add_option('-v', '--verbose',
+                      dest='verbose',
+                      default=False,
+                      action="store_true",
+                      help='Verbose mode (prints some extra information)')
+
+    parser.add_option('', '--version',
+                      dest='version',
+                      default=False,
+                      action="store_true",
+                      help='Prints script version and exits')
+    return parser
+
+def test_path_to_name(path):
+    """Change all slashes in a path into hyphens
+    This creates a unique cross-platform test name based on the path
+    This can eventually be overriden by a to-be-determined meta-data mechanism"""
+    name_parts = []
+    head, tail = os.path.split(path)
+    while (tail and tail != "."):
+        name_parts.insert(0, tail)
+        head, tail = os.path.split(head)
+    
+    return "-".join(name_parts)
+
+def find_tests(base_dir):
+    """Given any directory, walk through the subdirectories and find all tests"""
+    
+    def find_tests_in_tests_directory(directory):
+        """Given a 'TESTS' directory, return a dictionary of test names and test paths.
+        The formate of the dictionary is {"test-name": "./path/to/test"}"""
+        tests = {}
+        
+        for d in os.listdir(directory):
+            # dir name host_tests is reserved for host python scripts.
+            if d != "host_tests":
+                # Loop on test case directories
+                for td in os.listdir(os.path.join(directory, d)):
+                    # Add test case to the results if it is a directory
+                    test_case_path = os.path.join(directory, d, td)
+                    if os.path.isdir(test_case_path):
+                        tests[test_path_to_name(test_case_path)] = test_case_path
+        
+        return tests
+    
+    tests_path = 'TESTS'
+    
+    # Determine if "base_dir" is already a "TESTS" directory
+    _, top_folder = os.path.split(base_dir)
+    
+    if top_folder == tests_path:
+        # Already pointing at a "TESTS" directory
+        return find_tests_in_tests_directory(base_dir)
+    else:
+        # Not pointing at a "TESTS" directory, so go find one!
+        tests = {}
+        
+        for root, dirs, files in os.walk(base_dir):
+            # Don't search build directories
+            if '.build' in dirs:
+                dirs.remove('.build')
+            
+            # If a "TESTS" directory is found, find the tests inside of it
+            if tests_path in dirs:
+                # Remove it from the directory walk
+                dirs.remove(tests_path)
+                
+                # Get the tests inside of the "TESTS" directory
+                new_tests = find_tests_in_tests_directory(os.path.join(root, tests_path))
+                if new_tests:
+                    tests.update(new_tests)
+        
+        return tests
+    
+def print_tests(tests, format="list"):
+    """Given a dictionary of tests (as returned from "find_tests"), print them
+    in the specified format"""
+    if format == "list":
+        for test_name, test_path in tests.iteritems():
+            print "Test Case:"
+            print "    Name: %s" % test_name
+            print "    Path: %s" % test_path
+    elif format == "json":
+        print json.dumps(tests, indent=2)
+    else:
+        print "Unknown format '%s'" % format
+        sys.exit(1)
+
+def build_tests(tests, base_source_paths, build_path, target, toolchain_name,
+        options=None, clean=False, notify=None, verbose=False, jobs=1,
+        silent=False, report=None, properties=None):
+    """Given the data structure from 'find_tests' and the typical build parameters,
+    build all the tests and return a test build data structure"""
+    
+    test_build = {
+        "platform": target.name,
+        "toolchain": toolchain_name,
+        "base_path": build_path,
+        "baud_rate": 9600,
+        "binary_type": "bootable",
+        "tests": {}
+    }
+    
+    for test_name, test_path in tests.iteritems():
+        test_build_path = os.path.join(build_path, test_path)
+        src_path = base_source_paths + [test_path]
+        bin_file = build_project(src_path, test_build_path, target, toolchain_name,
+                                 options=options,
+                                 jobs=jobs,
+                                 clean=clean,
+                                 name=test_name,
+                                 report=report,
+                                 properties=properties,
+                                 verbose=verbose)
+        
+        # If a clean build was carried out last time, disable it for the next build.
+        # Otherwise the previously built test will be deleted.
+        if clean:
+            clean = False
+        
+        # Normalize the path
+        bin_file = os.path.normpath(bin_file)
+        
+        test_build['tests'][test_name] = {
+            "binaries": [
+                {
+                    "path": bin_file
+                }
+            ]
+        }
+        
+        print 'Image: %s'% bin_file
+    
+    test_builds = {}
+    test_builds["%s-%s" % (target.name, toolchain_name)] = test_build
+    
+    
+    return test_builds
+    
+
+def test_spec_from_test_build(test_builds):
+    return {
+        "builds": test_builds
+    }
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_db.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,165 @@
+"""
+mbed SDK
+Copyright (c) 2011-2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+"""
+
+import re
+import json
+
+
+class BaseDBAccess():
+    """ Class used to connect with test database and store test results
+    """
+    def __init__(self):
+        self.db_object = None
+        self.db_type = None
+        # Connection credentials
+        self.host = None
+        self.user = None
+        self.passwd = None
+        self.db = None
+
+        # Test Suite DB scheme (table names)
+        self.TABLE_BUILD_ID = 'mtest_build_id'
+        self.TABLE_BUILD_ID_STATUS = 'mtest_build_id_status'
+        self.TABLE_BUILD_ID_TYPE = 'mtest_build_id_type'
+        self.TABLE_TARGET = 'mtest_target'
+        self.TABLE_TEST_ENTRY = 'mtest_test_entry'
+        self.TABLE_TEST_ID = 'mtest_test_id'
+        self.TABLE_TEST_RESULT = 'mtest_test_result'
+        self.TABLE_TEST_TYPE = 'mtest_test_type'
+        self.TABLE_TOOLCHAIN = 'mtest_toolchain'
+        # Build ID status PKs
+        self.BUILD_ID_STATUS_STARTED = 1 # Started
+        self.BUILD_ID_STATUS_IN_PROGRESS = 2 # In Progress
+        self.BUILD_ID_STATUS_COMPLETED = 3 #Completed
+        self.BUILD_ID_STATUS_FAILED = 4 # Failed
+        # Build ID type PKs
+        self.BUILD_ID_TYPE_TEST = 1 # Test
+        self.BUILD_ID_TYPE_BUILD_ONLY = 2 # Build Only
+
+    def get_hostname(self):
+        """ Useful when creating build_id in database
+            Function returns (hostname, uname) which can be used as (build_id_name, build_id_desc)
+        """
+        # Get hostname from socket
+        import socket
+        hostname = socket.gethostbyaddr(socket.gethostname())[0]
+        # Get uname from platform resources
+        import platform
+        uname = json.dumps(platform.uname())
+        return (hostname, uname)
+
+    def get_db_type(self):
+        """ Returns database type. E.g. 'mysql', 'sqlLite' etc.
+        """
+        return self.db_type
+
+    def detect_database(self, verbose=False):
+        """ detect database and return VERION data structure or string (verbose=True)
+        """
+        return None
+
+    def parse_db_connection_string(self, str):
+        """ Parsing SQL DB connection string. String should contain:
+            - DB Name, user name, password, URL (DB host), name
+            Function should return tuple with parsed (db_type, username, password, host, db_name) or None if error
+
+            (db_type, username, password, host, db_name) = self.parse_db_connection_string(db_url)
+
+            E.g. connection string: 'mysql://username:password@127.0.0.1/db_name'
+        """
+        result = None
+        if type(str) == type(''):
+            PATTERN = '^([\w]+)://([\w]+):([\w]*)@(.*)/([\w]+)'
+            result = re.match(PATTERN, str)
+            if result is not None:
+                result = result.groups()    # Tuple (db_name, host, user, passwd, db)
+        return result # (db_type, username, password, host, db_name)
+
+    def is_connected(self):
+        """ Returns True if we are connected to database
+        """
+        pass
+
+    def connect(self, host, user, passwd, db):
+        """ Connects to DB and returns DB object
+        """
+        pass
+
+    def connect_url(self, db_url):
+        """ Connects to database using db_url (database url parsing),
+            store host, username, password, db_name
+        """
+        pass
+
+    def reconnect(self):
+        """ Reconnects to DB and returns DB object using stored host name,
+            database name and credentials (user name and password)
+        """
+        pass
+
+    def disconnect(self):
+        """ Close DB connection
+        """
+        pass
+
+    def escape_string(self, str):
+        """ Escapes string so it can be put in SQL query between quotes
+        """
+        pass
+
+    def select_all(self, query):
+        """ Execute SELECT query and get all results
+        """
+        pass
+
+    def insert(self, query, commit=True):
+        """ Execute INSERT query, define if you want to commit
+        """
+        pass
+
+    def get_next_build_id(self, name, desc='', location='', type=None, status=None):
+        """ Insert new build_id (DB unique build like ID number to send all test results)
+        """
+        pass
+
+    def get_table_entry_pk(self, table, column, value, update_db=True):
+        """ Checks for entries in tables with two columns (<TABLE_NAME>_pk, <column>)
+            If update_db is True updates table entry if value in specified column doesn't exist
+        """
+        pass
+
+    def update_table_entry(self, table, column, value):
+        """ Updates table entry if value in specified column doesn't exist
+            Locks table to perform atomic read + update
+        """
+        pass
+
+    def update_build_id_info(self, build_id, **kw):
+        """ Update additional data inside build_id table
+            Examples:
+            db.update_build_is(build_id, _status_fk=self.BUILD_ID_STATUS_COMPLETED, _shuffle_seed=0.0123456789):
+        """
+        pass
+
+    def insert_test_entry(self, build_id, target, toolchain, test_type, test_id, test_result, test_time, test_timeout, test_loop, test_extra=''):
+        """ Inserts test result entry to database. All checks regarding existing
+            toolchain names in DB are performed.
+            If some data is missing DB will be updated
+        """
+        pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_exporters.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,342 @@
+"""
+mbed SDK
+Copyright (c) 2011-2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.wirkus@arm.com>
+"""
+
+from tools.utils import construct_enum
+
+
+ResultExporterType = construct_enum(HTML='Html_Exporter',
+                                    JUNIT='JUnit_Exporter',
+                                    JUNIT_OPER='JUnit_Exporter_Interoperability',
+                                    BUILD='Build_Exporter',
+                                    PRINT='Print_Exporter')
+
+
+class ReportExporter():
+    """ Class exports extended test result Python data structure to
+        different formats like HTML, JUnit XML.
+
+    Parameter 'test_result_ext' format:
+
+    u'uARM': {   u'LPC1768': {   'MBED_2': {   0: {   'copy_method': 'shutils.copy()',
+                                                      'duration': 20,
+                                                      'elapsed_time': 1.7929999828338623,
+                                                      'output': 'Host test instrumentation on ...\r\n',
+                                                      'result': 'OK',
+                                                      'target_name': u'LPC1768',
+                                                      'description': 'stdio',
+                                                      'id': u'MBED_2',
+                                                      'toolchain_name': u'uARM'}},
+    """
+    CSS_STYLE = """<style>
+                   .name{
+                    border: 1px solid;
+                    border-radius: 25px;
+                    width: 100px;
+                   }
+                   .tooltip{
+                       position:absolute;
+                       background-color: #F5DA81;
+                       display:none;
+                   }
+                   </style>
+                """
+
+    JAVASCRIPT = """
+                 <script type="text/javascript">
+                 function show (elem) {
+                     elem.style.display = "block";
+                 }
+                 function hide (elem) {
+                     elem.style.display = "";
+                 }
+                 </script>
+                 """
+
+    def __init__(self, result_exporter_type, package="test"):
+        self.result_exporter_type = result_exporter_type
+        self.package = package
+
+    def report(self, test_summary_ext, test_suite_properties=None):
+        """ Invokes report depending on exporter_type set in constructor
+        """
+        if self.result_exporter_type == ResultExporterType.HTML:
+            # HTML exporter
+            return self.exporter_html(test_summary_ext, test_suite_properties)
+        elif self.result_exporter_type == ResultExporterType.JUNIT:
+            # JUNIT exporter for results from test suite
+            return self.exporter_junit(test_summary_ext, test_suite_properties)
+        elif self.result_exporter_type == ResultExporterType.JUNIT_OPER:
+            # JUNIT exporter for interoperability test
+            return self.exporter_junit_ioper(test_summary_ext, test_suite_properties)
+        elif self.result_exporter_type == ResultExporterType.PRINT:
+            # JUNIT exporter for interoperability test
+            return self.exporter_print(test_summary_ext)
+        return None
+
+    def report_to_file(self, test_summary_ext, file_name, test_suite_properties=None):
+        """ Stores report to specified file
+        """
+        report = self.report(test_summary_ext, test_suite_properties=test_suite_properties)
+        self.write_to_file(report, file_name)
+
+    def write_to_file(self, report, file_name):
+        if report is not None:
+            with open(file_name, 'w') as f:
+                f.write(report)
+
+    def get_tooltip_name(self, toolchain, target, test_id, loop_no):
+        """ Generate simple unique tool-tip name which can be used.
+            For example as HTML <div> section id attribute.
+        """
+        return "target_test_%s_%s_%s_%s"% (toolchain.lower(), target.lower(), test_id.lower(), loop_no)
+
+    def get_result_div_sections(self, test, test_no):
+        """ Generates separate <DIV> sections which contains test results output.
+        """
+
+        RESULT_COLORS = {'OK': 'LimeGreen',
+                         'FAIL': 'Orange',
+                         'ERROR': 'LightCoral',
+                         'OTHER': 'LightGray',
+                        }
+
+        tooltip_name = self.get_tooltip_name(test['toolchain_name'], test['target_name'], test['id'], test_no)
+        background_color = RESULT_COLORS[test['result'] if test['result'] in RESULT_COLORS else 'OTHER']
+        result_div_style = "background-color: %s"% background_color
+
+        result = """<div class="name" style="%s" onmouseover="show(%s)" onmouseout="hide(%s)">
+                       <center>%s</center>
+                       <div class = "tooltip" id= "%s">
+                       <b>%s</b><br />
+                       <hr />
+                       <b>%s</b> in <b>%.2f sec</b><br />
+                       <hr />
+                       <small>
+                       %s
+                       </small>
+                       </div>
+                    </div>
+                 """% (result_div_style,
+                       tooltip_name,
+                       tooltip_name,
+                       test['result'],
+                       tooltip_name,
+                       test['target_name_unique'],
+                       test['description'],
+                       test['elapsed_time'],
+                       test['output'].replace('\n', '<br />'))
+        return result
+
+    def get_result_tree(self, test_results):
+        """ If test was run in a loop (we got few results from the same test)
+            we will show it in a column to see all results.
+            This function produces HTML table with corresponding results.
+        """
+        result = ''
+        for i, test_result in enumerate(test_results):
+            result += '<table>'
+            test_ids = sorted(test_result.keys())
+            for test_no in test_ids:
+                test = test_result[test_no]
+                result += """<tr>
+                                 <td valign="top">%s</td>
+                             </tr>"""% self.get_result_div_sections(test, "%d_%d" % (test_no, i))
+            result += '</table>'
+        return result
+
+    def get_all_unique_test_ids(self, test_result_ext):
+        """ Gets all unique test ids from all ran tests.
+            We need this to create complete list of all test ran.
+        """
+        result = []
+        targets = test_result_ext.keys()
+        for target in targets:
+            toolchains = test_result_ext[target].keys()
+            for toolchain in toolchains:
+                tests = test_result_ext[target][toolchain].keys()
+                result.extend(tests)
+        return sorted(list(set(result)))
+
+    #
+    # Exporters functions
+    #
+
+    def exporter_html(self, test_result_ext, test_suite_properties=None):
+        """ Export test results in proprietary HTML format.
+        """
+        result = """<html>
+                    <head>
+                        <title>mbed SDK test suite test result report</title>
+                        %s
+                        %s
+                    </head>
+                    <body>
+                 """% (self.CSS_STYLE, self.JAVASCRIPT)
+
+        unique_test_ids = self.get_all_unique_test_ids(test_result_ext)
+        targets = sorted(test_result_ext.keys())
+        result += '<table><tr>'
+        for target in targets:
+            toolchains = sorted(test_result_ext[target].keys())
+            for toolchain in toolchains:
+                result += '<td></td>'
+                result += '<td></td>'
+
+                tests = sorted(test_result_ext[target][toolchain].keys())
+                for test in unique_test_ids:
+                    result += """<td align="center">%s</td>"""% test
+                result += """</tr>
+                              <tr>
+                              <td valign="center">%s</td>
+                              <td valign="center"><b>%s</b></td>
+                          """% (toolchain, target)
+
+                for test in unique_test_ids:
+                    test_result = self.get_result_tree(test_result_ext[target][toolchain][test]) if test in tests else ''
+                    result += '<td>%s</td>'% (test_result)
+
+                result += '</tr>'
+        result += '</table>'
+        result += '</body></html>'
+        return result
+
+    def exporter_junit_ioper(self, test_result_ext, test_suite_properties=None):
+        from junit_xml import TestSuite, TestCase
+        test_suites = []
+        test_cases = []
+
+        for platform in sorted(test_result_ext.keys()):
+            # {platform : ['Platform', 'Result', 'Scope', 'Description'])
+            test_cases = []
+            for tr_result in test_result_ext[platform]:
+                result, name, scope, description = tr_result
+
+                classname = 'test.ioper.%s.%s.%s' % (platform, name, scope)
+                elapsed_sec = 0
+                _stdout = description
+                _stderr = ''
+                # Test case
+                tc = TestCase(name, classname, elapsed_sec, _stdout, _stderr)
+                # Test case extra failure / error info
+                if result == 'FAIL':
+                    tc.add_failure_info(description, _stdout)
+                elif result == 'ERROR':
+                    tc.add_error_info(description, _stdout)
+                elif result == 'SKIP' or result == 'NOT_SUPPORTED':
+                    tc.add_skipped_info(description, _stdout)
+
+                test_cases.append(tc)
+            ts = TestSuite("test.suite.ioper.%s" % (platform), test_cases)
+            test_suites.append(ts)
+        return TestSuite.to_xml_string(test_suites)
+
+    def exporter_junit(self, test_result_ext, test_suite_properties=None):
+        """ Export test results in JUnit XML compliant format
+        """
+        from junit_xml import TestSuite, TestCase
+        test_suites = []
+        test_cases = []
+
+        targets = sorted(test_result_ext.keys())
+        for target in targets:
+            toolchains = sorted(test_result_ext[target].keys())
+            for toolchain in toolchains:
+                test_cases = []
+                tests = sorted(test_result_ext[target][toolchain].keys())
+                for test in tests:
+                    test_results = test_result_ext[target][toolchain][test]
+                    for test_res in test_results:
+                        test_ids = sorted(test_res.keys())
+                        for test_no in test_ids:
+                            test_result = test_res[test_no]
+                            name = test_result['description']
+                            classname = '%s.%s.%s.%s'% (self.package, target, toolchain, test_result['id'])
+                            elapsed_sec = test_result['elapsed_time']
+                            _stdout = test_result['output']
+
+                            if 'target_name_unique' in test_result:
+                                _stderr = test_result['target_name_unique']
+                            else:
+                                _stderr = test_result['target_name']
+
+                            # Test case
+                            tc = TestCase(name, classname, elapsed_sec, _stdout, _stderr)
+
+                            # Test case extra failure / error info
+                            message = test_result['result']
+                            if test_result['result'] == 'FAIL':
+                                tc.add_failure_info(message, _stdout)
+                            elif test_result['result'] == 'SKIP' or test_result["result"] == 'NOT_SUPPORTED':
+                                tc.add_skipped_info(message, _stdout)
+                            elif test_result['result'] != 'OK':
+                                tc.add_error_info(message, _stdout)
+
+                            test_cases.append(tc)
+
+                ts = TestSuite("test.suite.%s.%s"% (target, toolchain), test_cases, properties=test_suite_properties[target][toolchain])
+                test_suites.append(ts)
+        return TestSuite.to_xml_string(test_suites)
+
+    def exporter_print_helper(self, array):
+        for item in array:
+            print "  * %s::%s::%s" % (item["target_name"], item["toolchain_name"], item["id"])
+
+    def exporter_print(self, test_result_ext):
+        """ Export test results in print format.
+        """
+        failures = []
+        skips = []
+        successes = []
+
+        unique_test_ids = self.get_all_unique_test_ids(test_result_ext)
+        targets = sorted(test_result_ext.keys())
+
+        for target in targets:
+            toolchains = sorted(test_result_ext[target].keys())
+            for toolchain in toolchains:
+                tests = sorted(test_result_ext[target][toolchain].keys())
+                for test in tests:
+                    test_runs = test_result_ext[target][toolchain][test]
+                    for test_runner in test_runs:
+                        #test_run = test_result_ext[target][toolchain][test][test_run_number][0]
+                        test_run = test_runner[0]
+
+                        if test_run["result"] == "FAIL":
+                            failures.append(test_run)
+                        elif test_run["result"] == "SKIP" or test_run["result"] == "NOT_SUPPORTED":
+                            skips.append(test_run)
+                        elif test_run["result"] == "OK":
+                            successes.append(test_run)
+                        else:
+                            raise Exception("Unhandled result type: %s" % (test_run["result"]))
+
+        if successes:
+            print "\n\nBuild successes:"
+            self.exporter_print_helper(successes)
+
+        if skips:
+            print "\n\nBuild skips:"
+            self.exporter_print_helper(skips)
+
+        if failures:
+            print "\n\nBuild failures:"
+            self.exporter_print_helper(failures)
+            return False
+        else:
+            return True
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_mysql.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,271 @@
+"""
+mbed SDK
+Copyright (c) 2011-2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+"""
+
+import re
+import MySQLdb as mdb
+
+# Imports from TEST API
+from tools.test_db import BaseDBAccess
+
+
+class MySQLDBAccess(BaseDBAccess):
+    """ Wrapper for MySQL DB access for common test suite interface
+    """
+    def __init__(self):
+        BaseDBAccess.__init__(self)
+        self.DB_TYPE = 'mysql'
+
+    def detect_database(self, verbose=False):
+        """ detect database and return VERION data structure or string (verbose=True)
+        """
+        query = 'SHOW VARIABLES LIKE "%version%"'
+        rows = self.select_all(query)
+        if verbose:
+            result = []
+            for row in rows:
+                result.append("\t%s: %s"% (row['Variable_name'], row['Value']))
+            result = "\n".join(result)
+        else:
+            result = rows
+        return result
+
+    def parse_db_connection_string(self, str):
+        """ Parsing SQL DB connection string. String should contain:
+            - DB Name, user name, password, URL (DB host), name
+            Function should return tuple with parsed (host, user, passwd, db) or None if error
+            E.g. connection string: 'mysql://username:password@127.0.0.1/db_name'
+        """
+        result = BaseDBAccess().parse_db_connection_string(str)
+        if result is not None:
+            (db_type, username, password, host, db_name) = result
+            if db_type != 'mysql':
+                result = None
+        return result
+
+    def is_connected(self):
+        """ Returns True if we are connected to database
+        """
+        return self.db_object is not None
+
+    def connect(self, host, user, passwd, db):
+        """ Connects to DB and returns DB object
+        """
+        try:
+            self.db_object = mdb.connect(host=host, user=user, passwd=passwd, db=db)
+            # Let's remember connection credentials
+            self.db_type = self.DB_TYPE
+            self.host = host
+            self.user = user
+            self.passwd = passwd
+            self.db = db
+        except mdb.Error, e:
+            print "Error %d: %s"% (e.args[0], e.args[1])
+            self.db_object = None
+            self.db_type = None
+            self.host = None
+            self.user = None
+            self.passwd = None
+            self.db = None
+
+    def connect_url(self, db_url):
+        """ Connects to database using db_url (database url parsing),
+            store host, username, password, db_name
+        """
+        result = self.parse_db_connection_string(db_url)
+        if result is not None:
+            (db_type, username, password, host, db_name) = result
+            if db_type == self.DB_TYPE:
+                self.connect(host, username, password, db_name)
+
+    def reconnect(self):
+        """ Reconnects to DB and returns DB object using stored host name,
+            database name and credentials (user name and password)
+        """
+        self.connect(self.host, self.user, self.passwd, self.db)
+
+    def disconnect(self):
+        """ Close DB connection
+        """
+        if self.db_object:
+            self.db_object.close()
+        self.db_object = None
+        self.db_type = None
+
+    def escape_string(self, str):
+        """ Escapes string so it can be put in SQL query between quotes
+        """
+        con = self.db_object
+        result = con.escape_string(str)
+        return result if result else ''
+
+    def select_all(self, query):
+        """ Execute SELECT query and get all results
+        """
+        con = self.db_object
+        cur = con.cursor(mdb.cursors.DictCursor)
+        cur.execute(query)
+        rows = cur.fetchall()
+        return rows
+
+    def insert(self, query, commit=True):
+        """ Execute INSERT query, define if you want to commit
+        """
+        con = self.db_object
+        cur = con.cursor()
+        cur.execute(query)
+        if commit:
+            con.commit()
+        return cur.lastrowid
+
+    def get_next_build_id(self, name, desc='', location='', type=None, status=None):
+        """ Insert new build_id (DB unique build like ID number to send all test results)
+        """
+        if status is None:
+            status = self.BUILD_ID_STATUS_STARTED
+
+        if type is None:
+            type = self.BUILD_ID_TYPE_TEST
+
+        query = """INSERT INTO `%s` (%s_name, %s_desc, %s_location, %s_type_fk, %s_status_fk)
+                        VALUES ('%s', '%s', '%s', %d, %d)"""% (self.TABLE_BUILD_ID,
+                                                               self.TABLE_BUILD_ID,
+                                                               self.TABLE_BUILD_ID,
+                                                               self.TABLE_BUILD_ID,
+                                                               self.TABLE_BUILD_ID,
+                                                               self.TABLE_BUILD_ID,
+                                                               self.escape_string(name),
+                                                               self.escape_string(desc),
+                                                               self.escape_string(location),
+                                                               type,
+                                                               status)
+        index = self.insert(query) # Provide inserted record PK
+        return index
+
+    def get_table_entry_pk(self, table, column, value, update_db=True):
+        """ Checks for entries in tables with two columns (<TABLE_NAME>_pk, <column>)
+            If update_db is True updates table entry if value in specified column doesn't exist
+        """
+        # TODO: table buffering
+        result = None
+        table_pk = '%s_pk'% table
+        query = """SELECT `%s`
+                     FROM `%s`
+                    WHERE `%s`='%s'"""% (table_pk,
+                                         table,
+                                         column,
+                                         self.escape_string(value))
+        rows = self.select_all(query)
+        if len(rows) == 1:
+            result = rows[0][table_pk]
+        elif len(rows) == 0 and update_db:
+            # Update DB with new value
+            result = self.update_table_entry(table, column, value)
+        return result
+
+    def update_table_entry(self, table, column, value):
+        """ Updates table entry if value in specified column doesn't exist
+            Locks table to perform atomic read + update
+        """
+        result = None
+        con = self.db_object
+        cur = con.cursor()
+        cur.execute("LOCK TABLES `%s` WRITE"% table)
+        table_pk = '%s_pk'% table
+        query = """SELECT `%s`
+                     FROM `%s`
+                    WHERE `%s`='%s'"""% (table_pk,
+                                         table,
+                                         column,
+                                         self.escape_string(value))
+        cur.execute(query)
+        rows = cur.fetchall()
+        if len(rows) == 0:
+            query = """INSERT INTO `%s` (%s)
+                            VALUES ('%s')"""% (table,
+                                               column,
+                                               self.escape_string(value))
+            cur.execute(query)
+            result = cur.lastrowid
+        con.commit()
+        cur.execute("UNLOCK TABLES")
+        return result
+
+    def update_build_id_info(self, build_id, **kw):
+        """ Update additional data inside build_id table
+            Examples:
+            db.update_build_id_info(build_id, _status_fk=self.BUILD_ID_STATUS_COMPLETED, _shuffle_seed=0.0123456789):
+        """
+        if len(kw):
+            con = self.db_object
+            cur = con.cursor()
+            # Prepare UPDATE query
+            # ["`mtest_build_id_pk`=[value-1]", "`mtest_build_id_name`=[value-2]", "`mtest_build_id_desc`=[value-3]"]
+            set_list = []
+            for col_sufix in kw:
+                assign_str = "`%s%s`='%s'"% (self.TABLE_BUILD_ID, col_sufix, self.escape_string(str(kw[col_sufix])))
+                set_list.append(assign_str)
+            set_str = ', '.join(set_list)
+            query = """UPDATE `%s`
+                          SET %s
+                        WHERE `mtest_build_id_pk`=%d"""% (self.TABLE_BUILD_ID,
+                                                          set_str,
+                                                          build_id)
+            cur.execute(query)
+            con.commit()
+
+    def insert_test_entry(self, build_id, target, toolchain, test_type, test_id, test_result, test_output, test_time, test_timeout, test_loop, test_extra=''):
+        """ Inserts test result entry to database. All checks regarding existing
+            toolchain names in DB are performed.
+            If some data is missing DB will be updated
+        """
+        # Get all table FK and if entry is new try to insert new value
+        target_fk = self.get_table_entry_pk(self.TABLE_TARGET, self.TABLE_TARGET + '_name', target)
+        toolchain_fk = self.get_table_entry_pk(self.TABLE_TOOLCHAIN, self.TABLE_TOOLCHAIN + '_name', toolchain)
+        test_type_fk = self.get_table_entry_pk(self.TABLE_TEST_TYPE, self.TABLE_TEST_TYPE + '_name', test_type)
+        test_id_fk = self.get_table_entry_pk(self.TABLE_TEST_ID, self.TABLE_TEST_ID + '_name', test_id)
+        test_result_fk = self.get_table_entry_pk(self.TABLE_TEST_RESULT, self.TABLE_TEST_RESULT + '_name', test_result)
+
+        con = self.db_object
+        cur = con.cursor()
+
+        query = """ INSERT INTO `%s` (`mtest_build_id_fk`,
+                                      `mtest_target_fk`,
+                                      `mtest_toolchain_fk`,
+                                      `mtest_test_type_fk`,
+                                      `mtest_test_id_fk`,
+                                      `mtest_test_result_fk`,
+                                      `mtest_test_output`,
+                                      `mtest_test_time`,
+                                      `mtest_test_timeout`,
+                                      `mtest_test_loop_no`,
+                                      `mtest_test_result_extra`)
+                         VALUES (%d, %d, %d, %d, %d, %d, '%s', %.2f, %.2f, %d, '%s')"""% (self.TABLE_TEST_ENTRY,
+                                                                                          build_id,
+                                                                                          target_fk,
+                                                                                          toolchain_fk,
+                                                                                          test_type_fk,
+                                                                                          test_id_fk,
+                                                                                          test_result_fk,
+                                                                                          self.escape_string(test_output),
+                                                                                          test_time,
+                                                                                          test_timeout,
+                                                                                          test_loop,
+                                                                                          self.escape_string(test_extra))
+        cur.execute(query)
+        con.commit()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_webapi.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,242 @@
+"""
+mbed SDK
+Copyright (c) 2011-2014 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Author: Przemyslaw Wirkus <Przemyslaw.wirkus@arm.com>
+"""
+
+import sys
+import json
+import optparse
+from flask import Flask
+from os.path import join, abspath, dirname
+
+# Be sure that the tools directory is in the search path
+ROOT = abspath(join(dirname(__file__), ".."))
+sys.path.insert(0, ROOT)
+
+# Imports related to mbed build api
+from tools.utils import construct_enum
+from tools.build_api import mcu_toolchain_matrix
+
+# Imports from TEST API
+from test_api import SingleTestRunner
+from test_api import SingleTestExecutor
+from test_api import get_json_data_from_file
+from test_api import print_muts_configuration_from_json
+from test_api import print_test_configuration_from_json
+from test_api import get_avail_tests_summary_table
+from test_api import get_default_test_options_parser
+
+
+class SingleTestRunnerWebService(SingleTestRunner):
+    def __init__(self):
+        super(SingleTestRunnerWebService, self).__init__()
+
+        # With this lock we should control access to certain resources inside this class
+        self.resource_lock = thread.allocate_lock()
+
+        self.RestRequest = construct_enum(REST_MUTS='muts',
+                                          REST_TEST_SPEC='test_spec',
+                                          REST_TEST_RESULTS='test_results')
+
+    def get_rest_result_template(self, result, command, success_code):
+        """ Returns common part of every web service request
+        """
+        result = {"result" : result,
+                  "command" : command,
+                  "success_code": success_code} # 0 - OK, >0 - Error number
+        return result
+
+    # REST API handlers for Flask framework
+    def rest_api_status(self):
+        """ Returns current test execution status. E.g. running / finished etc.
+        """
+        with self.resource_lock:
+            pass
+
+    def rest_api_config(self):
+        """ Returns configuration passed to SingleTest executor
+        """
+        with self.resource_lock:
+            pass
+
+    def rest_api_log(self):
+        """ Returns current test log """
+        with self.resource_lock:
+            pass
+
+    def rest_api_request_handler(self, request_type):
+        """ Returns various data structures. Both static and mutable during test
+        """
+        result = {}
+        success_code = 0
+        with self.resource_lock:
+            if request_type == self.RestRequest.REST_MUTS:
+                result = self.muts # Returns MUTs
+            elif request_type == self.RestRequest.REST_TEST_SPEC:
+                result = self.test_spec # Returns Test Specification
+            elif request_type == self.RestRequest.REST_TEST_RESULTS:
+                pass # Returns test results
+            else:
+                success_code = -1
+        return json.dumps(self.get_rest_result_template(result, 'request/' + request_type, success_code), indent=4)
+
+
+def singletest_in_webservice_mode():
+    # TODO Implement this web service functionality
+    pass
+
+
+def get_default_test_webservice_options_parser():
+    """ Get test script web service options used by CLI, webservices etc.
+    """
+    parser = get_default_test_options_parser()
+
+    # Things related to web services offered by test suite scripts
+    parser.add_option('', '--rest-api',
+                      dest='rest_api_enabled',
+                      default=False,
+                      action="store_true",
+                      help='Enables REST API.')
+
+    parser.add_option('', '--rest-api-port',
+                      dest='rest_api_port_no',
+                      help='Sets port for REST API interface')
+
+    return parser
+
+'''
+if __name__ == '__main__':
+    # Command line options
+    parser = get_default_test_options_parser()
+
+    parser.description = """This script allows you to run mbed defined test cases for particular MCU(s) and corresponding toolchain(s)."""
+    parser.epilog = """Example: singletest.py -i test_spec.json -M muts_all.json"""
+
+    (opts, args) = parser.parse_args()
+
+    # Print summary / information about automation test status
+    if opts.test_automation_report:
+        print get_avail_tests_summary_table()
+        exit(0)
+
+    # Print summary / information about automation test status
+    if opts.test_case_report:
+        test_case_report_cols = ['id', 'automated', 'description', 'peripherals', 'host_test', 'duration', 'source_dir']
+        print get_avail_tests_summary_table(cols=test_case_report_cols, result_summary=False, join_delim='\n')
+        exit(0)
+
+    # Only prints matrix of supported toolchains
+    if opts.supported_toolchains:
+        print mcu_toolchain_matrix(platform_filter=opts.general_filter_regex)
+        exit(0)
+
+    # Open file with test specification
+    # test_spec_filename tells script which targets and their toolchain(s)
+    # should be covered by the test scenario
+    test_spec = get_json_data_from_file(opts.test_spec_filename) if opts.test_spec_filename else None
+    if test_spec is None:
+        if not opts.test_spec_filename:
+            parser.print_help()
+        exit(-1)
+
+    # Get extra MUTs if applicable
+    MUTs = get_json_data_from_file(opts.muts_spec_filename) if opts.muts_spec_filename else None
+
+    if MUTs is None:
+        if not opts.muts_spec_filename:
+            parser.print_help()
+        exit(-1)
+
+    # Only prints read MUTs configuration
+    if MUTs and opts.verbose_test_configuration_only:
+        print "MUTs configuration in %s:"% opts.muts_spec_filename
+        print print_muts_configuration_from_json(MUTs)
+        print
+        print "Test specification in %s:"% opts.test_spec_filename
+        print print_test_configuration_from_json(test_spec)
+        exit(0)
+
+    # Verbose test specification and MUTs configuration
+    if MUTs and opts.verbose:
+        print print_muts_configuration_from_json(MUTs)
+    if test_spec and opts.verbose:
+        print print_test_configuration_from_json(test_spec)
+
+    if opts.only_build_tests:
+        # We are skipping testing phase, and suppress summary
+        opts.suppress_summary = True
+
+    single_test = SingleTestRunner(_global_loops_count=opts.test_global_loops_value,
+                                   _test_loops_list=opts.test_loops_list,
+                                   _muts=MUTs,
+                                   _test_spec=test_spec,
+                                   _opts_goanna_for_mbed_sdk=opts.goanna_for_mbed_sdk,
+                                   _opts_goanna_for_tests=opts.goanna_for_tests,
+                                   _opts_shuffle_test_order=opts.shuffle_test_order,
+                                   _opts_shuffle_test_seed=opts.shuffle_test_seed,
+                                   _opts_test_by_names=opts.test_by_names,
+                                   _opts_test_only_peripheral=opts.test_only_peripheral,
+                                   _opts_test_only_common=opts.test_only_common,
+                                   _opts_verbose_skipped_tests=opts.verbose_skipped_tests,
+                                   _opts_verbose_test_result_only=opts.verbose_test_result_only,
+                                   _opts_verbose=opts.verbose,
+                                   _opts_firmware_global_name=opts.firmware_global_name,
+                                   _opts_only_build_tests=opts.only_build_tests,
+                                   _opts_suppress_summary=opts.suppress_summary,
+                                   _opts_test_x_toolchain_summary=opts.test_x_toolchain_summary,
+                                   _opts_copy_method=opts.copy_method
+                                   )
+
+    try:
+        st_exec_thread = SingleTestExecutor(single_test)
+    except KeyboardInterrupt, e:
+        print "\n[CTRL+c] exit"
+    st_exec_thread.start()
+
+    if opts.rest_api_enabled:
+        # Enable REST API
+
+        app = Flask(__name__)
+
+        @app.route('/')
+        def hello_world():
+            return 'Hello World!'
+
+        @app.route('/status')
+        def rest_api_status():
+            return single_test.rest_api_status() # TODO
+
+        @app.route('/config')
+        def rest_api_config():
+            return single_test.rest_api_config() # TODO
+
+        @app.route('/log')
+        def rest_api_log():
+            return single_test.rest_api_log() # TODO
+
+        @app.route('/request/<request_type>') # 'muts', 'test_spec', 'test_results'
+        def rest_api_request_handler(request_type):
+            result = single_test.rest_api_request_handler(request_type) # TODO
+            return result
+
+        rest_api_port = int(opts.rest_api_port_no) if opts.rest_api_port_no else 5555
+        app.debug = False
+        app.run(port=rest_api_port) # Blocking Flask REST API web service
+    else:
+        st_exec_thread.join()
+
+'''
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,1145 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from tools.paths import *
+from tools.data.support import *
+
+TEST_CMSIS_LIB = join(TEST_DIR, "cmsis", "lib")
+TEST_MBED_LIB = join(TEST_DIR, "mbed", "env")
+
+PERIPHERALS = join(TEST_DIR, "peripherals")
+BENCHMARKS_DIR = join(TEST_DIR, "benchmarks")
+
+SD = join(TEST_DIR, "sd")
+TMP102 = join(PERIPHERALS, 'TMP102')
+
+"""
+Wiring:
+  * Ground:
+    * LPC1*: p1
+    * KL25Z: GND
+
+  * Vout
+    * LPC1*: p40
+    * KL25Z: P3V3
+
+  * TMP102 (I2C):
+      * LPC1*: (SDA=p28 , SCL=p27)
+      * KL25Z: (SDA=PTC9, SCL=PTC8)
+      * MAXWSNENV: (SDA=TP6, SCL=TP5)
+
+  * digital_loop (Digital(In|Out|InOut), InterruptIn):
+      * Arduino headers: (D0 <-> D7)
+      * LPC1549: (D2 <-> D7)
+      * LPC1*: (p5   <-> p25 )
+      * KL25Z: (PTA5<-> PTC6)
+      * NUCLEO_F103RB: (PC_6 <-> PB_8)
+      * MAXWSNENV: (TP3 <-> TP4)
+      * MAX32600MBED: (P1_0 <-> P4_7)
+
+  * port_loop (Port(In|Out|InOut)):
+      * Arduino headers: (D0 <-> D7), (D1 <-> D6)
+      * LPC1*: (p5   <-> p25), (p6   <-> p26)
+      * KL25Z: (PTA5 <-> PTC6), (PTA4 <-> PTC5)
+      * NUCLEO_F103RB: (PC_6 <-> PB_8), (PC_5 <-> PB_9)
+      * MAXWSNENV: (TP1 <-> TP3), (TP2 <-> TP4)
+      * MAX32600MBED: (P1_0 <-> P4_7), (P1_1 <-> P4_6)
+
+  * analog_loop (AnalogIn, AnalogOut):
+      * Arduino headers: (A0 <-> A5)
+      * LPC1549: (A0 <-> D12)
+      * LPC1*: (p17   <-> p18 )
+      * KL25Z: (PTE30 <-> PTC2)
+
+  * analog_pot (AnalogIn):
+      * Arduino headers: (A0, A1)
+
+  * SD (SPI):
+      * LPC1*: (mosi=p11 , miso=p12 , sclk=p13 , cs=p14 )
+      * KL25Z: (mosi=PTD2, miso=PTD3, sclk=PTD1, cs=PTD0)
+
+  * MMA7660 (I2C):
+      * LPC1*: (SDA=p28 , SCL=p27)
+
+  * i2c_loop:
+      * LPC1768: (p28 <-> p9), (p27 <-> p10)
+
+  * i2c_eeprom:
+      * LPC1*: (SDA=p28 , SCL=p27)
+      * KL25Z: (SDA=PTE0, SCL=PTE1)
+
+  * can_transceiver:
+     * LPC1768: (RX=p9,   TX=p10)
+     * LPC1549: (RX=D9,   TX=D8)
+     * LPC4088: (RX=p9,   TX=p10)
+
+"""
+TESTS = [
+    # Automated MBED tests
+    {
+        "id": "MBED_A1", "description": "Basic",
+        "source_dir": join(TEST_DIR, "mbed", "basic"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+    },
+    {
+        "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": "C++ STL",
+        "source_dir": join(TEST_DIR, "mbed", "stl"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": False,
+    },
+    {
+        "id": "MBED_A4", "description": "I2C TMP102",
+        "source_dir": join(TEST_DIR, "mbed", "i2c_TMP102"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, TMP102],
+        "automated": True,
+        "peripherals": ["TMP102"]
+    },
+    {
+        "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": "DigitalInOut",
+        "source_dir": join(TEST_DIR, "mbed", "digitalinout"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "peripherals": ["digital_loop"]
+    },
+    {
+        "id": "MBED_A7", "description": "InterruptIn",
+        "source_dir": join(TEST_DIR, "mbed", "interruptin"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        "peripherals": ["digital_loop"]
+    },
+    {
+        "id": "MBED_A8", "description": "Analog",
+        "source_dir": join(TEST_DIR, "mbed", "analog"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "peripherals": ["analog_loop"],
+        "mcu": ["LPC1768", "LPC2368", "LPC2460", "KL25Z", "K64F", "K22F", "LPC4088", "LPC1549",
+                "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303K8", "NUCLEO_F303RE",
+                "NUCLEO_F334R8", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
+                "NUCLEO_F410RB", "NUCLEO_F411RE", "NUCLEO_F446RE", "DISCO_F407VG", "DISCO_F746NG",
+                "ARCH_MAX", "MAX32600MBED", "MOTE_L152RC", "B96B_F446VE"]
+    },
+    {
+        "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": "PortOut PortIn",
+        "source_dir": join(TEST_DIR, "mbed", "portout_portin"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "peripherals": ["port_loop"],
+        "supported": DEFAULT_SUPPORT,
+        "automated": True,
+    },
+    {
+        "id": "MBED_A11", "description": "PortInOut",
+        "source_dir": join(TEST_DIR, "mbed", "portinout"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "peripherals": ["port_loop"],
+        "supported": DEFAULT_SUPPORT,
+        "automated": True,
+    },
+    {
+        "id": "MBED_A12", "description": "SD File System",
+        "source_dir": join(TEST_DIR, "mbed", "sd"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
+        "automated": True,
+        "duration": 15,
+        "peripherals": ["SD"]
+    },
+    {
+        "id": "MBED_A13", "description": "I2C MMA7660 accelerometer",
+        "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": "I2C Master",
+        "source_dir": join(TEST_DIR, "mbed", "i2c_master"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
+    },
+    {
+        "id": "MBED_A15", "description": "I2C Slave",
+        "source_dir": join(TEST_DIR, "mbed", "i2c_slave"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
+    },
+    {
+        "id": "MBED_A16", "description": "SPI Master",
+        "source_dir": join(TEST_DIR, "mbed", "spi_master"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
+    },
+    {
+        "id": "MBED_A17", "description": "SPI Slave",
+        "source_dir": join(TEST_DIR, "mbed", "spi_slave"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
+    },
+    {
+        "id": "MBED_A18", "description": "Interrupt vector relocation",
+        "source_dir": join(TEST_DIR, "mbed", "vtor_reloc"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
+        "mcu": ["LPC1768"],
+        "automated": True,
+    },
+    {
+        "id": "MBED_A19", "description": "I2C EEPROM read/write test",
+        "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "peripherals": ["24LC256"],
+        "automated": True,
+        "duration": 15,
+    },
+    {
+        "id": "MBED_A20", "description": "I2C master/slave test",
+        "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
+        "mcu": ["LPC1768", "RZ_A1H"],
+        "peripherals": ["i2c_loop"]
+    },
+    {
+        "id": "MBED_A21", "description": "Call function before main (mbed_main)",
+        "source_dir": join(TEST_DIR, "mbed", "call_before_main"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+    },
+    {
+        "id": "MBED_A22", "description": "SPIFI for LPC4088 (test 1)",
+        "source_dir": join(TEST_DIR, "mbed", "spifi1"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "duration": 30,
+        "mcu": ["LPC4088","LPC4088_DM"]
+    },
+    {
+        "id": "MBED_A23", "description": "SPIFI for LPC4088 (test 2)",
+        "source_dir": join(TEST_DIR, "mbed", "spifi2"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "duration": 30,
+        "mcu": ["LPC4088","LPC4088_DM"]
+    },
+    {
+        "id": "MBED_A24", "description": "Serial echo with RTS/CTS flow control",
+        "source_dir": join(TEST_DIR, "mbed", "echo_flow_control"),
+        "dependencies": [MBED_LIBRARIES],
+        "automated": "True",
+        "host_test": "echo_flow_control",
+        "mcu": ["LPC1768"],
+        "peripherals": ["extra_serial"]
+    },
+    {
+        "id": "MBED_A25", "description": "I2C EEPROM line read/write test",
+        "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom_line"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "peripherals": ["24LC256"],
+        "automated": True,
+        "duration": 10,
+    },
+    {
+        "id": "MBED_A26", "description": "AnalogIn potentiometer test",
+        "source_dir": join(TEST_DIR, "mbed", "analog_pot"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "peripherals": ["analog_pot"],
+        "automated": True,
+        "duration": 10,
+    },
+    {
+        "id": "MBED_A27", "description": "CAN loopback test",
+        "source_dir": join(TEST_DIR, "mbed", "can_loopback"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "duration": 20,
+        "peripherals": ["can_transceiver"],
+        "mcu": ["LPC1549", "LPC1768","B96B_F446VE"],
+    },
+    {
+        "id": "MBED_BLINKY", "description": "Blinky",
+        "source_dir": join(TEST_DIR, "mbed", "blinky"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": False,
+    },
+    {
+        "id": "MBED_BUS", "description": "Blinky BUS",
+        "source_dir": join(TEST_DIR, "mbed", "bus"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": False,
+        "duration": 15,
+    },
+
+    {
+        "id": "MBED_BUSOUT", "description": "BusOut",
+        "source_dir": join(TEST_DIR, "mbed", "bus_out"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "duration": 15,
+    },
+
+    # Size benchmarks
+    {
+        "id": "BENCHMARK_1", "description": "Size (c environment)",
+        "source_dir": join(BENCHMARKS_DIR, "cenv"),
+        "dependencies": [MBED_LIBRARIES]
+    },
+    {
+        "id": "BENCHMARK_2", "description": "Size (float math)",
+        "source_dir": join(BENCHMARKS_DIR, "float_math"),
+        "dependencies": [MBED_LIBRARIES]
+    },
+    {
+        "id": "BENCHMARK_3", "description": "Size (printf)",
+        "source_dir": join(BENCHMARKS_DIR, "printf"),
+        "dependencies": [MBED_LIBRARIES]
+    },
+    {
+        "id": "BENCHMARK_4", "description": "Size (mbed libs)",
+        "source_dir": join(BENCHMARKS_DIR, "mbed"),
+        "dependencies": [MBED_LIBRARIES]
+    },
+    {
+        "id": "BENCHMARK_5", "description": "Size (all)",
+        "source_dir": join(BENCHMARKS_DIR, "all"),
+        "dependencies": [MBED_LIBRARIES]
+    },
+
+    # performance related tests
+    {
+        "id": "PERF_1", "description": "SD Stdio R/W Speed",
+        "source_dir": join(TEST_DIR, "mbed", "sd_perf_stdio"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
+        "automated": True,
+        "duration": 15,
+        "peripherals": ["SD"]
+    },
+    {
+        "id": "PERF_2", "description": "SD FileHandle R/W Speed",
+        "source_dir": join(TEST_DIR, "mbed", "sd_perf_fhandle"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
+        "automated": True,
+        "duration": 15,
+        "peripherals": ["SD"]
+    },
+    {
+        "id": "PERF_3", "description": "SD FatFS R/W Speed",
+        "source_dir": join(TEST_DIR, "mbed", "sd_perf_fatfs"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
+        "automated": True,
+        "duration": 15,
+        "peripherals": ["SD"]
+    },
+
+
+    # Not automated MBED tests
+    {
+        "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": "stdio",
+        "source_dir": join(TEST_DIR, "mbed", "stdio"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 20,
+        "automated": True,
+        #"host_test": "stdio_auto"
+    },
+    {
+        "id": "MBED_3", "description": "PortOut",
+        "source_dir": join(TEST_DIR, "mbed", "portout"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_4", "description": "Sleep",
+        "source_dir": join(TEST_DIR, "mbed", "sleep"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 30,
+        "mcu": ["LPC1768", "LPC11U24", "LPC4088","LPC4088_DM","NRF51822", "LPC11U68"]
+    },
+    {
+        "id": "MBED_5", "description": "PWM",
+        "source_dir": join(TEST_DIR, "mbed", "pwm"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+    },
+    {
+        "id": "MBED_6", "description": "SW Reset",
+        "source_dir": join(TEST_DIR, "mbed", "reset"),
+        "dependencies": [MBED_LIBRARIES],
+        "duration": 15
+    },
+    {
+        "id": "MBED_7", "description": "stdio  benchmark",
+        "source_dir": join(TEST_DIR, "mbed", "stdio_benchmark"),
+        "dependencies": [MBED_LIBRARIES],
+        "duration": 40
+    },
+    {
+        "id": "MBED_8", "description": "SPI",
+        "source_dir": join(TEST_DIR, "mbed", "spi"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_9", "description": "Sleep Timeout",
+        "source_dir": join(TEST_DIR, "mbed", "sleep_timeout"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_10", "description": "Hello World",
+        "source_dir": join(TEST_DIR, "mbed", "hello"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test": "hello_auto",
+    },
+    {
+        "id": "MBED_11", "description": "Ticker Int",
+        "source_dir": join(TEST_DIR, "mbed", "ticker"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test": "wait_us_auto",
+        "duration": 20,
+    },
+    {
+        "id": "MBED_12", "description": "C++",
+        "source_dir": join(TEST_DIR, "mbed", "cpp"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True
+    },
+    {
+        "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": "Serial Interrupt",
+        "source_dir": join(TEST_DIR, "mbed", "serial_interrupt"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+    },
+    {
+        "id": "MBED_15", "description": "RPC",
+        "source_dir": join(TEST_DIR, "mbed", "rpc"),
+        "dependencies": [MBED_LIBRARIES, join(LIB_DIR, "rpc"), TEST_MBED_LIB],
+        "automated": False,
+        "mcu": ["LPC1768"]
+    },
+    {
+        "id": "MBED_16", "description": "RTC",
+        "source_dir": join(TEST_DIR, "mbed", "rtc"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "exclude_mcu": ["NRF51822", "NRF51822_BOOT", "NRF51822_OTA", "NRF51822_Y5_MBUG",
+                        "NRF51_DK", "NRF51_DK_BOOT", "NRF51_DK_OTA",
+                        "NRF51_MICROBIT", "NRF51_MICROBIT_B", "NRF51_MICROBIT_BOOT",
+                        "NRF51_MICROBIT_B_BOOT", "NRF51_MICROBIT_B_OTA", "NRF51_MICROBIT_OTA",
+                        "HRM1017", "HRM1017_BOOT", "HRM1701_OTA",
+                        "TY51822R3", "TY51822R3_BOOT", "TY51822R3_OTA",
+                        "NRF15_DONGLE", "NRF15_DONGLE_BOOT", "NRF15_DONGLE_OTA",
+                        "ARCH_BLE", "ARCH_BLE_BOOT", "ARCH_BLE_OTA",
+                        "ARCH_LINK", "ARCH_LINK_BOOT", "ARCH_LINK_OTA",
+                        "RBLAB_BLENANO", "RBLAB_BLENANO_BOOT", "RBLAB_BLENANO_OTA",
+                        "RBLAB_NRF51822", "RBLAB_NRF51822_BOOT", "RBLAB_NRF51822_OTA",
+                        "SEEED_TINY_BLE", "SEEED_TINY_BLE_BOOT", "SEEED_TINY_BLE_OTA",
+                        "WALLBOT_BLE", "WALLBOT_BLE_BOOT", "WALLBOT_BLE_OTA",
+                        "DELTA_DFCM_NNN40", "DELTA_DFCM_NNN40_BOOT", "DELTA_DFCM_NNN40_OTA",
+                        "LPC1114"],
+        #"host_test": "rtc_auto",
+        "duration": 15
+    },
+    {
+        "id": "MBED_17", "description": "Serial Interrupt 2",
+        "source_dir": join(TEST_DIR, "mbed", "serial_interrupt_2"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_18", "description": "Local FS Directory",
+        "source_dir": join(TEST_DIR, "mbed", "dir"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_19", "description": "SD FS Directory",
+        "source_dir": join(TEST_DIR, "mbed", "dir_sd"),
+        "dependencies": [MBED_LIBRARIES, FS_LIBRARY],
+        "peripherals": ["SD"]
+    },
+    {
+        "id": "MBED_20", "description": "InterruptIn 2",
+        "source_dir": join(TEST_DIR, "mbed", "interruptin_2"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_21", "description": "freopen Stream",
+        "source_dir": join(TEST_DIR, "mbed", "freopen"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_22", "description": "Semihost",
+        "source_dir": join(TEST_DIR, "mbed", "semihost"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
+    },
+    {
+        "id": "MBED_23", "description": "Ticker Int us",
+        "source_dir": join(TEST_DIR, "mbed", "ticker_2"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        #"host_test": "wait_us_auto"
+    },
+    {
+        "id": "MBED_24", "description": "Timeout Int us",
+        "source_dir": join(TEST_DIR, "mbed", "timeout"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        #"host_test": "wait_us_auto"
+    },
+    {
+        "id": "MBED_25", "description": "Time us",
+        "source_dir": join(TEST_DIR, "mbed", "time_us"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        #"host_test": "wait_us_auto"
+    },
+    {
+        "id": "MBED_26", "description": "Integer constant division",
+        "source_dir": join(TEST_DIR, "mbed", "div"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+    },
+    {
+        "id": "MBED_27", "description": "SPI ADXL345",
+        "source_dir": join(TEST_DIR, "mbed", "spi_ADXL345"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'ADXL345')],
+        "peripherals": ["ADXL345"]
+    },
+    {
+        "id": "MBED_28", "description": "Interrupt chaining (InterruptManager)",
+        "source_dir": join(TEST_DIR, "mbed", "interrupt_chaining"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+    },
+    {
+        "id": "MBED_29", "description": "CAN network test",
+        "source_dir": join(TEST_DIR, "mbed", "can"),
+        "dependencies": [MBED_LIBRARIES],
+        "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE"]
+    },
+    {
+        "id": "MBED_30", "description": "CAN network test using interrupts",
+        "source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
+        "dependencies": [MBED_LIBRARIES],
+        "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE"]
+    },
+    {
+        "id": "MBED_31", "description": "PWM LED test",
+        "source_dir": join(TEST_DIR, "mbed", "pwm_led"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_32", "description": "Pin toggling",
+        "source_dir": join(TEST_DIR, "mbed", "pin_toggling"),
+        "dependencies": [MBED_LIBRARIES],
+    },
+    {
+        "id": "MBED_33", "description": "C string operations",
+        "source_dir": join(TEST_DIR, "mbed", "cstring"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 10,
+        "automated": False,
+    },
+    {
+        "id": "MBED_34", "description": "Ticker Two callbacks",
+        "source_dir": join(TEST_DIR, "mbed", "ticker_3"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        #"host_test": "wait_us_auto"
+    },
+    {
+        "id": "MBED_35", "description": "SPI C12832 display",
+        "source_dir": join(TEST_DIR, "mbed", "spi_C12832"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'C12832')],
+        "peripherals": ["C12832"],
+        "automated": True,
+        "duration": 10,
+    },
+    {
+        "id": "MBED_36", "description": "WFI correct behavior",
+        "source_dir": join(TEST_DIR, "mbed", "wfi"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": False
+    },
+    {
+        "id": "MBED_37", "description": "Serial NC RX",
+        "source_dir": join(TEST_DIR, "mbed", "serial_nc_rx"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True
+    },
+    {
+        "id": "MBED_38", "description": "Serial NC TX",
+        "source_dir": join(TEST_DIR, "mbed", "serial_nc_tx"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True
+    },
+
+    # CMSIS RTOS tests
+    {
+        "id": "CMSIS_RTOS_1", "description": "Basic",
+        "source_dir": join(TEST_DIR, "rtos", "cmsis", "basic"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
+    },
+    {
+        "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": "Semaphore",
+        "source_dir": join(TEST_DIR, "rtos", "cmsis", "semaphore"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
+        "duration": 20
+    },
+    {
+        "id": "CMSIS_RTOS_4", "description": "Signals",
+        "source_dir": join(TEST_DIR, "rtos", "cmsis", "signals"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
+    },
+    {
+        "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": "Mail",
+        "source_dir": join(TEST_DIR, "rtos", "cmsis", "mail"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
+        "duration": 20
+    },
+    {
+        "id": "CMSIS_RTOS_7", "description": "Timer",
+        "source_dir": join(TEST_DIR, "rtos", "cmsis", "timer"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
+    },
+    {
+        "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": "Basic thread",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "basic"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        #"host_test": "wait_us_auto",
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_2", "description": "Mutex resource lock",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "mutex"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "duration": 20,
+        "automated": True,
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_3", "description": "Semaphore resource lock",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "semaphore"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "duration": 20,
+        "automated": True,
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_4", "description": "Signals messaging",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "signals"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_5", "description": "Queue messaging",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "queue"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_6", "description": "Mail messaging",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "mail"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_7", "description": "Timer",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "timer"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        #"host_test": "wait_us_auto",
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_8", "description": "ISR (Queue)",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "isr"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
+                "KL25Z", "KL05Z", "K64F", "KL46Z",
+                "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "DISCO_F469NI", "NUCLEO_F410RB",
+                "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F030R8", "NUCLEO_F070RB",
+                "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "DISCO_L476VG", "NUCLEO_L476RG",
+                "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG", "MOTE_L152RC", "B96B_F446VE"],
+    },
+    {
+        "id": "RTOS_9", "description": "SD File write-read",
+        "source_dir": join(TEST_DIR, "rtos", "mbed", "file"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
+        "automated": True,
+        "peripherals": ["SD"],
+        "mcu": ["LPC1768", "LPC11U24", "LPC812", "KL25Z",
+                "KL05Z", "K64F", "KL46Z", "RZ_A1H",
+                "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F401RE", "NUCLEO_F410RB", "DISCO_F469NI"],
+    },
+
+    # Networking Tests
+    {
+        "id": "NET_1", "description": "TCP client hello world",
+        "source_dir": join(TEST_DIR, "net", "helloworld", "tcpclient"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_2", "description": "NIST Internet Time Service",
+        "source_dir": join(TEST_DIR, "net", "helloworld", "udpclient"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "duration": 15,
+        "automated": True,
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_3", "description": "TCP echo server",
+        "source_dir": join(TEST_DIR, "net", "echo", "tcp_server"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test" : "tcpecho_server_auto",
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_4", "description": "TCP echo client",
+        "source_dir": join(TEST_DIR, "net", "echo", "tcp_client"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test": "tcpecho_client_auto",
+        "peripherals": ["ethernet"]
+    },
+    {
+        "id": "NET_5", "description": "UDP echo server",
+        "source_dir": join(TEST_DIR, "net", "echo", "udp_server"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test" : "udpecho_server_auto",
+        "peripherals": ["ethernet"]
+    },
+    {
+        "id": "NET_6", "description": "UDP echo client",
+        "source_dir": join(TEST_DIR, "net", "echo", "udp_client"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test" : "udpecho_client_auto",
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_7", "description": "HTTP client hello world",
+        "source_dir": join(TEST_DIR, "net", "protocols", "HTTPClient_HelloWorld"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "automated": True,
+        "duration": 15,
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_8", "description": "NTP client",
+        "source_dir": join(TEST_DIR, "net", "protocols", "NTPClient_HelloWorld"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
+        "automated": True,
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_9", "description": "Multicast Send",
+        "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_send"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_10", "description": "Multicast Receive",
+        "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_receive"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_11", "description": "Broadcast Send",
+        "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_send"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_12", "description": "Broadcast Receive",
+        "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_receive"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
+        "peripherals": ["ethernet"],
+    },
+    {
+        "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, TEST_MBED_LIB],
+        "automated": True,
+        "duration": 15,
+        #"host_test": "tcpecho_client_auto",
+        "peripherals": ["ethernet"],
+    },
+    {
+        "id": "NET_14", "description": "UDP PHY/Data link layer",
+        "source_dir": join(TEST_DIR, "net", "echo", "udp_link_layer"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
+        "automated": False,
+        "duration": 20,
+        "host_test": "udp_link_layer_auto",
+        "peripherals": ["ethernet"],
+    },
+
+    # u-blox tests
+    {
+        "id": "UB_1", "description": "u-blox USB modem: HTTP client",
+        "source_dir": [join(TEST_DIR, "net", "cellular", "http", "ubloxusb"), join(TEST_DIR, "net", "cellular", "http", "common")],
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
+        "supported": CORTEX_ARM_SUPPORT,
+    },
+    {
+        "id": "UB_2", "description": "u-blox USB modem: SMS test",
+        "source_dir": [join(TEST_DIR, "net", "cellular", "sms", "ubloxusb"), join(TEST_DIR, "net", "cellular", "sms", "common")],
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
+        "supported": CORTEX_ARM_SUPPORT,
+    },
+
+    # USB Tests
+    {
+        "id": "USB_1", "description": "Mouse",
+        "source_dir": join(TEST_DIR, "usb", "device", "basic"),
+        "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
+    },
+    {
+        "id": "USB_2", "description": "Keyboard",
+        "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
+        "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
+    },
+    {
+        "id": "USB_3", "description": "Mouse_Keyboard",
+        "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
+        "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
+    },
+    {
+        "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": "Generic HID",
+        "source_dir": join(TEST_DIR, "usb", "device", "raw_hid"),
+        "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
+    },
+    {
+        "id": "USB_6", "description": "MIDI",
+        "source_dir": join(TEST_DIR, "usb", "device", "midi"),
+        "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
+    },
+    {
+        "id": "USB_7", "description": "AUDIO",
+        "source_dir": join(TEST_DIR, "usb", "device", "audio"),
+        "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
+    },
+
+    # CMSIS DSP
+    {
+        "id": "CMSIS_DSP_1", "description": "FIR",
+        "source_dir": join(TEST_DIR, "dsp", "cmsis", "fir_f32"),
+        "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
+    },
+
+    # mbed DSP
+    {
+        "id": "DSP_1", "description": "FIR",
+        "source_dir": join(TEST_DIR, "dsp", "mbed", "fir_f32"),
+        "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
+    },
+
+    # KL25Z
+    {
+        "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": "PIT",
+        "source_dir": join(TEST_DIR, "KL25Z", "pit"),
+        "dependencies": [MBED_LIBRARIES],
+        "supported": CORTEX_ARM_SUPPORT,
+        "mcu": ["KL25Z"],
+    },
+    {
+        "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": "RTC",
+        "source_dir": join(TEST_DIR, "KL25Z", "rtc"),
+        "dependencies": [MBED_LIBRARIES],
+        "mcu": ["KL25Z"],
+    },
+    {
+        "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", "KL05Z", "KL46Z", "K20D50M"],
+        "automated": True,
+        "duration": 15,
+        },
+
+    # Examples
+    {
+        "id": "EXAMPLE_1", "description": "/dev/null",
+        "source_dir": join(TEST_DIR, "mbed", "dev_null"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test" : "dev_null_auto",
+    },
+    {
+        "id": "EXAMPLE_2", "description": "FS + RTOS",
+        "source_dir": join(TEST_DIR, "mbed", "fs"),
+        "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
+    },
+
+    # CPPUTEST Library provides Unit testing Framework
+    #
+    # To write TESTs and TEST_GROUPs please add CPPUTEST_LIBRARY to 'dependencies'
+    #
+    # This will also include:
+    # 1. test runner - main function with call to CommandLineTestRunner::RunAllTests(ac, av)
+    # 2. Serial console object to print test result on serial port console
+    #
+
+    # Unit testing with cpputest library
+    {
+        "id": "UT_1", "description": "Basic",
+        "source_dir": join(TEST_DIR, "utest", "basic"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+    {
+        "id": "UT_2", "description": "Semihost file system",
+        "source_dir": join(TEST_DIR, "utest", "semihost_fs"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+        "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
+    },
+    {
+        "id": "UT_3", "description": "General tests",
+        "source_dir": join(TEST_DIR, "utest", "general"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+    {
+        "id": "UT_BUSIO", "description": "BusIn BusOut",
+        "source_dir": join(TEST_DIR, "utest", "bus"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+    {
+        "id": "UT_I2C_EEPROM_ASYNCH", "description": "I2C Asynch eeprom",
+        "source_dir": join(TEST_DIR, "utest", "i2c_eeprom_asynch"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+    {
+        "id": "UT_SERIAL_ASYNCH", "description": "Asynch serial test (req 2 serial peripherals)",
+        "source_dir": join(TEST_DIR, "utest", "serial_asynch"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+    {
+        "id": "UT_SPI_ASYNCH", "description": "Asynch spi test",
+        "source_dir": join(TEST_DIR, "utest", "spi_asynch"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+    {
+        "id": "UT_LP_TICKER", "description": "Low power ticker test",
+        "source_dir": join(TEST_DIR, "utest", "lp_ticker"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
+        "automated": False,
+    },
+
+    # Tests used for target information purposes
+    {
+        "id": "DTCT_1", "description": "Simple detect test",
+        "source_dir": join(TEST_DIR, "mbed", "detect"),
+        "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
+        "automated": True,
+        #"host_test" : "detect_auto",
+    },
+
+]
+
+# Group tests with the same goals into categories
+GROUPS = {
+    "core": ["MBED_A1", "MBED_A2", "MBED_A3", "MBED_A18"],
+    "digital_io": ["MBED_A5", "MBED_A6", "MBED_A7", "MBED_A10", "MBED_A11"],
+    "analog_io": ["MBED_A8"],
+    "i2c": ["MBED_A19", "MBED_A20"],
+    "spi": ["MBED_A12"],
+}
+GROUPS["rtos"] = [test["id"] for test in TESTS if test["id"].startswith("RTOS_")]
+GROUPS["net"] = [test["id"] for test in TESTS if test["id"].startswith("NET_")]
+GROUPS["automated"] = [test["id"] for test in TESTS if test.get("automated", False)]
+# Look for 'TEST_GROUPS' in private_settings.py and update the GROUPS dictionary
+# with the information in test_groups if found
+try:
+    from tools.private_settings import TEST_GROUPS
+except:
+    TEST_GROUPS = {}
+GROUPS.update(TEST_GROUPS)
+
+class Test:
+    DEFAULTS = {
+        #'mcu': None,
+        'description': None,
+        'dependencies': None,
+        'duration': 10,
+        'host_test': 'host_test',
+        'automated': False,
+        'peripherals': None,
+        #'supported': None,
+        'source_dir': None,
+        'extra_files': None
+    }
+    def __init__(self, n):
+        self.n = n
+        self.__dict__.update(Test.DEFAULTS)
+        self.__dict__.update(TESTS[n])
+
+    def is_supported(self, target, toolchain):
+        if hasattr(self, 'mcu') and not target in self.mcu:
+            return False
+        if hasattr(self, 'exclude_mcu') and target in self.exclude_mcu:
+            return False
+        if not hasattr(self, 'supported'):
+            return True
+        return (target in self.supported) and (toolchain in self.supported[target])
+
+    def get_description(self):
+        if self.description:
+            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())
+
+    def __getitem__(self, key):
+        if key == "id": return self.id
+        elif key == "mcu": return self.mcu
+        elif key == "exclude_mcu": return self.exclude_mcu
+        elif key == "dependencies": return self.dependencies
+        elif key == "description": return self.description
+        elif key == "duration": return self.duration
+        elif key == "host_test": return self.host_test
+        elif key == "automated": return self.automated
+        elif key == "peripherals": return self.peripherals
+        elif key == "supported": return self.supported
+        elif key == "source_dir": return self.source_dir
+        elif key == "extra_files": return self.extra_files
+        else:
+            return None
+
+TEST_MAP = dict([(test['id'], Test(i)) for i, test in enumerate(TESTS)])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolchains/__init__.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,784 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+import re
+import sys
+from os import stat, walk, getcwd
+from copy import copy
+from time import time, sleep
+from types import ListType
+from shutil import copyfile
+from os.path import join, splitext, exists, relpath, dirname, basename, split
+from inspect import getmro
+
+from multiprocessing import Pool, cpu_count
+from tools.utils import run_cmd, mkdir, rel_path, ToolException, NotSupportedException, split_path
+from tools.settings import BUILD_OPTIONS, MBED_ORG_USER
+import tools.hooks as hooks
+from hashlib import md5
+
+
+#Disables multiprocessing if set to higher number than the host machine CPUs
+CPU_COUNT_MIN = 1
+
+def compile_worker(job):
+    results = []
+    for command in job['commands']:
+        _, _stderr, _rc = run_cmd(command, job['work_dir'])
+        results.append({
+            'code': _rc,
+            'output': _stderr,
+            'command': command
+        })
+
+    return {
+        'source': job['source'],
+        'object': job['object'],
+        'commands': job['commands'],
+        'results': results
+    }
+
+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.lib_refs = []
+
+        self.repo_dirs = []
+        self.repo_files = []
+
+        self.linker_script = None
+
+        # Other files
+        self.hex_files = []
+        self.bin_files = []
+
+    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
+        self.lib_refs += resources.lib_refs
+
+        self.repo_dirs += resources.repo_dirs
+        self.repo_files += resources.repo_files
+
+        if resources.linker_script is not None:
+            self.linker_script = resources.linker_script
+
+        self.hex_files += resources.hex_files
+        self.bin_files += resources.bin_files
+
+    def relative_to(self, base, dot=False):
+        for field in ['inc_dirs', 'headers', 's_sources', 'c_sources',
+                      'cpp_sources', 'lib_dirs', 'objects', 'libraries',
+                      'lib_builds', 'lib_refs', 'repo_dirs', 'repo_files', 'hex_files', 'bin_files']:
+            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',
+                      'lib_builds', 'lib_refs', 'repo_dirs', 'repo_files', 'hex_files', 'bin_files']:
+            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),
+
+                ('Hex files', self.hex_files),
+                ('Bin files', self.bin_files),
+            ):
+            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)
+
+
+# Support legacy build conventions: the original mbed build system did not have
+# standard labels for the "TARGET_" and "TOOLCHAIN_" specific directories, but
+# had the knowledge of a list of these directories to be ignored.
+LEGACY_IGNORE_DIRS = set([
+    'LPC11U24', 'LPC1768', 'LPC2368', 'LPC4088', 'LPC812', 'KL25Z',
+    'ARM', 'GCC_ARM', 'GCC_CR', 'IAR', 'uARM'
+])
+LEGACY_TOOLCHAIN_NAMES = {
+    'ARM_STD':'ARM', 'ARM_MICRO': 'uARM',
+    'GCC_ARM': 'GCC_ARM', 'GCC_CR': 'GCC_CR',
+    'IAR': 'IAR',
+}
+
+
+class mbedToolchain:
+    VERBOSE = True
+
+    CORTEX_SYMBOLS = {
+        "Cortex-M0" : ["__CORTEX_M0", "ARM_MATH_CM0", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-M0+": ["__CORTEX_M0PLUS", "ARM_MATH_CM0PLUS", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-M1" : ["__CORTEX_M3", "ARM_MATH_CM1"],
+        "Cortex-M3" : ["__CORTEX_M3", "ARM_MATH_CM3", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-M4" : ["__CORTEX_M4", "ARM_MATH_CM4", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-M4F" : ["__CORTEX_M4", "ARM_MATH_CM4", "__FPU_PRESENT=1", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-M7" : ["__CORTEX_M7", "ARM_MATH_CM7", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-M7F" : ["__CORTEX_M7", "ARM_MATH_CM7", "__FPU_PRESENT=1", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
+        "Cortex-A9" : ["__CORTEX_A9", "ARM_MATH_CA9", "__FPU_PRESENT", "__CMSIS_RTOS", "__EVAL", "__MBED_CMSIS_RTOS_CA9"],
+    }
+
+    GOANNA_FORMAT = "[Goanna] warning [%FILENAME%:%LINENO%] - [%CHECKNAME%(%SEVERITY%)] %MESSAGE%"
+    GOANNA_DIAGNOSTIC_PATTERN = re.compile(r'"\[Goanna\] (?P<severity>warning) \[(?P<file>[^:]+):(?P<line>\d+)\] \- (?P<message>.*)"')
+
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        self.target = target
+        self.name = self.__class__.__name__
+        self.hook = hooks.Hook(target, self)
+        self.silent = silent
+        self.output = ""
+
+        self.legacy_ignore_dirs = LEGACY_IGNORE_DIRS - set([target.name, LEGACY_TOOLCHAIN_NAMES[self.name]])
+
+        if notify:
+            self.notify_fun = notify
+        elif extra_verbose:
+            self.notify_fun = self.print_notify_verbose
+        else:
+            self.notify_fun = self.print_notify
+
+        self.options = options if options is not None else []
+
+        self.macros = macros or []
+        self.options.extend(BUILD_OPTIONS)
+        if self.options:
+            self.info("Build Options: %s" % (', '.join(self.options)))
+
+        self.obj_path = join("TARGET_"+target.name, "TOOLCHAIN_"+self.name)
+
+        self.symbols = None
+        self.labels = None
+        self.has_config = False
+
+        self.build_all = False
+        self.build_dir = None
+        self.timestamp = time()
+        self.jobs = 1
+
+        self.CHROOT = None
+
+        self.mp_pool = None
+        
+        if 'UVISOR_PRESENT=1' in self.macros:
+            self.target.core = re.sub(r"F$", '', self.target.core)
+
+    def get_output(self):
+        return self.output
+
+    def print_notify(self, event, silent=False):
+        """ Default command line notification
+        """
+        msg = None
+
+        if event['type'] in ['info', 'debug']:
+            msg = event['message']
+
+        elif event['type'] == 'cc':
+            event['severity'] = event['severity'].title()
+            event['file'] = basename(event['file'])
+            msg = '[%(severity)s] %(file)s@%(line)s: %(message)s' % event
+
+        elif event['type'] == 'progress':
+            if not silent:
+                msg = '%s: %s' % (event['action'].title(), basename(event['file']))
+
+        if msg:
+            print msg
+            self.output += msg + "\n"
+
+    def print_notify_verbose(self, event, silent=False):
+        """ Default command line notification with more verbose mode
+        """
+        if event['type'] in ['info', 'debug']:
+            self.print_notify(event) # standard handle
+
+        elif event['type'] == 'cc':
+            event['severity'] = event['severity'].title()
+            event['file'] = basename(event['file'])
+            event['mcu_name'] = "None"
+            event['toolchain'] = "None"
+            event['target_name'] = event['target_name'].upper() if event['target_name'] else "Unknown"
+            event['toolchain_name'] = event['toolchain_name'].upper() if event['toolchain_name'] else "Unknown"
+            msg = '[%(severity)s] %(target_name)s::%(toolchain_name)s::%(file)s@%(line)s: %(message)s' % event
+            print msg
+            self.output += msg + "\n"
+
+        elif event['type'] == 'progress':
+            self.print_notify(event) # standard handle
+
+    def notify(self, event):
+        """ Little closure for notify functions
+        """
+        return self.notify_fun(event, self.silent)
+
+    def __exit__(self):
+        if self.mp_pool is not None:
+            self.mp_pool.terminate()
+
+    def goanna_parse_line(self, line):
+        if "analyze" in self.options:
+            return self.GOANNA_DIAGNOSTIC_PATTERN.match(line)
+        else:
+            return None
+
+    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']])
+
+            # Config support
+            if self.has_config:
+                self.symbols.append('HAVE_MBED_CONFIG_H')
+
+            # Cortex CPU symbols
+            if self.target.core in mbedToolchain.CORTEX_SYMBOLS:
+                self.symbols.extend(mbedToolchain.CORTEX_SYMBOLS[self.target.core])
+
+            # Symbols defined by the on-line build.system
+            self.symbols.extend(['MBED_BUILD_TIMESTAMP=%s' % self.timestamp, 'TARGET_LIKE_MBED', '__MBED__=1'])
+            if MBED_ORG_USER:
+                self.symbols.append('MBED_USERNAME=' + MBED_ORG_USER)
+
+            # Add target's symbols
+            self.symbols += self.target.macros
+            # Add extra symbols passed via 'macros' parameter
+            self.symbols += self.macros
+
+            # Form factor variables
+            if hasattr(self.target, 'supported_form_factors'):
+                self.symbols.extend(["TARGET_FF_%s" % t for t in self.target.supported_form_factors])
+
+        return list(set(self.symbols))  # Return only unique 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() + ["DEBUG" if "debug-info" in self.options else "RELEASE"],
+                '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, exclude_paths=None):
+        labels = self.get_labels()
+        resources = Resources(path)
+        self.has_config = False
+
+        """ 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, followlinks=True):
+            # Remove ignored directories
+            for d in copy(dirs):
+                dir_path = join(root, d)
+                
+                if d == '.hg':
+                    resources.repo_dirs.append(dir_path)
+                    resources.repo_files.extend(self.scan_repository(dir_path))
+
+                if ((d.startswith('.') or d in self.legacy_ignore_dirs) or
+                    ((d.upper().startswith('TARGET_') or d.upper().startswith('TARGET-')) and d[7:] not in labels['TARGET']) or
+                    ((d.upper().startswith('TOOLCHAIN_') or d.upper().startswith('TOOLCHAIN-')) and d[10:] not in labels['TOOLCHAIN']) or
+                    (d.upper() == 'TESTS') or
+                    exists(join(dir_path, '.mbedignore'))):
+                    dirs.remove(d)
+                
+                if exclude_paths:
+                    for exclude_path in exclude_paths:
+                        rel_path = relpath(dir_path, exclude_path)
+                        if not (rel_path.startswith('..')):
+                            dirs.remove(d)
+                            break
+
+            # 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' or ext == '.hpp':
+                    if basename(file_path) == "mbed_config.h":
+                        self.has_config = True
+                    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:
+                    if resources.linker_script is not None:
+                        self.info("Warning: Multiple linker scripts detected: %s -> %s" % (resources.linker_script, file_path))
+                    resources.linker_script = file_path
+
+                elif ext == '.lib':
+                    resources.lib_refs.append(file_path)
+
+                elif ext == '.bld':
+                    resources.lib_builds.append(file_path)
+
+                elif file == '.hgignore':
+                    resources.repo_files.append(file_path)
+
+                elif ext == '.hex':
+                    resources.hex_files.append(file_path)
+
+                elif ext == '.bin':
+                    resources.bin_files.append(file_path)
+
+        return resources
+
+    def scan_repository(self, path):
+        resources = []
+
+        for root, dirs, files in walk(path):
+            # Remove ignored directories
+            for d in copy(dirs):
+                if d == '.' or d == '..':
+                    dirs.remove(d)
+
+            for file in files:
+                file_path = join(root, file)
+                resources.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 source is None:
+                files_paths.remove(source)
+
+        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 get_inc_file(self, includes):
+        include_file = join(self.build_dir, ".includes_%s.txt" % self.inc_md5)
+        if not exists(include_file):
+            with open(include_file, "wb") as f:
+                cmd_list = []
+                for c in includes:
+                    if c:
+                        cmd_list.append(('-I%s' % c).replace("\\", "/"))                    
+                string = " ".join(cmd_list)
+                f.write(string)
+        return include_file
+
+    def compile_sources(self, resources, build_path, inc_dirs=None):
+        # Web IDE progress bar for project build
+        files_to_compile = resources.s_sources + resources.c_sources + resources.cpp_sources
+        self.to_be_compiled = len(files_to_compile)
+        self.compiled = 0
+
+        inc_paths = resources.inc_dirs
+        if inc_dirs is not None:
+            inc_paths.extend(inc_dirs)
+        # De-duplicate include paths
+        inc_paths = set(inc_paths)
+        # Sort include paths for consistency
+        inc_paths = sorted(set(inc_paths))
+        # Unique id of all include paths
+        self.inc_md5 = md5(' '.join(inc_paths)).hexdigest()
+        # Where to store response files
+        self.build_dir = build_path
+
+        objects = []
+        queue = []
+        prev_dir = None
+
+        # The dependency checking for C/C++ is delegated to the compiler
+        base_path = resources.base_path
+        # Sort compile queue for consistency
+        files_to_compile.sort()
+        work_dir = getcwd()
+
+        for source in files_to_compile:
+            _, name, _ = split_path(source)
+            object = self.relative_object_path(build_path, base_path, source)
+
+            # Queue mode (multiprocessing)
+            commands = self.compile_command(source, object, inc_paths)
+            if commands is not None:
+                queue.append({
+                    'source': source,
+                    'object': object,
+                    'commands': commands,
+                    'work_dir': work_dir,
+                    'chroot': self.CHROOT
+                })
+            else:
+                objects.append(object)
+
+        # Use queues/multiprocessing if cpu count is higher than setting
+        jobs = self.jobs if self.jobs else cpu_count()
+        if jobs > CPU_COUNT_MIN and len(queue) > jobs:
+            return self.compile_queue(queue, objects)
+        else:
+            return self.compile_seq(queue, objects)
+
+    def compile_seq(self, queue, objects):
+        for item in queue:
+            result = compile_worker(item)
+
+            self.compiled += 1
+            self.progress("compile", item['source'], build_update=True)
+            for res in result['results']:
+                self.debug("Command: %s" % ' '.join(res['command']))
+                self.compile_output([
+                    res['code'],
+                    res['output'],
+                    res['command']
+                ])
+            objects.append(result['object'])
+        return objects
+
+    def compile_queue(self, queue, objects):
+        jobs_count = int(self.jobs if self.jobs else cpu_count())
+        p = Pool(processes=jobs_count)
+
+        results = []
+        for i in range(len(queue)):
+            results.append(p.apply_async(compile_worker, [queue[i]]))
+
+        itr = 0
+        while True:
+            itr += 1
+            if itr > 180000:
+                p.terminate()
+                p.join()
+                raise ToolException("Compile did not finish in 5 minutes")
+
+            pending = 0
+            for r in results:
+                if r._ready is True:
+                    try:
+                        result = r.get()
+                        results.remove(r)
+
+                        self.compiled += 1
+                        self.progress("compile", result['source'], build_update=True)
+                        for res in result['results']:
+                            self.debug("Command: %s" % ' '.join(res['command']))
+                            self.compile_output([
+                                res['code'],
+                                res['output'],
+                                res['command']
+                            ])
+                        objects.append(result['object'])
+                    except ToolException, err:
+                        p.terminate()
+                        p.join()
+                        raise ToolException(err)
+                else:
+                    pending += 1
+                    if pending > jobs_count:
+                        break
+
+
+            if len(results) == 0:
+                break
+
+            sleep(0.01)
+
+        results = None
+        p.terminate()
+        p.join()
+
+        return objects
+
+    def compile_command(self, source, object, includes):
+        # Check dependencies
+        _, ext = splitext(source)
+        ext = ext.lower()
+
+        if ext == '.c' or  ext == '.cpp':
+            base, _ = splitext(object)
+            dep_path = base + '.d'
+            deps = self.parse_dependencies(dep_path) if (exists(dep_path)) else []
+            if len(deps) == 0 or self.need_update(object, deps):
+                if ext == '.c':
+                    return self.compile_c(source, object, includes)
+                else:
+                    return self.compile_cpp(source, object, includes)
+        elif ext == '.s':
+            deps = [source]
+            if self.need_update(object, deps):
+                return self.assemble(source, object, includes)
+        else:
+            return False
+
+        return None
+
+    def is_not_supported_error(self, output):
+        return "#error directive: [NOT_SUPPORTED]" in output
+
+    def compile_output(self, output=[]):
+        _rc = output[0]
+        _stderr = output[1]
+        command = output[2]
+
+        # Parse output for Warnings and Errors
+        self.parse_output(_stderr)
+        self.debug("Return: %s"% _rc)
+        for error_line in _stderr.splitlines():
+            self.debug("Output: %s"% error_line)
+
+
+        # Check return code
+        if _rc != 0:
+            for line in _stderr.splitlines():
+                self.tool_error(line)
+
+            if self.is_not_supported_error(_stderr):
+                raise NotSupportedException(_stderr)
+            else:
+                raise ToolException(_stderr)
+
+    def build_library(self, objects, dir, name):
+        needed_update = False
+        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)
+            needed_update = True
+
+        return needed_update
+
+    def link_program(self, r, tmp_path, name):
+        needed_update = False
+        ext = 'bin'
+        if hasattr(self.target, 'OUTPUT_EXT'):
+            ext = self.target.OUTPUT_EXT
+
+        if hasattr(self.target, 'OUTPUT_NAMING'):
+            self.var("binary_naming", self.target.OUTPUT_NAMING)
+            if self.target.OUTPUT_NAMING == "8.3":
+                name = name[0:8]
+                ext = ext[0:3]
+        
+        # Create destination directory
+        head, tail =  split(name)
+        new_path = join(tmp_path, head)
+        mkdir(new_path)
+        
+        filename = name+'.'+ext
+        elf = join(tmp_path, name + '.elf')
+        bin = join(tmp_path, filename)
+
+        if self.need_update(elf, r.objects + r.libraries + [r.linker_script]):
+            needed_update = True
+            self.progress("link", name)
+            self.link(elf, r.objects, r.libraries, r.lib_dirs, r.linker_script)
+
+        if self.need_update(bin, [elf]):
+            needed_update = True
+            self.progress("elf2bin", name)
+
+            self.binary(r, elf, bin)
+
+        self.var("compile_succeded", True)
+        self.var("binary", filename)
+
+        return bin, needed_update
+
+    def default_cmd(self, command):
+        self.debug("Command: %s"% ' '.join(command))
+        _stdout, _stderr, _rc = run_cmd(command)
+        # Print all warning / erros from stderr to console output
+        for error_line in _stderr.splitlines():
+            print error_line
+
+        self.debug("Return: %s"% _rc)
+
+        for output_line in _stdout.splitlines():
+            self.debug("Output: %s"% output_line)
+        for error_line in _stderr.splitlines():
+            self.debug("Errors: %s"% error_line)
+
+        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)
+            message = "[DEBUG] " + message
+            self.notify({'type': 'debug', 'message': message})
+
+    def cc_info(self, severity, file, line, message, target_name=None, toolchain_name=None):
+        self.notify({'type': 'cc',
+                     'severity': severity,
+                     'file': file,
+                     'line': line,
+                     'message': message,
+                     'target_name': target_name,
+                     'toolchain_name': toolchain_name})
+
+    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 tools.settings import ARM_BIN
+from tools.settings import GCC_ARM_PATH, GCC_CR_PATH
+from tools.settings import IAR_PATH
+
+TOOLCHAIN_BIN_PATH = {
+    'ARM': ARM_BIN,
+    'uARM': ARM_BIN,
+    'GCC_ARM': GCC_ARM_PATH,
+    'GCC_CR': GCC_CR_PATH,
+    'IAR': IAR_PATH
+}
+
+from tools.toolchains.arm import ARM_STD, ARM_MICRO
+from tools.toolchains.gcc import GCC_ARM, GCC_CR
+from tools.toolchains.iar import IAR
+
+TOOLCHAIN_CLASSES = {
+    'ARM': ARM_STD,
+    'uARM': ARM_MICRO,
+    'GCC_ARM': GCC_ARM,
+    'GCC_CR': GCC_CR,
+    'IAR': IAR
+}
+
+TOOLCHAINS = set(TOOLCHAIN_CLASSES.keys())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolchains/arm.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,249 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import re
+from os.path import join, dirname, splitext, basename, exists
+
+from tools.toolchains import mbedToolchain
+from tools.settings import ARM_BIN, ARM_INC, ARM_LIB, MY_ARM_CLIB, ARM_CPPLIB, GOANNA_PATH
+from tools.hooks import hook_tool
+from tools.utils import mkdir
+
+class ARM(mbedToolchain):
+    LINKER_EXT = '.sct'
+    LIBRARY_EXT = '.ar'
+
+    STD_LIB_NAME = "%s.ar"
+    DIAGNOSTIC_PATTERN  = re.compile('"(?P<file>[^"]+)", line (?P<line>\d+)( \(column (?P<column>\d+)\)|): (?P<severity>Warning|Error): (?P<message>.+)')
+    DEP_PATTERN = re.compile('\S+:\s(?P<file>.+)\n')
+
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
+
+        if target.core == "Cortex-M0+":
+            cpu = "Cortex-M0"
+        elif target.core == "Cortex-M4F":
+            cpu = "Cortex-M4.fp"
+        elif target.core == "Cortex-M7F":
+            cpu = "Cortex-M7.fp.sp"
+        else:
+            cpu = target.core
+
+        main_cc = join(ARM_BIN, "armcc")
+        common = ["-c",
+            "--cpu=%s" % cpu, "--gnu",
+            "-Otime", "--split_sections", "--apcs=interwork",
+            "--brief_diagnostics", "--restrict", "--multibyte_chars"
+        ]
+
+        if "save-asm" in self.options:
+            common.extend(["--asm", "--interleave"])
+
+        if "debug-info" in self.options:
+            common.append("-O0")
+        else:
+            common.append("-O3")
+        # add debug symbols for all builds
+        common.append("-g")
+
+        common_c = [
+            "--md", "--no_depend_system_headers",
+            '-I%s' % ARM_INC
+        ]
+
+        self.asm = [main_cc] + common + ['-I%s' % ARM_INC]
+        if not "analyze" in self.options:
+            self.cc = [main_cc] + common + common_c + ["--c99"]
+            self.cppc = [main_cc] + common + common_c + ["--cpp", "--no_rtti"]
+        else:
+            self.cc  = [join(GOANNA_PATH, "goannacc"), "--with-cc=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + common + common_c + ["--c99"]
+            self.cppc= [join(GOANNA_PATH, "goannac++"), "--with-cxx=" + main_cc.replace('\\', '/'), "--dialect=armcc", '--output-format="%s"' % self.GOANNA_FORMAT] + 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 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'),
+                    target_name=self.target.name,
+                    toolchain_name=self.name
+                )
+            match = self.goanna_parse_line(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_option(self, object):
+        base, _ = splitext(object)
+        dep_path = base + '.d'
+        return ["--depend", dep_path]
+
+    def get_compile_options(self, defines, includes):        
+        return ['-D%s' % d for d in defines] + ['--via', self.get_inc_file(includes)]
+
+    @hook_tool
+    def assemble(self, source, object, includes):
+        # Preprocess first, then assemble
+        dir = join(dirname(object), '.temp')
+        mkdir(dir)
+        tempfile = join(dir, basename(object) + '.E.s')
+        
+        # Build preprocess assemble command
+        cmd_pre = self.asm + self.get_compile_options(self.get_symbols(), includes) + ["-E", "-o", tempfile, source]
+
+        # Build main assemble command
+        cmd = self.asm + ["-o", object, tempfile]
+
+        # Call cmdline hook
+        cmd_pre = self.hook.get_cmdline_assembler(cmd_pre)
+        cmd = self.hook.get_cmdline_assembler(cmd)
+       
+        # Return command array, don't execute
+        return [cmd_pre, cmd]
+
+    @hook_tool
+    def compile(self, cc, source, object, includes):
+        # Build compile command
+        cmd = cc + self.get_compile_options(self.get_symbols(), includes)
+        
+        cmd.extend(self.get_dep_option(object))
+            
+        cmd.extend(["-o", object, source])
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_compiler(cmd)
+
+        return [cmd]
+
+    def compile_c(self, source, object, includes):
+        return self.compile(self.cc, source, object, includes)
+
+    def compile_cpp(self, source, object, includes):
+        return self.compile(self.cppc, source, object, includes)
+
+    @hook_tool
+    def link(self, output, objects, libraries, lib_dirs, mem_map):
+        if len(lib_dirs):
+            args = ["-o", output, "--userlibpath", ",".join(lib_dirs), "--info=totals", "--list=.link_totals.txt"]
+        else:
+            args = ["-o", output, "--info=totals", "--list=.link_totals.txt"]
+
+        if mem_map:
+            args.extend(["--scatter", mem_map])
+
+        # Build linker command
+        cmd = self.ld + args + objects + libraries + self.sys_libs
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_linker(cmd)
+
+        # Split link command to linker executable + response file
+        link_files = join(dirname(output), ".link_files.txt")
+        with open(link_files, "wb") as f:
+            cmd_linker = cmd[0]
+            cmd_list = []
+            for c in cmd[1:]:
+                if c:
+                    cmd_list.append(('"%s"' % c) if not c.startswith('-') else c)                    
+            string = " ".join(cmd_list).replace("\\", "/")
+            f.write(string)
+
+        # Exec command
+        self.default_cmd([cmd_linker, '--via', link_files])
+
+    @hook_tool
+    def archive(self, objects, lib_path):
+        archive_files = join(dirname(lib_path), ".archive_files.txt")
+        with open(archive_files, "wb") as f:
+            o_list = []
+            for o in objects:
+                o_list.append('"%s"' % o)                    
+            string = " ".join(o_list).replace("\\", "/")
+            f.write(string)
+
+        # Exec command
+        self.default_cmd([self.ar, '-r', lib_path, '--via', archive_files])
+
+    @hook_tool
+    def binary(self, resources, elf, bin):
+        # Build binary command
+        cmd = [self.elf2bin, '--bin', '-o', bin, elf]
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_binary(cmd)
+
+        # Exec command
+        self.default_cmd(cmd)
+
+
+class ARM_STD(ARM):
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
+        self.cc   += ["-D__ASSERT_MSG"]
+        self.cppc += ["-D__ASSERT_MSG"]
+        self.ld.extend(["--libpath", ARM_LIB])
+
+
+class ARM_MICRO(ARM):
+    PATCHED_LIBRARY = False
+
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
+
+        # Compiler
+        self.asm  += ["-D__MICROLIB"]
+        self.cc   += ["--library_type=microlib", "-D__MICROLIB", "-D__ASSERT_MSG"]
+        self.cppc += ["--library_type=microlib", "-D__MICROLIB", "-D__ASSERT_MSG"]
+
+        # 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.extend(["--libpath", ARM_LIB])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolchains/gcc.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,299 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import re
+from os.path import join, basename, splitext, dirname, exists
+
+from tools.toolchains import mbedToolchain
+from tools.settings import GCC_ARM_PATH, GCC_CR_PATH
+from tools.settings import GOANNA_PATH
+from tools.hooks import hook_tool
+
+class GCC(mbedToolchain):
+    LINKER_EXT = '.ld'
+    LIBRARY_EXT = '.a'
+
+    STD_LIB_NAME = "lib%s.a"
+    CIRCULAR_DEPENDENCIES = True
+    DIAGNOSTIC_PATTERN = re.compile('((?P<line>\d+):)(\d+:)? (?P<severity>warning|error): (?P<message>.+)')
+
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, tool_path="", extra_verbose=False):
+        mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
+
+        if target.core == "Cortex-M0+":
+            cpu = "cortex-m0plus"
+        elif target.core == "Cortex-M4F":
+            cpu = "cortex-m4"
+        elif target.core == "Cortex-M7F":
+            cpu = "cortex-m7"
+        else:
+            cpu = target.core.lower()
+
+        self.cpu = ["-mcpu=%s" % cpu]
+        if target.core.startswith("Cortex"):
+            self.cpu.append("-mthumb")
+
+        if target.core == "Cortex-M4F":
+            self.cpu.append("-mfpu=fpv4-sp-d16")
+            self.cpu.append("-mfloat-abi=softfp")
+        elif target.core == "Cortex-M7F":
+            self.cpu.append("-mfpu=fpv5-d16")
+            self.cpu.append("-mfloat-abi=softfp")
+
+        if target.core == "Cortex-A9":
+            self.cpu.append("-mthumb-interwork")
+            self.cpu.append("-marm")
+            self.cpu.append("-march=armv7-a")
+            self.cpu.append("-mfpu=vfpv3")
+            self.cpu.append("-mfloat-abi=hard")
+            self.cpu.append("-mno-unaligned-access")
+
+
+        # 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", "-Wall", "-Wextra",
+            "-Wno-unused-parameter", "-Wno-missing-field-initializers",
+            "-fmessage-length=0", "-fno-exceptions", "-fno-builtin",
+            "-ffunction-sections", "-fdata-sections",
+            "-fno-delete-null-pointer-checks", "-fomit-frame-pointer"
+            ] + self.cpu
+
+        if "save-asm" in self.options:
+            common_flags.append("-save-temps")
+
+        if "debug-info" in self.options:
+            common_flags.append("-O0")
+        else:
+            common_flags.append("-O2")
+        # add debug symbols for all builds
+        common_flags.append("-g")
+
+        main_cc = join(tool_path, "arm-none-eabi-gcc")
+        main_cppc = join(tool_path, "arm-none-eabi-g++")
+        self.asm = [main_cc, "-x", "assembler-with-cpp"] + common_flags
+        if not "analyze" in self.options:
+            self.cc  = [main_cc, "-std=gnu99"] + common_flags
+            self.cppc =[main_cppc, "-std=gnu++98", "-fno-rtti"] + common_flags
+        else:
+            self.cc  = [join(GOANNA_PATH, "goannacc"), "--with-cc=" + main_cc.replace('\\', '/'), "-std=gnu99", "--dialect=gnu", '--output-format="%s"' % self.GOANNA_FORMAT] + common_flags
+            self.cppc= [join(GOANNA_PATH, "goannac++"), "--with-cxx=" + main_cppc.replace('\\', '/'), "-std=gnu++98", "-fno-rtti", "--dialect=gnu", '--output-format="%s"' % self.GOANNA_FORMAT] + common_flags
+
+        self.ld = [join(tool_path, "arm-none-eabi-gcc"), "-Wl,--gc-sections", "-Wl,--wrap,main"] + 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 parse_dependencies(self, dep_path):
+        dependencies = []
+        buff = open(dep_path).readlines()
+        buff[0] = re.sub('^(.*?)\: ', '', buff[0])
+        for line in buff:
+            file = line.replace('\\\n', '').strip()
+            if file:
+                # GCC might list more than one dependency on a single line, in this case
+                # the dependencies are separated by a space. However, a space might also
+                # indicate an actual space character in a dependency path, but in this case
+                # the space character is prefixed by a backslash.
+                # Temporary replace all '\ ' with a special char that is not used (\a in this
+                # case) to keep them from being interpreted by 'split' (they will be converted
+                # back later to a space char)
+                file = file.replace('\\ ', '\a')
+                if file.find(" ") == -1:
+                    dependencies.append(file.replace('\a', ' '))
+                else:
+                    dependencies = dependencies + [f.replace('\a', ' ') for f in file.split(" ")]
+        return dependencies
+
+    def is_not_supported_error(self, output):
+        return "error: #error [NOT_SUPPORTED]" in output
+
+    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():
+            match = self.goanna_parse_line(line)
+            if match is not None:
+                self.cc_info(
+                    match.group('severity').lower(),
+                    match.group('file'),
+                    match.group('line'),
+                    match.group('message'),
+                    target_name=self.target.name,
+                    toolchain_name=self.name
+                )
+                continue
+
+            # 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 get_dep_option(self, object):
+        base, _ = splitext(object)
+        dep_path = base + '.d'
+        return ["-MD", "-MF", dep_path]
+
+    def get_compile_options(self, defines, includes):
+        return ['-D%s' % d for d in defines] + ['@%s' % self.get_inc_file(includes)]
+
+    @hook_tool
+    def assemble(self, source, object, includes):
+        # Build assemble command
+        cmd = self.asm + self.get_compile_options(self.get_symbols(), includes) + ["-o", object, source]
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_assembler(cmd)
+
+        # Return command array, don't execute
+        return [cmd]
+
+    @hook_tool
+    def compile(self, cc, source, object, includes):
+        # Build compile command
+        cmd = cc + self.get_compile_options(self.get_symbols(), includes)
+
+        cmd.extend(self.get_dep_option(object))
+
+        cmd.extend(["-o", object, source])
+        
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_compiler(cmd)
+
+        return [cmd]
+
+    def compile_c(self, source, object, includes):
+        return self.compile(self.cc, source, object, includes)
+
+    def compile_cpp(self, source, object, includes):
+        return self.compile(self.cppc, source, object, includes)
+
+    @hook_tool
+    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)
+        
+        # Build linker command
+        cmd = self.ld + ["-o", output] + objects
+        
+        if mem_map:
+            cmd.extend(['-T', mem_map])
+            
+        for L in lib_dirs:
+            cmd.extend(['-L', L])
+        cmd.extend(libs)
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_linker(cmd)
+
+        # Split link command to linker executable + response file
+        link_files = join(dirname(output), ".link_files.txt")
+        with open(link_files, "wb") as f:
+            cmd_linker = cmd[0]
+            cmd_list = []
+            for c in cmd[1:]:
+                if c:
+                    cmd_list.append(('"%s"' % c) if not c.startswith('-') else c)   
+            string = " ".join(cmd_list).replace("\\", "/")
+            f.write(string)
+
+        # Exec command
+        self.default_cmd([cmd_linker, "@%s" % link_files])
+
+    @hook_tool
+    def archive(self, objects, lib_path):
+        archive_files = join(dirname(lib_path), ".archive_files.txt")
+        with open(archive_files, "wb") as f:
+            o_list = []
+            for o in objects:
+                o_list.append('"%s"' % o)                    
+            string = " ".join(o_list).replace("\\", "/")
+            f.write(string)
+
+        # Exec command
+        self.default_cmd([self.ar, 'rcs', lib_path, "@%s" % archive_files])
+
+    @hook_tool
+    def binary(self, resources, elf, bin):
+        # Build binary command
+        cmd = [self.elf2bin, "-O", "binary", elf, bin]
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_binary(cmd)
+
+        # Exec command
+        self.default_cmd(cmd)
+
+
+class GCC_ARM(GCC):
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        GCC.__init__(self, target, options, notify, macros, silent, GCC_ARM_PATH, extra_verbose=extra_verbose)
+
+        # Use latest gcc nanolib
+        self.ld.append("--specs=nano.specs")
+        if target.name in ["LPC1768", "LPC4088", "LPC4088_DM", "LPC4330", "UBLOX_C027", "LPC2368"]:
+            self.ld.extend(["-u _printf_float", "-u _scanf_float"])
+        elif target.name in ["RZ_A1H", "ARCH_MAX", "DISCO_F407VG", "DISCO_F429ZI", "DISCO_F469NI", "NUCLEO_F401RE", "NUCLEO_F410RB", "NUCLEO_F411RE", "NUCLEO_F446RE", "ELMO_F411RE", "MTS_MDOT_F411RE", "MTS_DRAGONFLY_F411RE", "DISCO_F746NG"]:
+            self.ld.extend(["-u_printf_float", "-u_scanf_float"])
+
+        self.sys_libs.append("nosys")
+
+
+class GCC_CR(GCC):
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        GCC.__init__(self, target, options, notify, macros, silent, GCC_CR_PATH, extra_verbose=extra_verbose)
+
+        additional_compiler_flags = [
+            "-D__NEWLIB__", "-D__CODE_RED", "-D__USE_CMSIS", "-DCPP_USE_HEAP",
+        ]
+        self.cc += additional_compiler_flags
+        self.cppc += additional_compiler_flags
+
+        # Use latest gcc nanolib
+        self.ld.append("--specs=nano.specs")
+        if target.name in ["LPC1768", "LPC4088", "LPC4088_DM", "LPC4330", "UBLOX_C027", "LPC2368"]:
+            self.ld.extend(["-u _printf_float", "-u _scanf_float"])
+        self.ld += ["-nostdlib"]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolchains/iar.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,194 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import re
+from os import remove
+from os.path import join, exists, dirname, splitext, exists
+
+from tools.toolchains import mbedToolchain
+from tools.settings import IAR_PATH
+from tools.settings import GOANNA_PATH
+from tools.hooks import hook_tool
+
+class IAR(mbedToolchain):
+    LIBRARY_EXT = '.a'
+    LINKER_EXT = '.icf'
+    STD_LIB_NAME = "%s.a"
+
+    DIAGNOSTIC_PATTERN = re.compile('"(?P<file>[^"]+)",(?P<line>[\d]+)\s+(?P<severity>Warning|Error)(?P<message>.+)')
+
+    def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
+        mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
+        if target.core == "Cortex-M7F":
+            cpuchoice = "Cortex-M7"
+        else:
+            cpuchoice = target.core
+        c_flags = [
+            "--cpu=%s" % cpuchoice, "--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",
+        ]
+
+        if target.core == "Cortex-M7F":
+            c_flags.append("--fpu=VFPv5_sp")
+                
+
+        if "debug-info" in self.options:
+            c_flags.append("-On")
+        else:
+            c_flags.append("-Oh")
+        # add debug symbols for all builds
+        c_flags.append("-r")
+
+        IAR_BIN = join(IAR_PATH, "bin")
+        main_cc = join(IAR_BIN, "iccarm")
+        self.asm  = [join(IAR_BIN, "iasmarm")] + ["--cpu", cpuchoice]
+        if not "analyze" in self.options:
+            self.cc   = [main_cc] + c_flags
+            self.cppc = [main_cc, "--c++",  "--no_rtti", "--no_exceptions"] + c_flags
+        else:
+            self.cc   = [join(GOANNA_PATH, "goannacc"), '--with-cc="%s"' % main_cc.replace('\\', '/'), "--dialect=iar-arm", '--output-format="%s"' % self.GOANNA_FORMAT] + c_flags
+            self.cppc = [join(GOANNA_PATH, "goannac++"), '--with-cxx="%s"' % main_cc.replace('\\', '/'), "--dialect=iar-arm", '--output-format="%s"' % self.GOANNA_FORMAT] + ["--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_dependencies(self, dep_path):
+        return [path.strip() for path in open(dep_path).readlines()
+                if (path and not path.isspace())]
+
+    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'),
+                    target_name=self.target.name,
+                    toolchain_name=self.name
+                )
+            match = self.goanna_parse_line(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_option(self, object):
+        base, _ = splitext(object)
+        dep_path = base + '.d'
+        return ["--dependencies", dep_path]
+
+    def cc_extra(self, object):
+        base, _ = splitext(object)
+        return ["-l", base + '.s']
+
+    def get_compile_options(self, defines, includes):
+        return ['-D%s' % d for d in defines] + ['-f', self.get_inc_file(includes)]
+
+    @hook_tool
+    def assemble(self, source, object, includes):
+        # Build assemble command
+        cmd = self.asm + self.get_compile_options(self.get_symbols(), includes) + ["-o", object, source]
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_assembler(cmd)
+
+        # Return command array, don't execute
+        return [cmd]
+
+    @hook_tool
+    def compile(self, cc, source, object, includes):
+        # Build compile command
+        cmd = cc +  self.get_compile_options(self.get_symbols(), includes)
+
+        cmd.extend(self.get_dep_option(object))
+
+        cmd.extend(self.cc_extra(object))
+        
+        cmd.extend(["-o", object, source])
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_compiler(cmd)
+
+        return [cmd]
+
+    def compile_c(self, source, object, includes):
+        return self.compile(self.cc, source, object, includes)
+
+    def compile_cpp(self, source, object, includes):
+        return self.compile(self.cppc, source, object, includes)
+
+    @hook_tool
+    def link(self, output, objects, libraries, lib_dirs, mem_map):
+        # Build linker command
+        cmd = [self.ld, "-o", output, "--skip_dynamic_initialization"] + objects + libraries
+
+        if mem_map:
+            args.extend(["--config", mem_map])
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_linker(cmd)
+
+        # Split link command to linker executable + response file
+        link_files = join(dirname(output), ".link_files.txt")
+        with open(link_files, "wb") as f:
+            cmd_linker = cmd[0]
+            cmd_list = []
+            for c in cmd[1:]:
+                if c:
+                    cmd_list.append(('"%s"' % c) if not c.startswith('-') else c)                    
+            string = " ".join(cmd_list).replace("\\", "/")
+            f.write(string)
+
+        # Exec command
+        self.default_cmd([cmd_linker, '-f', link_files])
+
+    @hook_tool
+    def archive(self, objects, lib_path):
+        archive_files = join(dirname(lib_path), ".archive_files.txt")
+        with open(archive_files, "wb") as f:
+            o_list = []
+            for o in objects:
+                o_list.append('"%s"' % o)                    
+            string = " ".join(o_list).replace("\\", "/")
+            f.write(string)
+
+        if exists(lib_path):
+            remove(lib_path)
+
+        self.default_cmd([self.ar, lib_path, '-f', archive_files])
+
+    @hook_tool
+    def binary(self, resources, elf, bin):
+        # Build binary command
+        cmd = [self.elf2bin, "--bin", elf, bin]
+
+        # Call cmdline hook
+        cmd = self.hook.get_cmdline_binary(cmd)
+
+        # Exec command
+        self.default_cmd(cmd)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upload_results.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,320 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import sys
+import argparse
+import xml.etree.ElementTree as ET
+import requests
+import urlparse
+
+def create_headers(args):
+    return { 'X-Api-Key':  args.api_key }
+
+def finish_command(command, response):
+    print(command, response.status_code, response.reason)
+    print(response.text)
+
+    if response.status_code < 400:
+        sys.exit(0)
+    else:
+        sys.exit(2)
+
+def create_build(args):
+    build = {}
+    build['buildType'] = args.build_type
+    build['number'] = args.build_number
+    build['source'] = args.build_source
+    build['status'] = 'running'
+
+    r = requests.post(urlparse.urljoin(args.url, "api/builds"), headers=create_headers(args), json=build)
+
+    if r.status_code < 400:
+        if args.property_file_format:
+            print("MBED_BUILD_ID=" + r.text)
+        else:
+            print(r.text)
+
+        sys.exit(0)
+    else:
+        sys.exit(2)
+
+def finish_build(args):
+    data = {}
+    data['status'] = 'completed'
+
+    r = requests.put(urlparse.urljoin(args.url, "api/builds/" + args.build_id), headers=create_headers(args), json=data)
+    finish_command('finish-build', r)
+
+def promote_build(args):
+    data = {}
+    data['buildType'] = 'Release'
+
+    r = requests.put(urlparse.urljoin(args.url, "api/builds/" + args.build_id), headers=create_headers(args), json=data)
+    finish_command('promote-build', r)
+
+def abort_build(args):
+    data = {}
+    data['status'] = 'aborted'
+
+    r = requests.put(urlparse.urljoin(args.url, "api/builds/" + args.build_id), headers=create_headers(args), json=data)
+    finish_command('abort-build', r)
+
+def add_project_runs(args):
+    '''
+    -------------------------------------
+    Notes on 'project_run_data' structure:
+    --------------------------------------
+        'projectRuns' - Tree structure used to keep track of what projects have
+            been logged in different report files. The tree is organized as follows:
+
+            'projectRuns': {                - Root element of tree
+
+                'hostOs': {                 - Host OS on which project was built/tested
+                                                - ex. windows, linux, or mac
+
+                    'platform': {           - Platform for which project was built/tested
+                                              (Corresponds to platform names in targets.py)
+                                                - ex. K64F, LPC1768, NRF51822, etc.
+
+                        'toolchain': {      - Toolchain with which project was built/tested
+                                              (Corresponds to TOOLCHAIN_CLASSES names in toolchains/__init__.py)
+                                                - ex. ARM, uARM, GCC_ARM, etc.
+
+                            'project': {    - Project that was build/tested
+                                              (Corresponds to test id in tests.py or library id in libraries.py)
+                                                - For tests, ex. MBED_A1, MBED_11, DTCT_1 etc.
+                                                - For libraries, ex. MBED, RTX, RTOS, etc.
+
+                            },
+                            ...
+                        },
+                        ...
+                    },
+                    ...
+                }
+            }
+
+        'platforms_set' - Set of all the platform names mentioned in the given report files
+
+        'toolchains_set' - Set of all the toolchain names mentioned in the given report files
+
+        'names_set' - Set of all the project names mentioned in the given report files
+
+        'hostOses_set' - Set of all the host names given (only given by the command line arguments)
+    '''
+
+    project_run_data = {}
+    project_run_data['projectRuns'] = {}
+    project_run_data['platforms_set'] = set()
+    project_run_data['vendors_set'] = set()
+    project_run_data['toolchains_set'] = set()
+    project_run_data['names_set'] = set()
+    project_run_data['hostOses_set'] = set()
+    project_run_data['hostOses_set'].add(args.host_os)
+
+    add_report(project_run_data, args.build_report, True, args.build_id, args.host_os)
+
+    if (args.test_report):
+        add_report(project_run_data, args.test_report, False, args.build_id, args.host_os)
+
+    ts_data = format_project_run_data(project_run_data)
+    r = requests.post(urlparse.urljoin(args.url, "api/projectRuns"), headers=create_headers(args), json=ts_data)
+    finish_command('add-project-runs', r)
+
+def format_project_run_data(project_run_data):
+    ts_data = {}
+    ts_data['projectRuns'] = []
+
+    for hostOs in project_run_data['projectRuns'].values():
+        for platform in hostOs.values():
+            for toolchain in platform.values():
+                for project in toolchain.values():
+                    ts_data['projectRuns'].append(project)
+
+    ts_data['platforms'] = list(project_run_data['platforms_set'])
+    ts_data['vendors'] = list(project_run_data['vendors_set'])
+    ts_data['toolchains'] = list(project_run_data['toolchains_set'])
+    ts_data['names'] = list(project_run_data['names_set'])
+    ts_data['hostOses'] = list(project_run_data['hostOses_set'])
+
+    return ts_data
+
+def find_project_run(projectRuns, project):
+    keys = ['hostOs', 'platform', 'toolchain', 'project']
+
+    elem = projectRuns
+
+    for key in keys:
+        if not project[key] in elem:
+            return None
+
+        elem = elem[project[key]]
+
+    return elem
+
+def add_project_run(projectRuns, project):
+    keys = ['hostOs', 'platform', 'toolchain']
+
+    elem = projectRuns
+
+    for key in keys:
+        if not project[key] in elem:
+            elem[project[key]] = {}
+
+        elem = elem[project[key]]
+
+    elem[project['project']] = project
+
+def update_project_run_results(project_to_update, project, is_build):
+    if is_build:
+        project_to_update['buildPass'] = project['buildPass']
+        project_to_update['buildResult'] = project['buildResult']
+        project_to_update['buildOutput'] = project['buildOutput']
+    else:
+        project_to_update['testPass'] = project['testPass']
+        project_to_update['testResult'] = project['testResult']
+        project_to_update['testOutput'] = project['testOutput']
+
+def update_project_run(projectRuns, project, is_build):
+    found_project = find_project_run(projectRuns, project)
+    if found_project:
+        update_project_run_results(found_project, project, is_build)
+    else:
+        add_project_run(projectRuns, project)
+
+def add_report(project_run_data, report_file, is_build, build_id, host_os):
+    tree = None
+
+    try:
+        tree = ET.parse(report_file)
+    except:
+        print(sys.exc_info()[0])
+        print('Invalid path to report: %s', report_file)
+        sys.exit(1)
+
+    test_suites = tree.getroot()
+
+    for test_suite in test_suites:
+        platform = ""
+        toolchain = ""
+        vendor = ""
+        for properties in test_suite.findall('properties'):
+            for property in properties.findall('property'):
+                if property.attrib['name'] == 'target':
+                    platform = property.attrib['value']
+                    project_run_data['platforms_set'].add(platform)
+                elif property.attrib['name'] == 'toolchain':
+                    toolchain = property.attrib['value']
+                    project_run_data['toolchains_set'].add(toolchain)
+                elif property.attrib['name'] == 'vendor':
+                    vendor = property.attrib['value']
+                    project_run_data['vendors_set'].add(vendor)
+
+        for test_case in test_suite.findall('testcase'):
+            projectRun = {}
+            projectRun['build'] = build_id
+            projectRun['hostOs'] = host_os
+            projectRun['platform'] = platform
+            projectRun['toolchain'] = toolchain
+            projectRun['project'] = test_case.attrib['classname'].split('.')[-1]
+            projectRun['vendor'] = vendor
+
+            project_run_data['names_set'].add(projectRun['project'])
+
+            should_skip = False
+            skips = test_case.findall('skipped')
+
+            if skips:
+                should_skip = skips[0].attrib['message'] == 'SKIP'
+
+            if not should_skip:
+                system_outs = test_case.findall('system-out')
+
+                output = ""
+                if system_outs:
+                    output = system_outs[0].text
+
+                if is_build:
+                    projectRun['buildOutput'] = output
+                else:
+                    projectRun['testOutput'] = output
+
+                errors = test_case.findall('error')
+                failures = test_case.findall('failure')
+                projectRunPass = None
+                result = None
+
+                if errors:
+                    projectRunPass = False
+                    result = errors[0].attrib['message']
+                elif failures:
+                    projectRunPass = False
+                    result = failures[0].attrib['message']
+                elif skips:
+                    projectRunPass = True
+                    result = skips[0].attrib['message']
+                else:
+                    projectRunPass = True
+                    result = 'OK'
+
+                if is_build:
+                    projectRun['buildPass'] = projectRunPass
+                    projectRun['buildResult'] = result
+                else:
+                    projectRun['testPass'] = projectRunPass
+                    projectRun['testResult'] = result
+
+                update_project_run(project_run_data['projectRuns'], projectRun, is_build)
+
+def main(arguments):
+    # Register and parse command line arguments
+    parser = argparse.ArgumentParser()
+    parser.add_argument('-u', '--url', required=True, help='url to ci site')
+    parser.add_argument('-k', '--api-key', required=True, help='api-key for posting data')
+
+    subparsers = parser.add_subparsers(help='subcommand help')
+
+    create_build_parser = subparsers.add_parser('create-build', help='create a new build')
+    create_build_parser.add_argument('-b', '--build-number', required=True, help='build number')
+    create_build_parser.add_argument('-T', '--build-type', choices=['Nightly', 'Limited', 'Pull_Request', 'Release_Candidate'], required=True, help='type of build')
+    create_build_parser.add_argument('-s', '--build-source', required=True, help='url to source of build')
+    create_build_parser.add_argument('-p', '--property-file-format', action='store_true', help='print result in the property file format')
+    create_build_parser.set_defaults(func=create_build)
+
+    finish_build_parser = subparsers.add_parser('finish-build', help='finish a running build')
+    finish_build_parser.add_argument('-b', '--build-id', required=True, help='build id')
+    finish_build_parser.set_defaults(func=finish_build)
+
+    finish_build_parser = subparsers.add_parser('promote-build', help='promote a build to a release')
+    finish_build_parser.add_argument('-b', '--build-id', required=True, help='build id')
+    finish_build_parser.set_defaults(func=promote_build)
+
+    abort_build_parser = subparsers.add_parser('abort-build', help='abort a running build')
+    abort_build_parser.add_argument('-b', '--build-id', required=True, help='build id')
+    abort_build_parser.set_defaults(func=abort_build)
+
+    add_project_runs_parser = subparsers.add_parser('add-project-runs', help='add project runs to a build')
+    add_project_runs_parser.add_argument('-b', '--build-id', required=True, help='build id')
+    add_project_runs_parser.add_argument('-r', '--build-report', required=True, help='path to junit xml build report')
+    add_project_runs_parser.add_argument('-t', '--test-report', required=False, help='path to junit xml test report')
+    add_project_runs_parser.add_argument('-o', '--host-os', required=True, help='host os on which test was run')
+    add_project_runs_parser.set_defaults(func=add_project_runs)
+
+    args = parser.parse_args(arguments)
+    args.func(args)
+
+if __name__ == '__main__':
+    main(sys.argv[1:])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils.py	Thu May 19 19:44:41 2016 +0100
@@ -0,0 +1,176 @@
+"""
+mbed SDK
+Copyright (c) 2011-2013 ARM Limited
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+import sys
+import inspect
+import os
+from os import listdir, remove, makedirs
+from shutil import copyfile
+from os.path import isdir, join, exists, split, relpath, splitext
+from subprocess import Popen, PIPE, STDOUT, call
+
+
+def cmd(l, check=True, verbose=False, shell=False, cwd=None):
+    text = l if shell else ' '.join(l)
+    if verbose:
+        print text
+    rc = call(l, shell=shell, cwd=cwd)
+    if check and rc != 0:
+        raise Exception('ERROR %d: "%s"' % (rc, text))
+
+
+def run_cmd(command, wd=None, redirect=False):
+    assert is_cmd_valid(command[0])
+    try:
+        p = Popen(command, stdout=PIPE, stderr=STDOUT if redirect else PIPE, cwd=wd)
+        _stdout, _stderr = p.communicate()
+    except:
+        print "[OS ERROR] Command: "+(' '.join(command))
+        raise
+    return _stdout, _stderr, p.returncode
+
+
+def run_cmd_ext(command):
+    assert is_cmd_valid(command[0])
+    p = Popen(command, stdout=PIPE, stderr=PIPE)
+    _stdout, _stderr = p.communicate()
+    return _stdout, _stderr, p.returncode
+
+
+def is_cmd_valid(cmd):
+    caller = get_caller_name()
+    abspath = find_cmd_abspath(cmd)
+    if not abspath:
+        error("%s: Command '%s' can't be found" % (caller, cmd))
+    if not is_exec(abspath):
+        error("%s: Command '%s' resolves to file '%s' which is not executable" % (caller, cmd, abspath))
+    return True
+
+
+def is_exec(path):
+    return os.access(path, os.X_OK) or os.access(path+'.exe', os.X_OK)
+
+
+def find_cmd_abspath(cmd):
+    """ Returns the absolute path to a command.
+        None is returned if no absolute path was found.
+    """
+    if exists(cmd) or exists(cmd + '.exe'):
+        return os.path.abspath(cmd)
+    if not 'PATH' in os.environ:
+        raise Exception("Can't find command path for current platform ('%s')" % sys.platform)
+    PATH=os.environ['PATH']
+    for path in PATH.split(os.pathsep):
+        abspath = '%s/%s' % (path, cmd)
+        if exists(abspath) or exists(abspath + '.exe'):
+            return abspath
+
+
+def mkdir(path):
+    if not exists(path):
+        makedirs(path)
+
+
+def copy_file(src, dst):
+    """ Implement the behaviour of "shutil.copy(src, dst)" without copying the
+        permissions (this was causing errors with directories mounted with samba)
+    """
+    if isdir(dst):
+        _, file = split(src)
+        dst = join(dst, file)
+    copyfile(src, dst)
+
+
+def delete_dir_files(dir):
+    if not exists(dir):
+        return
+
+    for f in listdir(dir):
+        file = join(dir, f)
+        if not isdir(file):
+            remove(file)
+
+
+def get_caller_name(steps=2):
+    """
+    When called inside a function, it returns the name
+    of the caller of that function.
+    """
+    return inspect.stack()[steps][3]
+
+
+def error(msg):
+    print("ERROR: %s" % msg)
+    sys.exit(1)
+
+
+def rel_path(path, base, dot=False):
+    p = relpath(path, base)
+    if dot and not p.startswith('.'):
+        p = './' + p
+    return p
+
+
+class ToolException(Exception):
+    pass
+
+class NotSupportedException(Exception):
+    pass
+
+def split_path(path):
+    base, file = split(path)
+    name, ext = splitext(file)
+    return base, name, ext
+
+
+def args_error(parser, message):
+    print "\n\n%s\n\n" % message
+    parser.print_help()
+    sys.exit()
+
+
+def construct_enum(**enums):
+    """ Create your own pseudo-enums """
+    return type('Enum', (), enums)
+
+
+def check_required_modules(required_modules, verbose=True):
+    """ Function checks for Python modules which should be "importable" (installed)
+        before test suite can be used.
+        @return returns True if all modules are installed already
+    """
+    import imp
+    not_installed_modules = []
+    for module_name in required_modules:
+        try:
+            imp.find_module(module_name)
+        except ImportError as e:
+            # We also test against a rare case: module is an egg file
+            try:
+                __import__(module_name)
+            except ImportError as e:
+                not_installed_modules.append(module_name)
+                if verbose:
+                    print "Error: %s" % e
+
+    if verbose:
+        if not_installed_modules:
+            print "Warning: Module(s) %s not installed. Please install required module(s) before using this script."% (', '.join(not_installed_modules))
+
+    if not_installed_modules:
+        return False
+    else:
+        return True