Clone of official tools
Revision 0:66f3b5499f7f, committed 2016-05-19
- Comitter:
- screamer
- Date:
- Thu May 19 19:44:41 2016 +0100
- Child:
- 1:a99c8e460c5c
- Commit message:
- Initial revision
Changed in this revision
--- /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 = '▲'; + } else { + element.innerHTML = '▼'; + } + } + + 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>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>ARCH_BLE</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>ARCH_GPRS</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>ARCH_MAX</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>ARCH_PRO</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>ARM_MPS2</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</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>✓</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>✓</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>✓</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>✓</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>✓</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>✓</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>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>DELTA_DFCM_NNN40_OTA</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_F051R8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_F100RB</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_F303VC</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_F334C8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_F401VC</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_F407VG</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>DISCO_F429ZI</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>DISCO_L053C8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>HRM1017</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>K20D50M</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>K22F</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>K64F</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>KL05Z</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>KL25Z</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>KL43Z</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>KL46Z</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>LPC1114</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC11C24</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>LPC11U24</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>LPC11U24_301</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>LPC11U34_421</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>LPC11U35_401</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>-</td> + </tr> + <tr> + <td>LPC11U35_501</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>-</td> + </tr> + <tr> + <td>LPC11U35_Y5_MBUG</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>LPC11U37H_401</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC11U37_501</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>LPC11U68</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC1347</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>LPC1549</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC1768</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC2368</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>LPC4088</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC4088_DM</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</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>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPC4337</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</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>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>LPC824</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>LPCCAPPUCCINO</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + </tr> + <tr> + <td>MTS_DRAGONFLY_F411RE</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>MTS_GAMBIT</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>MTS_MDOT_F405RG</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>MTS_MDOT_F411RE</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>NRF51822</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NRF51822_BOOT</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>NRF51822_OTA</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</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>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>NRF51_DK</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NRF51_DK_BOOT</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</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>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>NRF51_DONGLE</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F030R8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F070RB</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F072RB</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F091RC</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F103RB</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F302R8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F303RE</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F334R8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F401RE</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_F411RE</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_L053R8</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_L073RZ</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>NUCLEO_L152RE</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>OC_MBUINO</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>RBLAB_BLENANO</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>RBLAB_NRF51822</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>RZ_A1H</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>SEEED_TINY_BLE</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>SEEED_TINY_BLE_BOOT</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</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>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>SSCI824</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>STM32F3XX</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>STM32F407</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>TEENSY3_1</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + </tr> + <tr> + <td>UBLOX_C027</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>✓</td> + <td>-</td> + <td>✓</td> + <td>✓</td> + </tr> + <tr> + <td>UBLOX_C029</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>WALLBOT_BLE</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>-</td> + </tr> + <tr> + <td>XADOW_M0</td> + <td>-</td> + <td>-</td> + <td>-</td> + <td>✓</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 = "✓" + 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("&", "&") + 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/> +<infoList vendor="NXP"> +<info chip="LPC1768" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC1768" package="lpc17_lqfp100.xml"> +<chip> +<name>LPC1768</name> +<family>LPC17xx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/> +<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/> +<memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/> +<prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> +<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> +<peripheralInstance derived_from="LPC17_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;0x1" id="TIMER0" location="0x40004000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;0x1" id="TIMER1" location="0x40008000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;0x1" id="TIMER2" location="0x40090000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;0x1" id="TIMER3" location="0x40094000"/> +<peripheralInstance derived_from="LPC17_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;0x1" id="RIT" location="0x400B0000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO0" location="0x2009C000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO1" location="0x2009C020"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO2" location="0x2009C040"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO3" location="0x2009C060"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO4" location="0x2009C080"/> +<peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;0x08000000" id="I2S" location="0x400A8000"/> +<peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/> +<peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;0x2=2" id="DAC" location="0x4008C000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;0x1" id="UART0" location="0x4000C000"/> +<peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;0x1" id="UART1" location="0x40010000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;0x1" id="UART2" location="0x40098000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;0x1" id="UART3" location="0x4009C000"/> +<peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;0x1" id="SPI" location="0x40020000"/> +<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;0x1" id="SSP0" location="0x40088000"/> +<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;0x1" id="SSP1" location="0x40030000"/> +<peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;0x1" id="ADC" location="0x40034000"/> +<peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/> +<peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/> +<peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x12=0x12" id="USBDEV" location="0x5000C200"/> +<peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;0x1" id="PWM" location="0x40018000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;0x1" id="I2C0" location="0x4001C000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;0x1" id="I2C1" location="0x4005C000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;0x1" id="I2C2" location="0x400A0000"/> +<peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;0x1" id="DMA" location="0x50004000"/> +<peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;0x1" id="ENET" location="0x50000000"/> +<peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/> +<peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/> +<peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;0x1" id="QEI" location="0x400bc000"/> +<peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x11=0x11" id="USBHOST" location="0x5000C000"/> +<peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/> +<peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;0x1" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/> +<peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/> +<peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/> +<peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/> +<peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANAFR" location="0x4003C000"/> +<peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCEN" location="0x40040000"/> +<peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/> +<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1" id="CANCON1" location="0x40044000"/> +<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCON2" location="0x40048000"/> +<peripheralInstance derived_from="LPC17_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;0x1" id="MCPWM" location="0x400B8000"/> +</chip> +<processor> +<name gcc_name="cortex-m3">Cortex-M3</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; # checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"; "> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; #checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin";"> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC11_12_13_32K_4K.cfx" property_3="NXP" property_4="LPC1114FN/102" property_count="5" version="60100"/> +<infoList vendor="NXP"> +<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"> +<chip> +<name>LPC1114FN/102</name> +<family>LPC11xx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash32" location="0x0" size="0x8000"/> +<memoryInstance derived_from="RAM" id="RamLoc4" location="0x10000000" size="0x1000"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/> +<peripheralInstance derived_from="UART" determined="infoFile" id="UART" location="0x40008000"/> +<peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/> +<peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/> +<peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/> +<peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/> +<peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="GPIO0" determined="infoFile" id="GPIO0" location="0x50000000"/> +<peripheralInstance derived_from="GPIO1" determined="infoFile" id="GPIO1" location="0x50010000"/> +<peripheralInstance derived_from="GPIO2" determined="infoFile" id="GPIO2" location="0x50020000"/> +<peripheralInstance derived_from="GPIO3" determined="infoFile" id="GPIO3" location="0x50030000"/> +</chip> +<processor> +<name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC11xx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U35/401" property_count="5" version="70002"/> +<infoList vendor="NXP"> +<info chip="LPC11U35/401" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U35/401" stub="crt_emu_lpc11_13_nxp"> +<chip> +<name>LPC11U35/401</name> +<family>LPC11Uxx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/> +<memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/> +<memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/> +<peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/> +<peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/> +<peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/> +<peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/> +<peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/> +<peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/> +<peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/> +<peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/> +</chip> +<processor> +<name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U35/501" property_count="5" version="70002"/> +<infoList vendor="NXP"> +<info chip="LPC11U35/501" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U35/501" stub="crt_emu_lpc11_13_nxp"> +<chip> +<name>LPC11U35/501</name> +<family>LPC11Uxx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/> +<memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/> +<memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/> +<peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/> +<peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/> +<peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/> +<peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/> +<peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/> +<peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/> +<peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/> +<peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/> +</chip> +<processor> +<name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U37H/401" property_count="5" version="70002"/> +<infoList vendor="NXP"> +<info chip="LPC11U37H/401" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U37H/401" stub="crt_emu_lpc11_13_nxp"> +<chip> +<name>LPC11U37H/401</name> +<family>LPC11Uxx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/> +<memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/> +<memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/> +<peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/> +<peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/> +<peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/> +<peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/> +<peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/> +<peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/> +<peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/> +<peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/> +</chip> +<processor> +<name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC11U6x_256K.cfx" property_3="NXP" property_4="LPC11U68" property_count="5" version="70200"/> +<infoList vendor="NXP"> <info chip="LPC11U68" flash_driver="LPC11U6x_256K.cfx" match_id="0x0" name="LPC11U68" stub="crt_emu_cm3_gen"> <chip> <name> LPC11U68</name> +<family> LPC11U6x</family> +<vendor> NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash256" location="0x0" size="0x40000"/> +<memoryInstance derived_from="RAM" id="Ram0_32" location="0x10000000" size="0x8000"/> +<memoryInstance derived_from="RAM" id="Ram1_2" location="0x20000000" size="0x800"/> +<memoryInstance derived_from="RAM" id="Ram2USB_2" location="0x20004000" size="0x800"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40000000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/> +<peripheralInstance derived_from="USART0" determined="infoFile" id="USART0" location="0x40008000"/> +<peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/> +<peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/> +<peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/> +<peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="I2C1" determined="infoFile" id="I2C1" location="0x40020000"/> +<peripheralInstance derived_from="RTC" determined="infoFile" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="DMATRIGMUX" determined="infoFile" id="DMATRIGMUX" location="0x40028000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/> +<peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="USART4" determined="infoFile" id="USART4" location="0x4004c000"/> +<peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/> +<peripheralInstance derived_from="GINT0" determined="infoFile" id="GINT0" location="0x4005c000"/> +<peripheralInstance derived_from="GINT1" determined="infoFile" id="GINT1" location="0x40060000"/> +<peripheralInstance derived_from="USART1" determined="infoFile" id="USART1" location="0x4006c000"/> +<peripheralInstance derived_from="USART2" determined="infoFile" id="USART2" location="0x40070000"/> +<peripheralInstance derived_from="USART3" determined="infoFile" id="USART3" location="0x40074000"/> +<peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/> +<peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x50000000"/> +<peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x50004000"/> +<peripheralInstance derived_from="SCT0" determined="infoFile" id="SCT0" location="0x5000c000"/> +<peripheralInstance derived_from="SCT1" determined="infoFile" id="SCT1" location="0x5000e000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0xa0000000"/> +<peripheralInstance derived_from="PINT" determined="infoFile" id="PINT" location="0xa0004000"/> +</chip> +<processor> +<name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC15xx_256K.cfx" property_3="NXP" property_4="LPC1549" property_count="5" version="70200"/> +<infoList vendor="NXP"> +<info chip="LPC1549" connectscript="LPC15RunBootRomConnect.scp" flash_driver="LPC15xx_256K.cfx" match_id="0x0" name="LPC1549" resetscript="LPC15RunBootRomReset.scp" stub="crt_emu_cm3_gen"> +<chip> +<name>LPC1549</name> +<family>LPC15xx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash256" location="0x0" size="0x40000"/> +<memoryInstance derived_from="RAM" id="Ram0_16" location="0x2000000" size="0x4000"/> +<memoryInstance derived_from="RAM" id="Ram1_16" location="0x2004000" size="0x4000"/> +<memoryInstance derived_from="RAM" id="Ram2_4" location="0x2008000" size="0x1000"/> +<peripheralInstance derived_from="LPC15_MPU" determined="infoFile" id="MPU" location="0xe000ed90"/> +<peripheralInstance derived_from="LPC15_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="LPC15_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="LPC15_ITM" determined="infoFile" id="ITM" location="0xe0000000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x1c000000"/> +<peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x1c004000"/> +<peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x1c00c000"/> +<peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x1c010000"/> +<peripheralInstance derived_from="SCT0" determined="infoFile" id="SCT0" location="0x1c018000"/> +<peripheralInstance derived_from="SCT1" determined="infoFile" id="SCT1" location="0x1c01c000"/> +<peripheralInstance derived_from="SCT2" determined="infoFile" id="SCT2" location="0x1c020000"/> +<peripheralInstance derived_from="SCT3" determined="infoFile" id="SCT3" location="0x1c024000"/> +<peripheralInstance derived_from="ADC0" determined="infoFile" id="ADC0" location="0x40000000"/> +<peripheralInstance derived_from="DAC" determined="infoFile" id="DAC" location="0x40004000"/> +<peripheralInstance derived_from="ACMP" determined="infoFile" id="ACMP" location="0x40008000"/> +<peripheralInstance derived_from="INMUX" determined="infoFile" id="INMUX" location="0x40014000"/> +<peripheralInstance derived_from="RTC" determined="infoFile" id="RTC" location="0x40028000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x4002c000"/> +<peripheralInstance derived_from="SWM" determined="infoFile" id="SWM" location="0x40038000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x4003c000"/> +<peripheralInstance derived_from="USART0" determined="infoFile" id="USART0" location="0x40040000"/> +<peripheralInstance derived_from="USART1" determined="infoFile" id="USART1" location="0x40044000"/> +<peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x40048000"/> +<peripheralInstance derived_from="SPI1" determined="infoFile" id="SPI1" location="0x4004c000"/> +<peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40050000"/> +<peripheralInstance derived_from="QEI" determined="infoFile" id="QEI" location="0x40058000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40074000"/> +<peripheralInstance derived_from="ADC1" determined="infoFile" id="ADC1" location="0x40080000"/> +<peripheralInstance derived_from="MRT" determined="infoFile" id="MRT" location="0x400a0000"/> +<peripheralInstance derived_from="PINT" determined="infoFile" id="PINT" location="0x400a4000"/> +<peripheralInstance derived_from="GINT0" determined="infoFile" id="GINT0" location="0x400a8000"/> +<peripheralInstance derived_from="GINT1" determined="infoFile" id="GINT1" location="0x400ac000"/> +<peripheralInstance derived_from="RIT" determined="infoFile" id="RIT" location="0x400b4000"/> +<peripheralInstance derived_from="SCTIPU" determined="infoFile" id="SCTIPU" location="0x400b8000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x400bc000"/> +<peripheralInstance derived_from="USART2" determined="infoFile" id="USART2" location="0x400c0000"/> +<peripheralInstance derived_from="C-CAN0" determined="infoFile" id="C-CAN0" location="0x400f0000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x400f8000"/> +</chip> +<processor> +<name gcc_name="cortex-m3">Cortex-M3</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/> +<infoList vendor="NXP"> +<info chip="LPC1768" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC1768" package="lpc17_lqfp100.xml"> +<chip> +<name>LPC1768</name> +<family>LPC17xx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/> +<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/> +<memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/> +<prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> +<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> +<peripheralInstance derived_from="LPC17_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;0x1" id="TIMER0" location="0x40004000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;0x1" id="TIMER1" location="0x40008000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;0x1" id="TIMER2" location="0x40090000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;0x1" id="TIMER3" location="0x40094000"/> +<peripheralInstance derived_from="LPC17_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;0x1" id="RIT" location="0x400B0000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO0" location="0x2009C000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO1" location="0x2009C020"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO2" location="0x2009C040"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO3" location="0x2009C060"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO4" location="0x2009C080"/> +<peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;0x08000000" id="I2S" location="0x400A8000"/> +<peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/> +<peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;0x2=2" id="DAC" location="0x4008C000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;0x1" id="UART0" location="0x4000C000"/> +<peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;0x1" id="UART1" location="0x40010000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;0x1" id="UART2" location="0x40098000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;0x1" id="UART3" location="0x4009C000"/> +<peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;0x1" id="SPI" location="0x40020000"/> +<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;0x1" id="SSP0" location="0x40088000"/> +<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;0x1" id="SSP1" location="0x40030000"/> +<peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;0x1" id="ADC" location="0x40034000"/> +<peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/> +<peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/> +<peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x12=0x12" id="USBDEV" location="0x5000C200"/> +<peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;0x1" id="PWM" location="0x40018000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;0x1" id="I2C0" location="0x4001C000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;0x1" id="I2C1" location="0x4005C000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;0x1" id="I2C2" location="0x400A0000"/> +<peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;0x1" id="DMA" location="0x50004000"/> +<peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;0x1" id="ENET" location="0x50000000"/> +<peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/> +<peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/> +<peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;0x1" id="QEI" location="0x400bc000"/> +<peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x11=0x11" id="USBHOST" location="0x5000C000"/> +<peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/> +<peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;0x1" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/> +<peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/> +<peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/> +<peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/> +<peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANAFR" location="0x4003C000"/> +<peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCEN" location="0x40040000"/> +<peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/> +<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1" id="CANCON1" location="0x40044000"/> +<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCON2" location="0x40048000"/> +<peripheralInstance derived_from="LPC17_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;0x1" id="MCPWM" location="0x400B8000"/> +</chip> +<processor> +<name gcc_name="cortex-m3">Cortex-M3</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; # checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"; "> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; #checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin";"> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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><?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC177x_8x_407x_8x_512.cfx" property_3="NXP" property_4="LPC4088" property_count="5" version="1"/> +<infoList vendor="NXP"><info chip="LPC4088" flash_driver="LPC177x_8x_407x_8x_512.cfx" match_id="0x481D3F47" name="LPC4088" stub="crt_emu_cm3_nxp"><chip><name>LPC4088</name> +<family>LPC407x_8x</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash512" location="0x0" size="0x80000"/> +<memoryInstance derived_from="RAM" id="RamLoc64" location="0x10000000" size="0x10000"/> +<memoryInstance derived_from="RAM" id="RamPeriph32" location="0x20000000" size="0x8000"/> +<prog_flash blocksz="0x1000" location="0x0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> +<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> +<peripheralInstance derived_from="V7M_MPU" id="MPU" location="0xe000ed90"/> +<peripheralInstance derived_from="V7M_NVIC" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V7M_DCR" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="V7M_ITM" id="ITM" location="0xe0000000"/> +<peripheralInstance derived_from="FLASHCTRL" id="FLASHCTRL" location="0x200000"/> +<peripheralInstance derived_from="GPDMA" id="GPDMA" location="0x20080000"/> +<peripheralInstance derived_from="ETHERNET" id="ETHERNET" location="0x20084000"/> +<peripheralInstance derived_from="LCD" id="LCD" location="0x20088000"/> +<peripheralInstance derived_from="USB" id="USB" location="0x2008c000"/> +<peripheralInstance derived_from="CRC" id="CRC" location="0x20090000"/> +<peripheralInstance derived_from="GPIO" id="GPIO" location="0x20098000"/> +<peripheralInstance derived_from="EMC" id="EMC" location="0x2009c000"/> +<peripheralInstance derived_from="WWDT" id="WWDT" location="0x40000000"/> +<peripheralInstance derived_from="TIMER0" id="TIMER0" location="0x40004000"/> +<peripheralInstance derived_from="TIMER1" id="TIMER1" location="0x40008000"/> +<peripheralInstance derived_from="UART0" id="UART0" location="0x4000c000"/> +<peripheralInstance derived_from="UART1" id="UART1" location="0x40010000"/> +<peripheralInstance derived_from="PWM0" id="PWM0" location="0x40014000"/> +<peripheralInstance derived_from="PWM1" id="PWM1" location="0x40018000"/> +<peripheralInstance derived_from="I2C0" id="I2C0" location="0x4001c000"/> +<peripheralInstance derived_from="COMPARATOR" id="COMPARATOR" location="0x40020000"/> +<peripheralInstance derived_from="RTC" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="GPIOINT" id="GPIOINT" location="0x40028080"/> +<peripheralInstance derived_from="IOCON" id="IOCON" location="0x4002c000"/> +<peripheralInstance derived_from="SSP1" id="SSP1" location="0x40030000"/> +<peripheralInstance derived_from="ADC" id="ADC" location="0x40034000"/> +<peripheralInstance derived_from="CANAFRAM" id="CANAFRAM" location="0x40038000"/> +<peripheralInstance derived_from="CANAF" id="CANAF" location="0x4003c000"/> +<peripheralInstance derived_from="CCAN" id="CCAN" location="0x40040000"/> +<peripheralInstance derived_from="CAN1" id="CAN1" location="0x40044000"/> +<peripheralInstance derived_from="CAN2" id="CAN2" location="0x40048000"/> +<peripheralInstance derived_from="I2C1" id="I2C1" location="0x4005c000"/> +<peripheralInstance derived_from="SSP0" id="SSP0" location="0x40088000"/> +<peripheralInstance derived_from="DAC" id="DAC" location="0x4008c000"/> +<peripheralInstance derived_from="TIMER2" id="TIMER2" location="0x40090000"/> +<peripheralInstance derived_from="TIMER3" id="TIMER3" location="0x40094000"/> +<peripheralInstance derived_from="UART2" id="UART2" location="0x40098000"/> +<peripheralInstance derived_from="UART3" id="UART3" location="0x4009c000"/> +<peripheralInstance derived_from="I2C2" id="I2C2" location="0x400a0000"/> +<peripheralInstance derived_from="UART4" id="UART4" location="0x400a4000"/> +<peripheralInstance derived_from="I2S" id="I2S" location="0x400a8000"/> +<peripheralInstance derived_from="SSP2" id="SSP2" location="0x400ac000"/> +<peripheralInstance derived_from="MCPWM" id="MCPWM" location="0x400b8000"/> +<peripheralInstance derived_from="QEI" id="QEI" location="0x400bc000"/> +<peripheralInstance derived_from="SDMMC" id="SDMMC" location="0x400c0000"/> +<peripheralInstance derived_from="SYSCON" id="SYSCON" location="0x400fc000"/> +</chip> +<processor><name gcc_name="cortex-m4">Cortex-M4</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpc407x_8x_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig></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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; # checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"; "> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; #checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin";"> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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><?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC177x_8x_407x_8x_512.cfx" property_3="NXP" property_4="LPC4088" property_count="5" version="1"/> +<infoList vendor="NXP"><info chip="LPC4088" flash_driver="LPC177x_8x_407x_8x_512.cfx" match_id="0x481D3F47" name="LPC4088" stub="crt_emu_cm3_nxp"><chip><name>LPC4088</name> +<family>LPC407x_8x</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash512" location="0x0" size="0x80000"/> +<memoryInstance derived_from="RAM" id="RamLoc64" location="0x10000000" size="0x10000"/> +<memoryInstance derived_from="RAM" id="RamPeriph32" location="0x20000000" size="0x8000"/> +<prog_flash blocksz="0x1000" location="0x0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> +<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> +<peripheralInstance derived_from="V7M_MPU" id="MPU" location="0xe000ed90"/> +<peripheralInstance derived_from="V7M_NVIC" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V7M_DCR" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="V7M_ITM" id="ITM" location="0xe0000000"/> +<peripheralInstance derived_from="FLASHCTRL" id="FLASHCTRL" location="0x200000"/> +<peripheralInstance derived_from="GPDMA" id="GPDMA" location="0x20080000"/> +<peripheralInstance derived_from="ETHERNET" id="ETHERNET" location="0x20084000"/> +<peripheralInstance derived_from="LCD" id="LCD" location="0x20088000"/> +<peripheralInstance derived_from="USB" id="USB" location="0x2008c000"/> +<peripheralInstance derived_from="CRC" id="CRC" location="0x20090000"/> +<peripheralInstance derived_from="GPIO" id="GPIO" location="0x20098000"/> +<peripheralInstance derived_from="EMC" id="EMC" location="0x2009c000"/> +<peripheralInstance derived_from="WWDT" id="WWDT" location="0x40000000"/> +<peripheralInstance derived_from="TIMER0" id="TIMER0" location="0x40004000"/> +<peripheralInstance derived_from="TIMER1" id="TIMER1" location="0x40008000"/> +<peripheralInstance derived_from="UART0" id="UART0" location="0x4000c000"/> +<peripheralInstance derived_from="UART1" id="UART1" location="0x40010000"/> +<peripheralInstance derived_from="PWM0" id="PWM0" location="0x40014000"/> +<peripheralInstance derived_from="PWM1" id="PWM1" location="0x40018000"/> +<peripheralInstance derived_from="I2C0" id="I2C0" location="0x4001c000"/> +<peripheralInstance derived_from="COMPARATOR" id="COMPARATOR" location="0x40020000"/> +<peripheralInstance derived_from="RTC" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="GPIOINT" id="GPIOINT" location="0x40028080"/> +<peripheralInstance derived_from="IOCON" id="IOCON" location="0x4002c000"/> +<peripheralInstance derived_from="SSP1" id="SSP1" location="0x40030000"/> +<peripheralInstance derived_from="ADC" id="ADC" location="0x40034000"/> +<peripheralInstance derived_from="CANAFRAM" id="CANAFRAM" location="0x40038000"/> +<peripheralInstance derived_from="CANAF" id="CANAF" location="0x4003c000"/> +<peripheralInstance derived_from="CCAN" id="CCAN" location="0x40040000"/> +<peripheralInstance derived_from="CAN1" id="CAN1" location="0x40044000"/> +<peripheralInstance derived_from="CAN2" id="CAN2" location="0x40048000"/> +<peripheralInstance derived_from="I2C1" id="I2C1" location="0x4005c000"/> +<peripheralInstance derived_from="SSP0" id="SSP0" location="0x40088000"/> +<peripheralInstance derived_from="DAC" id="DAC" location="0x4008c000"/> +<peripheralInstance derived_from="TIMER2" id="TIMER2" location="0x40090000"/> +<peripheralInstance derived_from="TIMER3" id="TIMER3" location="0x40094000"/> +<peripheralInstance derived_from="UART2" id="UART2" location="0x40098000"/> +<peripheralInstance derived_from="UART3" id="UART3" location="0x4009c000"/> +<peripheralInstance derived_from="I2C2" id="I2C2" location="0x400a0000"/> +<peripheralInstance derived_from="UART4" id="UART4" location="0x400a4000"/> +<peripheralInstance derived_from="I2S" id="I2S" location="0x400a8000"/> +<peripheralInstance derived_from="SSP2" id="SSP2" location="0x400ac000"/> +<peripheralInstance derived_from="MCPWM" id="MCPWM" location="0x400b8000"/> +<peripheralInstance derived_from="QEI" id="QEI" location="0x400bc000"/> +<peripheralInstance derived_from="SDMMC" id="SDMMC" location="0x400c0000"/> +<peripheralInstance derived_from="SYSCON" id="SYSCON" location="0x400fc000"/> +</chip> +<processor><name gcc_name="cortex-m4">Cortex-M4</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpc407x_8x_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig></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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; # checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"; "> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${BuildArtifactFileName}"; arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; #checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin";"> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{linker_script}}}"" 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="${BuildArtifactFileBaseName}.map""/> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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 "${plugin_state_location}/${specs_file}"'" 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 "${plugin_state_location}/specs.cpp"'" 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 "${plugin_state_location}/specs.c"'" 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><?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC4330" property_count="5" version="1"/> +<infoList vendor="NXP"> +<info chip="LPC4330" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC4330" package="LPC43_lqfp100.xml"> +<chip> +<name>LPC4330</name> +<family>LPC43xx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/> +<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/> +<memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/> +<prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> +<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> +<peripheralInstance derived_from="LPC43_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;0x1" id="TIMER0" location="0x40004000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;0x1" id="TIMER1" location="0x40008000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;0x1" id="TIMER2" location="0x40090000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;0x1" id="TIMER3" location="0x40094000"/> +<peripheralInstance derived_from="LPC43_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;0x1" id="RIT" location="0x400B0000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO0" location="0x2009C000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO1" location="0x2009C020"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO2" location="0x2009C040"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO3" location="0x2009C060"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO4" location="0x2009C080"/> +<peripheralInstance derived_from="LPC43_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;0x08000000" id="I2S" location="0x400A8000"/> +<peripheralInstance derived_from="LPC43_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/> +<peripheralInstance derived_from="LPC43_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;0x2=2" id="DAC" location="0x4008C000"/> +<peripheralInstance derived_from="LPC43xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;0x1" id="UART0" location="0x4000C000"/> +<peripheralInstance derived_from="LPC43xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;0x1" id="UART1" location="0x40010000"/> +<peripheralInstance derived_from="LPC43xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;0x1" id="UART2" location="0x40098000"/> +<peripheralInstance derived_from="LPC43xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;0x1" id="UART3" location="0x4009C000"/> +<peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;0x1" id="SPI" location="0x40020000"/> +<peripheralInstance derived_from="LPC43_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;0x1" id="SSP0" location="0x40088000"/> +<peripheralInstance derived_from="LPC43_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;0x1" id="SSP1" location="0x40030000"/> +<peripheralInstance derived_from="LPC43_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;0x1" id="ADC" location="0x40034000"/> +<peripheralInstance derived_from="LPC43_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/> +<peripheralInstance derived_from="LPC43_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/> +<peripheralInstance derived_from="LPC43_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x12=0x12" id="USBDEV" location="0x5000C200"/> +<peripheralInstance derived_from="LPC43_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;0x1" id="PWM" location="0x40018000"/> +<peripheralInstance derived_from="LPC43_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;0x1" id="I2C0" location="0x4001C000"/> +<peripheralInstance derived_from="LPC43_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;0x1" id="I2C1" location="0x4005C000"/> +<peripheralInstance derived_from="LPC43_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;0x1" id="I2C2" location="0x400A0000"/> +<peripheralInstance derived_from="LPC43_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;0x1" id="DMA" location="0x50004000"/> +<peripheralInstance derived_from="LPC43_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;0x1" id="ENET" location="0x50000000"/> +<peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/> +<peripheralInstance derived_from="LPC43_PCB" determined="infoFile" id="PCB" location="0x4002c000"/> +<peripheralInstance derived_from="LPC43_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;0x1" id="QEI" location="0x400bc000"/> +<peripheralInstance derived_from="LPC43_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x11=0x11" id="USBHOST" location="0x5000C000"/> +<peripheralInstance derived_from="LPC43_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/> +<peripheralInstance derived_from="LPC43_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;0x1" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/> +<peripheralInstance derived_from="LPC4x_WDT" determined="infoFile" id="WDT" location="0x40000000"/> +<peripheralInstance derived_from="LPC43_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/> +<peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/> +<peripheralInstance derived_from="LPC43_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANAFR" location="0x4003C000"/> +<peripheralInstance derived_from="LPC43_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCEN" location="0x40040000"/> +<peripheralInstance derived_from="LPC43_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/> +<peripheralInstance derived_from="LPC43_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1" id="CANCON1" location="0x40044000"/> +<peripheralInstance derived_from="LPC43_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCON2" location="0x40048000"/> +<peripheralInstance derived_from="LPC43_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;0x1" id="MCPWM" location="0x400B8000"/> +</chip> +<processor> +<name gcc_name="cortex-m4">Cortex-M4</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig></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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC800_32.cfx" property_3="NXP" property_4="LPC824" property_count="5" version="70200"/> +<infoList vendor="NXP"><info chip="LPC824" flash_driver="LPC800_32.cfx" match_id="0x0" name="LPC824" stub="crt_emu_cm3_gen"><chip><name>LPC824</name> +<family>LPC82x</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash32" location="0x0" size="0x8000"/> +<memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40000000"/> +<peripheralInstance derived_from="MRT" determined="infoFile" id="MRT" location="0x40004000"/> +<peripheralInstance derived_from="WKT" determined="infoFile" id="WKT" location="0x40008000"/> +<peripheralInstance derived_from="SWM" determined="infoFile" id="SWM" location="0x4000c000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40020000"/> +<peripheralInstance derived_from="CMP" determined="infoFile" id="CMP" location="0x40024000"/> +<peripheralInstance derived_from="DMATRIGMUX" determined="infoFile" id="DMATRIGMUX" location="0x40028000"/> +<peripheralInstance derived_from="INPUTMUX" determined="infoFile" id="INPUTMUX" location="0x4002c000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40050000"/> +<peripheralInstance derived_from="I2C1" determined="infoFile" id="I2C1" location="0x40054000"/> +<peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x40058000"/> +<peripheralInstance derived_from="SPI1" determined="infoFile" id="SPI1" location="0x4005c000"/> +<peripheralInstance derived_from="USART0" determined="infoFile" id="USART0" location="0x40064000"/> +<peripheralInstance derived_from="USART1" determined="infoFile" id="USART1" location="0x40068000"/> +<peripheralInstance derived_from="USART2" determined="infoFile" id="USART2" location="0x4006c000"/> +<peripheralInstance derived_from="I2C2" determined="infoFile" id="I2C2" location="0x40070000"/> +<peripheralInstance derived_from="I2C3" determined="infoFile" id="I2C3" location="0x40074000"/> +<peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x50000000"/> +<peripheralInstance derived_from="SCT" determined="infoFile" id="SCT" location="0x50004000"/> +<peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x50008000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0xa0000000"/> +<peripheralInstance derived_from="PIN-INT" determined="infoFile" id="PIN-INT" location="0xa0004000"/> +</chip> +<processor><name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC82x_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC11_12_13_64K_8K.cfx" property_3="NXP" property_4="LPC11U37/501" property_count="5" version="70002"/> +<infoList vendor="NXP"> +<info chip="LPC11U37/501" flash_driver="LPC11_12_13_64K_8K.cfx" match_id="0x0001BC40" name="LPC11U37/501" stub="crt_emu_lpc11_13_nxp"> +<chip> +<name>LPC11U37/501</name> +<family>LPC11Uxx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash64" location="0x0" size="0x10000"/> +<memoryInstance derived_from="RAM" id="RamLoc8" location="0x10000000" size="0x2000"/> +<memoryInstance derived_from="RAM" id="RamUsb2" location="0x20004000" size="0x800"/> +<peripheralInstance derived_from="V6M_NVIC" determined="infoFile" id="NVIC" location="0xe000e000"/> +<peripheralInstance derived_from="V6M_DCR" determined="infoFile" id="DCR" location="0xe000edf0"/> +<peripheralInstance derived_from="I2C" determined="infoFile" id="I2C" location="0x40000000"/> +<peripheralInstance derived_from="WWDT" determined="infoFile" id="WWDT" location="0x40004000"/> +<peripheralInstance derived_from="USART" determined="infoFile" id="USART" location="0x40008000"/> +<peripheralInstance derived_from="CT16B0" determined="infoFile" id="CT16B0" location="0x4000c000"/> +<peripheralInstance derived_from="CT16B1" determined="infoFile" id="CT16B1" location="0x40010000"/> +<peripheralInstance derived_from="CT32B0" determined="infoFile" id="CT32B0" location="0x40014000"/> +<peripheralInstance derived_from="CT32B1" determined="infoFile" id="CT32B1" location="0x40018000"/> +<peripheralInstance derived_from="ADC" determined="infoFile" id="ADC" location="0x4001c000"/> +<peripheralInstance derived_from="PMU" determined="infoFile" id="PMU" location="0x40038000"/> +<peripheralInstance derived_from="FLASHCTRL" determined="infoFile" id="FLASHCTRL" location="0x4003c000"/> +<peripheralInstance derived_from="SSP0" determined="infoFile" id="SSP0" location="0x40040000"/> +<peripheralInstance derived_from="IOCON" determined="infoFile" id="IOCON" location="0x40044000"/> +<peripheralInstance derived_from="SYSCON" determined="infoFile" id="SYSCON" location="0x40048000"/> +<peripheralInstance derived_from="GPIO-PIN-INT" determined="infoFile" id="GPIO-PIN-INT" location="0x4004c000"/> +<peripheralInstance derived_from="SSP1" determined="infoFile" id="SSP1" location="0x40058000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT0" determined="infoFile" id="GPIO-GROUP-INT0" location="0x4005c000"/> +<peripheralInstance derived_from="GPIO-GROUP-INT1" determined="infoFile" id="GPIO-GROUP-INT1" location="0x40060000"/> +<peripheralInstance derived_from="USB" determined="infoFile" id="USB" location="0x40080000"/> +<peripheralInstance derived_from="GPIO-PORT" determined="infoFile" id="GPIO-PORT" location="0x50000000"/> +</chip> +<processor> +<name gcc_name="cortex-m0">Cortex-M0</name> +<family>Cortex-M</family> +</processor> +<link href="LPC11Uxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 %}<?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/> +<infoList vendor="NXP"> +<info chip="LPC1768" match_id="0x00013f37,0x26013F37,0x26113F37" name="LPC1768" package="lpc17_lqfp100.xml"> +<chip> +<name>LPC1768</name> +<family>LPC17xx</family> +<vendor>NXP (formerly Philips)</vendor> +<reset board="None" core="Real" sys="Real"/> +<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/> +<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> +<memory id="RAM" type="RAM"/> +<memory id="Periph" is_volatile="true" type="Peripheral"/> +<memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/> +<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/> +<memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/> +<prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> +<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> +<peripheralInstance derived_from="LPC17_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;0x1" id="TIMER0" location="0x40004000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;0x1" id="TIMER1" location="0x40008000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;0x1" id="TIMER2" location="0x40090000"/> +<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;0x1" id="TIMER3" location="0x40094000"/> +<peripheralInstance derived_from="LPC17_RIT" determined="infoFile" enable="SYSCTL.PCONP.PCRIT&amp;0x1" id="RIT" location="0x400B0000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO0" location="0x2009C000"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO1" location="0x2009C020"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO2" location="0x2009C040"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO3" location="0x2009C060"/> +<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO4" location="0x2009C080"/> +<peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;0x08000000" id="I2S" location="0x400A8000"/> +<peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/> +<peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;0x2=2" id="DAC" location="0x4008C000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;0x1" id="UART0" location="0x4000C000"/> +<peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;0x1" id="UART1" location="0x40010000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;0x1" id="UART2" location="0x40098000"/> +<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;0x1" id="UART3" location="0x4009C000"/> +<peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;0x1" id="SPI" location="0x40020000"/> +<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;0x1" id="SSP0" location="0x40088000"/> +<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;0x1" id="SSP1" location="0x40030000"/> +<peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;0x1" id="ADC" location="0x40034000"/> +<peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/> +<peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/> +<peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x12=0x12" id="USBDEV" location="0x5000C200"/> +<peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;0x1" id="PWM" location="0x40018000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;0x1" id="I2C0" location="0x4001C000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;0x1" id="I2C1" location="0x4005C000"/> +<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;0x1" id="I2C2" location="0x400A0000"/> +<peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;0x1" id="DMA" location="0x50004000"/> +<peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;0x1" id="ENET" location="0x50000000"/> +<peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/> +<peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/> +<peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;0x1" id="QEI" location="0x400bc000"/> +<peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x11=0x11" id="USBHOST" location="0x5000C000"/> +<peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/> +<peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;0x1" id="RTC" location="0x40024000"/> +<peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/> +<peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/> +<peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/> +<peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/> +<peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANAFR" location="0x4003C000"/> +<peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCEN" location="0x40040000"/> +<peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/> +<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1" id="CANCON1" location="0x40044000"/> +<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCON2" location="0x40048000"/> +<peripheralInstance derived_from="LPC17_MCPWM" determined="infoFile" enable="SYSCTL.PCONP.PCMCPWM&amp;0x1" id="MCPWM" location="0x400B8000"/> +</chip> +<processor> +<name gcc_name="cortex-m3">Cortex-M3</name> +<family>Cortex-M</family> +</processor> +<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> +</info> +</infoList> +</TargetConfig>{% 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 "${ProjDirPath}/Build/${ProjName}.axf" -o "../${ProjName}.bin""> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 set $PC=Reset_Handler "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <breakpoints order="ALPHA"> </breakpoints> "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <watchpoint> </watchpoint> "/> +</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 "${ProjDirPath}/Build/${ProjName}.axf" -o "../${ProjName}.bin"" 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 set $PC=Reset_Handler "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <breakpoints order="ALPHA"> </breakpoints> "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <watchpoint> </watchpoint> "/> +</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 "${ProjDirPath}/Build/${ProjName}.axf" -o "../${ProjName}.bin""> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 set $PC=Reset_Handler "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <breakpoints order="ALPHA"> </breakpoints> "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <watchpoint> </watchpoint> "/> +</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 "${ProjDirPath}/Build/${ProjName}.axf" -o "../${ProjName}.bin"" 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 set $PC=Reset_Handler "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <breakpoints order="ALPHA"> </breakpoints> "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <watchpoint> </watchpoint> "/> +</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 "${ProjDirPath}/Build/${ProjName}.axf" -o "../${ProjName}.bin""> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 set $PC=Reset_Handler "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <breakpoints order="ALPHA"> </breakpoints> "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <watchpoint> </watchpoint> "/> +</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 "${ProjDirPath}/Build/${ProjName}.axf" -o "../${ProjName}.bin""> + <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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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 set $PC=Reset_Handler "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <breakpoints order="ALPHA"> </breakpoints> "/> +<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="<?xml version="1.0" encoding="US-ASCII" ?> <watchpoint> </watchpoint> "/> +</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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/> +<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 "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin" && arm-none-eabi-size "${BuildArtifactFileName}""> + <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=""${ProjDirPath}/{{path}}""/> + {% 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=""${ProjDirPath}/{{path}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${ProjDirPath}/{{path}}""/> + {% 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 "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin" && arm-none-eabi-size -B "${BuildArtifactFileName}""> + <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=""${ProjDirPath}/{{path}}""/> + {% 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=""${ProjDirPath}/{{path}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${workspace_loc:/${ProjName}/{{path}}}""/> + {% 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=""${ProjDirPath}/{{path}}""/> + {% 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 "${INPUTS}"" 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 "${INPUTS}"" 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