From 5074f4814c8f1c4029328b2754b88348940bbe37 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 30 Nov 2015 20:48:24 +0100 Subject: [PATCH 01/11] Exporter - use progen to generate files (2 new methods) --- workspace_tools/export/__init__.py | 28 ++++++- workspace_tools/export/exporters.py | 114 +++++++++++++++++++++++++++- 2 files changed, 137 insertions(+), 5 deletions(-) diff --git a/workspace_tools/export/__init__.py b/workspace_tools/export/__init__.py index 66784852c2..ea362ab1bc 100755 --- a/workspace_tools/export/__init__.py +++ b/workspace_tools/export/__init__.py @@ -23,6 +23,8 @@ from workspace_tools.export import uvision4, codesourcery, codered, gccarm, ds5_ from workspace_tools.export.exporters import zip_working_directory_and_clean_up, OldLibrariesException from workspace_tools.targets import TARGET_NAMES, EXPORT_MAP +from project_generator_definitions.definitions import ProGenDef + EXPORTERS = { 'uvision': uvision4.Uvision4, 'lpcxpresso': codered.CodeRed, @@ -60,7 +62,7 @@ def export(project_path, project_name, ide, target, destination='/tmp/', if tempdir is None: tempdir = tempfile.mkdtemp() - report = {'success': False} + report = {'success': False, 'errormsg':''} if ide is None or ide == "zip": # Simple ZIP exporter try: @@ -73,13 +75,29 @@ def export(project_path, project_name, ide, target, destination='/tmp/', report['errormsg'] = ERROR_MESSAGE_NOT_EXPORT_LIBS else: if ide not in EXPORTERS: - report['errormsg'] = "Unsupported toolchain" + report['errormsg'] = ERROR_MESSAGE_UNSUPPORTED_TOOLCHAIN % (target, ide) else: Exporter = EXPORTERS[ide] target = EXPORT_MAP.get(target, target) - if target not in Exporter.TARGETS: - report['errormsg'] = ERROR_MESSAGE_UNSUPPORTED_TOOLCHAIN % (target, ide) + # 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 target in Exporter.PROGEN_TARGETS.keys(): + progen_target = Exporter.PROGEN_TARGETS[target] + if not ProGenDef(ide).is_supported(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) @@ -87,6 +105,8 @@ def export(project_path, project_name, ide, target, destination='/tmp/', 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']: diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 60bfc7d3e6..a5d7f76a25 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -12,12 +12,90 @@ from workspace_tools.utils import mkdir from workspace_tools.toolchains import TOOLCHAIN_CLASSES from workspace_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(): +class Exporter(object): TEMPLATE_DIR = dirname(__file__) DOT_IN_RELATIVE_PATH = False + # # mapping mbed to progen targets + PROGEN_TARGETS = { + 'LPC1768': 'mbed-lpc1768', + # 'LPC11U24': 'mbed-lpc11u24', + 'KL05Z':'frdm-kl05z', + 'KL25Z':'frdm-kl25z', + 'KL43Z':'frdm-kl43z', + 'KL46Z':'frdm-kl46z', + 'K64F': 'frdm-k64f', + 'K22F': 'frdm-k22f', + 'K20D50M': 'frdm-k20d50m', + # 'TEENSY3_1', + # 'LPC1347', + # 'LPC1114', + # 'LPC11C24', + # 'LPC4088', + # 'LPC4088_DM', + # 'LPC4330_M4', + # 'LPC4337', + # 'LPC812', + 'NUCLEO_F030R8':'nucleo-f030r8', + 'NUCLEO_F031K6':'nucleo-f031k6', + 'NUCLEO_F042K6':'nucleo-f042k6', + 'NUCLEO_F070RB':'nucleo-f070rb', + 'NUCLEO_F072RB':'nucleo-f072rb', + 'NUCLEO_F091RC':'nucleo-f091rc', + 'NUCLEO_F103RB':'nucleo-f103rb', + 'NUCLEO_F302R8':'nucleo-f302r8', + 'NUCLEO_F303K8':'nucleo-f303k8', + 'NUCLEO_F303RE':'nucleo-f303re', + 'NUCLEO_F334R8':'nucleo-f334r8', + 'NUCLEO_F401RE':'nucleo-f401re', + 'NUCLEO_F410RB':'nucleo-f410rb', + 'NUCLEO_F411RE':'nucleo-f411re', + 'NUCLEO_F446RE':'nucleo-f446re', + 'NUCLEO_L053R8':'nucleo-l053r8', + 'NUCLEO_L073RZ':'nucleo-l073rz', + 'NUCLEO_L152RE':'nucleo-l152re', + 'NUCLEO_L476RG':'nucleo-l476rg', + # 'UBLOX_C027', + # 'LPC1549', + # 'LPC11U68', + # # Removed as uvision4_lpc11u35_501.uvproj.tmpl is missing. + # #'LPC11U35_501', + 'NRF51822':'mkit', + # 'HRM1017', + # 'RBLAB_NRF51822', + 'ARCH_PRO':'arhc-pro', + 'ARCH_BLE':'arch-ble', + # 'DISCO_F407VG', + 'DISCO_F429ZI':'disco-f429zi', + 'DISCO_L053C8':'disco-l053c8', + 'DISCO_F334C8':'disco-f334c8', + 'DISCO_F469NI':'disco-f469ni', + 'DISCO_F746NG':'disco-f746ng', + 'DISCO_L476VG':'disco-l476vg', + # 'MTS_GAMBIT', + # 'ARCH_MAX', + # 'MTS_MDOT_F405RG', + 'NRF51_DK':'nrf51-dk', + 'NRF51_DONGLE':'nrf51-dongle', + 'SEEED_TINY_BLE':'seeed-tiny-ble', + # 'LPC11U37H_401', + # 'DELTA_DFCM_NNN40', + 'MAXWSNENV':'maxwsnenv', + 'MAX32600MBED':'max32600mbed', + # 'MOTE_L152RC', + # 'NZ32SC151', + # 'SAMR21G18A', + # 'SAMD21J18A', + # 'SAMD21G18A', + # 'SAML21J18A', + } + def __init__(self, target, inputDir, program_name, build_url_resolver, extra_symbols=None): self.inputDir = inputDir self.target = target @@ -42,6 +120,31 @@ class Exporter(): self.toolchain.copy_files(r, trg_path, rel_path=src_path) return resources + def get_project_data(self): + """ Get ProGen project data """ + # provide default data, some tools don't require any additional + # tool specific settings + sources = [] + for r_type in ['c_sources', 'cpp_sources', 's_sources']: + for file in getattr(self.resources, r_type): + sources.append(file) + + # TODO: sources in groups + project_data = { + 'common': { + 'sources': sources + self.resources.hex_files + + self.resources.objects + self.resources.libraries, + # 'includes': self.resources.inc_dirs, + 'target': [self.PROGEN_TARGETS[self.target]], + 'debugger': ['cmsis-dap'], #TODO: per target to set this + 'macros': self.get_symbols(), + 'export_dir': [self.inputDir], + 'linker_file': [self.resources.linker_script], + 'template': [''], + } + } + return project_data + def __scan_all(self, path): resources = [] @@ -89,6 +192,15 @@ class Exporter(): # if not self.toolchain.mbed_libs: # raise OldLibrariesException() + def gen_file_progen(self, tool_name, project_data): + """" Generate project using ProGen Project API """ + settings = ProjectSettings() + project = Project(self.program_name, [project_data], settings) + # TODO: fix + # this hack is for these scripts which know too much + project.project['common']['include_paths'] = self.resources.inc_dirs + project.generate(tool_name, copied=True) + 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) From 56d4f6f9f344a73ae1411cf5fa116afd596f7bbf Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 7 Dec 2015 20:22:53 +0000 Subject: [PATCH 02/11] Exporter - condition for progen simplification --- workspace_tools/export/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/workspace_tools/export/__init__.py b/workspace_tools/export/__init__.py index ea362ab1bc..d1fbc47416 100755 --- a/workspace_tools/export/__init__.py +++ b/workspace_tools/export/__init__.py @@ -88,10 +88,8 @@ def export(project_path, project_name, ide, target, destination='/tmp/', except AttributeError: pass if use_progen: - if target in Exporter.PROGEN_TARGETS.keys(): - progen_target = Exporter.PROGEN_TARGETS[target] - if not ProGenDef(ide).is_supported(progen_target): - supported = False + if target not in Exporter.PROGEN_TARGETS.keys() or not ProGenDef(ide).is_supported(Exporter.PROGEN_TARGETS[target]): + supported = False else: if target not in Exporter.TARGETS: supported = False From 8bbded4ae5cd86f6217270a585fd004e2e4224db Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Wed, 9 Dec 2015 19:16:52 +0000 Subject: [PATCH 03/11] Add progen definitions to the mapping dict --- workspace_tools/export/exporters.py | 91 +++++++++++++++-------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index a5d7f76a25..8548991f08 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -22,26 +22,32 @@ class Exporter(object): TEMPLATE_DIR = dirname(__file__) DOT_IN_RELATIVE_PATH = False - # # mapping mbed to progen targets + # mapping mbed to progen targets PROGEN_TARGETS = { - 'LPC1768': 'mbed-lpc1768', - # 'LPC11U24': 'mbed-lpc11u24', - 'KL05Z':'frdm-kl05z', - 'KL25Z':'frdm-kl25z', - 'KL43Z':'frdm-kl43z', - 'KL46Z':'frdm-kl46z', - 'K64F': 'frdm-k64f', - 'K22F': 'frdm-k22f', + 'LPC1768': 'lpc1768', + 'LPC11U24': 'lpc11u14_201', + 'LPC1347':'lpc1347', + 'LPC1114':'lpc1114_102', + 'LPC11C24':'lpc11c24_301', + 'LPC4088':'lpc4088', + 'LPC4088_DM':'lpc4088', + 'LPC4330_M4':'lpc4330', + 'LPC4337':'lpc4337', + 'LPC812':'lpc812m101', + 'LPC1549':'lpc1549', + 'LPC11U68':'lpc11u68', + 'LPC11U35_501':'lpc11u35_501', + 'LPC11U37H_401':'lpc11u37_401', + + 'KL05Z':'mkl05z32xxx4', + 'KL25Z':'mkl25z128xxx4', + 'KL43Z':'mkl43z256xxx4', + 'KL46Z':'mkl46z256xxx4', + 'K64F': 'mk64fn1m0xxx12', + 'K22F': 'mk22dn512xxx5', 'K20D50M': 'frdm-k20d50m', - # 'TEENSY3_1', - # 'LPC1347', - # 'LPC1114', - # 'LPC11C24', - # 'LPC4088', - # 'LPC4088_DM', - # 'LPC4330_M4', - # 'LPC4337', - # 'LPC812', + 'TEENSY3_1':'mk20dx128xxx5', + 'NUCLEO_F030R8':'nucleo-f030r8', 'NUCLEO_F031K6':'nucleo-f031k6', 'NUCLEO_F042K6':'nucleo-f042k6', @@ -61,39 +67,38 @@ class Exporter(object): 'NUCLEO_L073RZ':'nucleo-l073rz', 'NUCLEO_L152RE':'nucleo-l152re', 'NUCLEO_L476RG':'nucleo-l476rg', - # 'UBLOX_C027', - # 'LPC1549', - # 'LPC11U68', - # # Removed as uvision4_lpc11u35_501.uvproj.tmpl is missing. - # #'LPC11U35_501', - 'NRF51822':'mkit', - # 'HRM1017', - # 'RBLAB_NRF51822', - 'ARCH_PRO':'arhc-pro', - 'ARCH_BLE':'arch-ble', - # 'DISCO_F407VG', + + 'DISCO_F407VG':'stm32f407vg', 'DISCO_F429ZI':'disco-f429zi', 'DISCO_L053C8':'disco-l053c8', 'DISCO_F334C8':'disco-f334c8', 'DISCO_F469NI':'disco-f469ni', 'DISCO_F746NG':'disco-f746ng', 'DISCO_L476VG':'disco-l476vg', - # 'MTS_GAMBIT', - # 'ARCH_MAX', - # 'MTS_MDOT_F405RG', - 'NRF51_DK':'nrf51-dk', - 'NRF51_DONGLE':'nrf51-dongle', - 'SEEED_TINY_BLE':'seeed-tiny-ble', - # 'LPC11U37H_401', - # 'DELTA_DFCM_NNN40', + + 'UBLOX_C027':'ublox-c027', + 'NRF51822':'mkit', + 'HRM1017':'hrm1017', + 'RBLAB_NRF51822':'nrf51', + 'ARCH_PRO':'arhc-pro', + 'ARCH_BLE':'arch-ble', + 'MTS_GAMBIT':'mk64fn1m0xxx12', + 'ARCH_MAX':'lpc1768', + 'MTS_MDOT_F405RG':'stm32f405rg', + 'NRF51_DK':'nrf51', + 'NRF51_DONGLE':'nrf51', + 'SEEED_TINY_BLE':'nrf51', + + 'DELTA_DFCM_NNN40':'dfcm-nnn40', 'MAXWSNENV':'maxwsnenv', 'MAX32600MBED':'max32600mbed', - # 'MOTE_L152RC', - # 'NZ32SC151', - # 'SAMR21G18A', - # 'SAMD21J18A', - # 'SAMD21G18A', - # 'SAML21J18A', + 'MOTE_L152RC':'stm32l151rc', + 'NZ32SC151':'stm32l151rc', + + 'SAMR21G18A':'samr21g18a', + 'SAMD21J18A':'samd21j18a', + 'SAMD21G18A':'samd21g18a', + 'SAML21J18A':'samr21j18a', } def __init__(self, target, inputDir, program_name, build_url_resolver, extra_symbols=None): From 2482f7d48509c5bf11cbc0e100b06e4f9697b01c Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Sat, 12 Dec 2015 00:14:49 +0000 Subject: [PATCH 04/11] Setup - add progen req (v0.8) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index eb420b96b4..58701f5d89 100644 --- a/setup.py +++ b/setup.py @@ -40,7 +40,7 @@ setup(name='mbed-tools', url='https://github.com/mbedmicro/mbed', packages=find_packages(), license=LICENSE, - install_requires=["PrettyTable>=0.7.2", "PySerial>=2.7", "IntelHex>=1.3", "colorama>=0.3.3", "Jinja2>=2.7.3"]) + install_requires=["PrettyTable>=0.7.2", "PySerial>=2.7", "IntelHex>=1.3", "colorama>=0.3.3", "Jinja2>=2.7.3", "project-generator>=0.8.0,<0.9.0"]) # Restore previous private_settings if needed if backup: From 12df7e411263602df5171f5b0e196f4b67b838c0 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Tue, 29 Dec 2015 14:42:44 +0100 Subject: [PATCH 05/11] Exporters - fix progen targets names --- workspace_tools/export/exporters.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 8548991f08..b648ab56ea 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -25,7 +25,7 @@ class Exporter(object): # mapping mbed to progen targets PROGEN_TARGETS = { 'LPC1768': 'lpc1768', - 'LPC11U24': 'lpc11u14_201', + 'LPC11U24': 'lpc11u24_201', 'LPC1347':'lpc1347', 'LPC1114':'lpc1114_102', 'LPC11C24':'lpc11c24_301', @@ -46,7 +46,7 @@ class Exporter(object): 'K64F': 'mk64fn1m0xxx12', 'K22F': 'mk22dn512xxx5', 'K20D50M': 'frdm-k20d50m', - 'TEENSY3_1':'mk20dx128xxx5', + 'TEENSY3_1':'mk20dx256xxx7', 'NUCLEO_F030R8':'nucleo-f030r8', 'NUCLEO_F031K6':'nucleo-f031k6', @@ -80,9 +80,9 @@ class Exporter(object): 'NRF51822':'mkit', 'HRM1017':'hrm1017', 'RBLAB_NRF51822':'nrf51', - 'ARCH_PRO':'arhc-pro', + 'ARCH_PRO':'arch-pro', 'ARCH_BLE':'arch-ble', - 'MTS_GAMBIT':'mk64fn1m0xxx12', + 'MTS_GAMBIT':'mts-gambit', 'ARCH_MAX':'lpc1768', 'MTS_MDOT_F405RG':'stm32f405rg', 'NRF51_DK':'nrf51', From b36a2fedddc4f82fb5036da8a0e4742bc9e3c46e Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Tue, 29 Dec 2015 15:56:07 +0100 Subject: [PATCH 06/11] Exporters - progen targets - name fixes (nr51x,..) --- workspace_tools/export/exporters.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index b648ab56ea..684ca70636 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -34,9 +34,11 @@ class Exporter(object): 'LPC4330_M4':'lpc4330', 'LPC4337':'lpc4337', 'LPC812':'lpc812m101', + 'LPC824': 'lpc824m201', 'LPC1549':'lpc1549', 'LPC11U68':'lpc11u68', 'LPC11U35_501':'lpc11u35_501', + 'LPC11U35_401': 'lpc11u35_401', 'LPC11U37H_401':'lpc11u37_401', 'KL05Z':'mkl05z32xxx4', @@ -79,15 +81,17 @@ class Exporter(object): 'UBLOX_C027':'ublox-c027', 'NRF51822':'mkit', 'HRM1017':'hrm1017', - 'RBLAB_NRF51822':'nrf51', + 'RBLAB_NRF51822':'nrf51822', 'ARCH_PRO':'arch-pro', 'ARCH_BLE':'arch-ble', 'MTS_GAMBIT':'mts-gambit', 'ARCH_MAX':'lpc1768', 'MTS_MDOT_F405RG':'stm32f405rg', - 'NRF51_DK':'nrf51', - 'NRF51_DONGLE':'nrf51', - 'SEEED_TINY_BLE':'nrf51', + 'MTS_MDOT_F411RE': 'stm32f411re', + 'MTS_DRAGONFLY_F411RE': 'stm32f411re', + 'NRF51_DK':'nrf51822', + 'NRF51_DONGLE':'nrf51822', + 'SEEED_TINY_BLE':'nrf51822', 'DELTA_DFCM_NNN40':'dfcm-nnn40', 'MAXWSNENV':'maxwsnenv', From f7e16b36f623938493cb3217454f123a0ffe28d6 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Tue, 29 Dec 2015 17:35:06 +0100 Subject: [PATCH 07/11] Exporter - new progen targets addition, req progen v0.8.4 --- setup.py | 2 +- workspace_tools/export/exporters.py | 32 ++++++++++++++--------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/setup.py b/setup.py index 58701f5d89..42fbcec45f 100644 --- a/setup.py +++ b/setup.py @@ -40,7 +40,7 @@ setup(name='mbed-tools', url='https://github.com/mbedmicro/mbed', packages=find_packages(), license=LICENSE, - install_requires=["PrettyTable>=0.7.2", "PySerial>=2.7", "IntelHex>=1.3", "colorama>=0.3.3", "Jinja2>=2.7.3", "project-generator>=0.8.0,<0.9.0"]) + install_requires=["PrettyTable>=0.7.2", "PySerial>=2.7", "IntelHex>=1.3", "colorama>=0.3.3", "Jinja2>=2.7.3", "project-generator>=0.8.4,<0.9.0"]) # Restore previous private_settings if needed if backup: diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 684ca70636..553886c0f4 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -24,7 +24,7 @@ class Exporter(object): # mapping mbed to progen targets PROGEN_TARGETS = { - 'LPC1768': 'lpc1768', + 'LPC1768': 'mbed-lpc1768', 'LPC11U24': 'lpc11u24_201', 'LPC1347':'lpc1347', 'LPC1114':'lpc1114_102', @@ -41,14 +41,14 @@ class Exporter(object): 'LPC11U35_401': 'lpc11u35_401', 'LPC11U37H_401':'lpc11u37_401', - 'KL05Z':'mkl05z32xxx4', - 'KL25Z':'mkl25z128xxx4', - 'KL43Z':'mkl43z256xxx4', - 'KL46Z':'mkl46z256xxx4', - 'K64F': 'mk64fn1m0xxx12', - 'K22F': 'mk22dn512xxx5', + 'KL05Z':'frdm-kl05z', + 'KL25Z':'frdm-kl25z', + 'KL43Z':'frdm-kl43z', + 'KL46Z':'frdm-kl46z', + 'K64F': 'frdm-k64f', + 'K22F': 'frdm-k22f', 'K20D50M': 'frdm-k20d50m', - 'TEENSY3_1':'mk20dx256xxx7', + 'TEENSY3_1':'teensy-31', 'NUCLEO_F030R8':'nucleo-f030r8', 'NUCLEO_F031K6':'nucleo-f031k6', @@ -70,7 +70,7 @@ class Exporter(object): 'NUCLEO_L152RE':'nucleo-l152re', 'NUCLEO_L476RG':'nucleo-l476rg', - 'DISCO_F407VG':'stm32f407vg', + 'DISCO_F407VG':'disco-f407vg', 'DISCO_F429ZI':'disco-f429zi', 'DISCO_L053C8':'disco-l053c8', 'DISCO_F334C8':'disco-f334c8', @@ -81,17 +81,17 @@ class Exporter(object): 'UBLOX_C027':'ublox-c027', 'NRF51822':'mkit', 'HRM1017':'hrm1017', - 'RBLAB_NRF51822':'nrf51822', + 'RBLAB_NRF51822':'rblab-nrf51822', 'ARCH_PRO':'arch-pro', 'ARCH_BLE':'arch-ble', 'MTS_GAMBIT':'mts-gambit', 'ARCH_MAX':'lpc1768', - 'MTS_MDOT_F405RG':'stm32f405rg', - 'MTS_MDOT_F411RE': 'stm32f411re', - 'MTS_DRAGONFLY_F411RE': 'stm32f411re', - 'NRF51_DK':'nrf51822', - 'NRF51_DONGLE':'nrf51822', - 'SEEED_TINY_BLE':'nrf51822', + 'MTS_MDOT_F405RG':'mts-mdot-f405rg', + 'MTS_MDOT_F411RE': 'mts-mdot-f411re', + 'MTS_DRAGONFLY_F411RE': 'mts-dragonfly-f411re', + 'NRF51_DK':'nrf51-dk', + 'NRF51_DONGLE':'nrf51-dongle', + 'SEEED_TINY_BLE':'seed-tinyble', 'DELTA_DFCM_NNN40':'dfcm-nnn40', 'MAXWSNENV':'maxwsnenv', From 21595a622ad5f9318276b0df2f1cf2568ec703f2 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Wed, 30 Dec 2015 20:36:39 +0100 Subject: [PATCH 08/11] Exporter progen - source and header files group addition --- workspace_tools/export/exporters.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 553886c0f4..37ce309901 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -138,12 +138,15 @@ class Exporter(object): for file in getattr(self.resources, r_type): sources.append(file) - # TODO: sources in groups project_data = { 'common': { - 'sources': sources + self.resources.hex_files + - self.resources.objects + self.resources.libraries, - # 'includes': self.resources.inc_dirs, + 'sources': { + 'Source Files': sources + self.resources.hex_files + + self.resources.objects + self.resources.libraries, + }, + 'includes': { + 'Include Files': self.resources.headers, + }, 'target': [self.PROGEN_TARGETS[self.target]], 'debugger': ['cmsis-dap'], #TODO: per target to set this 'macros': self.get_symbols(), @@ -205,9 +208,6 @@ class Exporter(object): """" Generate project using ProGen Project API """ settings = ProjectSettings() project = Project(self.program_name, [project_data], settings) - # TODO: fix - # this hack is for these scripts which know too much - project.project['common']['include_paths'] = self.resources.inc_dirs project.generate(tool_name, copied=True) def gen_file(self, template_file, data, target_file): From e51243a11aab9aed197e5e031f6adc2318ddaf6f Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Wed, 30 Dec 2015 20:42:26 +0100 Subject: [PATCH 09/11] Exporter progen - debugger and template removal Debugger comes from a target, template not used currently. --- workspace_tools/export/exporters.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 37ce309901..65be9a152e 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -148,11 +148,9 @@ class Exporter(object): 'Include Files': self.resources.headers, }, 'target': [self.PROGEN_TARGETS[self.target]], - 'debugger': ['cmsis-dap'], #TODO: per target to set this 'macros': self.get_symbols(), 'export_dir': [self.inputDir], 'linker_file': [self.resources.linker_script], - 'template': [''], } } return project_data From e9de5fe25410f8a8c7ae6753567d93e7f26652de Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Tue, 5 Jan 2016 21:50:39 +0000 Subject: [PATCH 10/11] Progen target member add to targets Mapping to ProGenDefinitions, as they don't always match. --- workspace_tools/export/exporters.py | 85 +---------------------------- workspace_tools/targets.py | 82 +++++++++++++++++++++++++--- 2 files changed, 75 insertions(+), 92 deletions(-) diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 65be9a152e..6c36132558 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -22,89 +22,6 @@ class Exporter(object): TEMPLATE_DIR = dirname(__file__) DOT_IN_RELATIVE_PATH = False - # mapping mbed to progen targets - PROGEN_TARGETS = { - 'LPC1768': 'mbed-lpc1768', - 'LPC11U24': 'lpc11u24_201', - 'LPC1347':'lpc1347', - 'LPC1114':'lpc1114_102', - 'LPC11C24':'lpc11c24_301', - 'LPC4088':'lpc4088', - 'LPC4088_DM':'lpc4088', - 'LPC4330_M4':'lpc4330', - 'LPC4337':'lpc4337', - 'LPC812':'lpc812m101', - 'LPC824': 'lpc824m201', - 'LPC1549':'lpc1549', - 'LPC11U68':'lpc11u68', - 'LPC11U35_501':'lpc11u35_501', - 'LPC11U35_401': 'lpc11u35_401', - 'LPC11U37H_401':'lpc11u37_401', - - 'KL05Z':'frdm-kl05z', - 'KL25Z':'frdm-kl25z', - 'KL43Z':'frdm-kl43z', - 'KL46Z':'frdm-kl46z', - 'K64F': 'frdm-k64f', - 'K22F': 'frdm-k22f', - 'K20D50M': 'frdm-k20d50m', - 'TEENSY3_1':'teensy-31', - - 'NUCLEO_F030R8':'nucleo-f030r8', - 'NUCLEO_F031K6':'nucleo-f031k6', - 'NUCLEO_F042K6':'nucleo-f042k6', - 'NUCLEO_F070RB':'nucleo-f070rb', - 'NUCLEO_F072RB':'nucleo-f072rb', - 'NUCLEO_F091RC':'nucleo-f091rc', - 'NUCLEO_F103RB':'nucleo-f103rb', - 'NUCLEO_F302R8':'nucleo-f302r8', - 'NUCLEO_F303K8':'nucleo-f303k8', - 'NUCLEO_F303RE':'nucleo-f303re', - 'NUCLEO_F334R8':'nucleo-f334r8', - 'NUCLEO_F401RE':'nucleo-f401re', - 'NUCLEO_F410RB':'nucleo-f410rb', - 'NUCLEO_F411RE':'nucleo-f411re', - 'NUCLEO_F446RE':'nucleo-f446re', - 'NUCLEO_L053R8':'nucleo-l053r8', - 'NUCLEO_L073RZ':'nucleo-l073rz', - 'NUCLEO_L152RE':'nucleo-l152re', - 'NUCLEO_L476RG':'nucleo-l476rg', - - 'DISCO_F407VG':'disco-f407vg', - 'DISCO_F429ZI':'disco-f429zi', - 'DISCO_L053C8':'disco-l053c8', - 'DISCO_F334C8':'disco-f334c8', - 'DISCO_F469NI':'disco-f469ni', - 'DISCO_F746NG':'disco-f746ng', - 'DISCO_L476VG':'disco-l476vg', - - 'UBLOX_C027':'ublox-c027', - 'NRF51822':'mkit', - 'HRM1017':'hrm1017', - 'RBLAB_NRF51822':'rblab-nrf51822', - 'ARCH_PRO':'arch-pro', - 'ARCH_BLE':'arch-ble', - 'MTS_GAMBIT':'mts-gambit', - 'ARCH_MAX':'lpc1768', - 'MTS_MDOT_F405RG':'mts-mdot-f405rg', - 'MTS_MDOT_F411RE': 'mts-mdot-f411re', - 'MTS_DRAGONFLY_F411RE': 'mts-dragonfly-f411re', - 'NRF51_DK':'nrf51-dk', - 'NRF51_DONGLE':'nrf51-dongle', - 'SEEED_TINY_BLE':'seed-tinyble', - - 'DELTA_DFCM_NNN40':'dfcm-nnn40', - 'MAXWSNENV':'maxwsnenv', - 'MAX32600MBED':'max32600mbed', - 'MOTE_L152RC':'stm32l151rc', - 'NZ32SC151':'stm32l151rc', - - 'SAMR21G18A':'samr21g18a', - 'SAMD21J18A':'samd21j18a', - 'SAMD21G18A':'samd21g18a', - 'SAML21J18A':'samr21j18a', - } - def __init__(self, target, inputDir, program_name, build_url_resolver, extra_symbols=None): self.inputDir = inputDir self.target = target @@ -147,7 +64,7 @@ class Exporter(object): 'includes': { 'Include Files': self.resources.headers, }, - 'target': [self.PROGEN_TARGETS[self.target]], + 'target': [self.target.progen_target], 'macros': self.get_symbols(), 'export_dir': [self.inputDir], 'linker_file': [self.resources.linker_script], diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index dfe0668075..d050a6aeeb 100755 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -123,6 +123,7 @@ class LPC11C24(LPCTarget): 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): @@ -131,6 +132,7 @@ class LPC1114(LPCTarget): 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' class LPC11U24(LPCTarget): def __init__(self): @@ -140,6 +142,7 @@ class LPC11U24(LPCTarget): self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"] self.default_toolchain = "uARM" self.detect_code = ["1040"] + self.progen_target = 'lpc11u24_201' class OC_MBUINO(LPC11U24): def __init__(self): @@ -149,6 +152,7 @@ class OC_MBUINO(LPC11U24): self.macros = ['TARGET_LPC11U24'] self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"] self.default_toolchain = "uARM" + self.progen_target = 'lpc11u24_201' class LPC11U24_301(LPCTarget): def __init__(self): @@ -180,6 +184,7 @@ class LPC11U35_401(LPCTarget): self.extra_labels = ['NXP', 'LPC11UXX'] self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"] self.default_toolchain = "uARM" + self.progen_target = 'lpc11u35_401' class LPC11U35_501(LPCTarget): def __init__(self): @@ -188,6 +193,7 @@ class LPC11U35_501(LPCTarget): 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' class LPC11U35_501_IBDAP(LPCTarget): def __init__(self): @@ -243,6 +249,7 @@ class LPC11U68(LPCTarget): self.default_toolchain = "uARM" self.supported_form_factors = ["ARDUINO"] self.detect_code = ["1168"] + self.progen_target ='lpc11u68' class LPC1347(LPCTarget): def __init__(self): @@ -250,6 +257,7 @@ class LPC1347(LPCTarget): 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): @@ -260,6 +268,7 @@ class LPC1549(LPCTarget): self.default_toolchain = "uARM" self.supported_form_factors = ["ARDUINO"] self.detect_code = ["1549"] + self.progen_target ='lpc1549' class LPC1768(LPCTarget): def __init__(self): @@ -268,6 +277,7 @@ class LPC1768(LPCTarget): self.extra_labels = ['NXP', 'LPC176X', 'MBED_LPC1768'] self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CS", "GCC_CR", "IAR"] self.detect_code = ["1010"] + self.progen_target = 'mbed-lpc1768' class ARCH_PRO(LPCTarget): def __init__(self): @@ -277,6 +287,7 @@ class ARCH_PRO(LPCTarget): self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CS", "GCC_CR", "IAR"] self.macros = ['TARGET_LPC1768'] self.supported_form_factors = ["ARDUINO"] + self.progen_target ='arch-pro' class UBLOX_C027(LPCTarget): def __init__(self): @@ -286,6 +297,7 @@ class UBLOX_C027(LPCTarget): self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CS", "GCC_CR", "IAR"] self.macros = ['TARGET_LPC1768'] self.supported_form_factors = ["ARDUINO"] + self.progen_target ='ublox-c027' class XBED_LPC1768(LPCTarget): def __init__(self): @@ -329,6 +341,7 @@ class LPC812(LPCTarget): self.supported_form_factors = ["ARDUINO"] self.is_disk_virtual = True self.detect_code = ["1050"] + self.progen_target = 'lpc812m101' class LPC824(LPCTarget): def __init__(self): @@ -339,6 +352,7 @@ class LPC824(LPCTarget): self.default_toolchain = "uARM" self.supported_form_factors = ["ARDUINO"] self.is_disk_virtual = True + self.progen_target = 'lpc824m201' class SSCI824(LPCTarget): def __init__(self): @@ -356,6 +370,7 @@ class LPC4088(LPCTarget): 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']: @@ -400,6 +415,7 @@ class LPC4330_M4(LPCTarget): 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): @@ -414,7 +430,7 @@ class LPC4337(LPCTarget): 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) @@ -430,7 +446,7 @@ class LPC11U37H_401(LPCTarget): self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR"] self.default_toolchain = "uARM" self.supported_form_factors = ["ARDUINO"] - + self.progen_target ='lpc11u37_401' ### Freescale ### @@ -443,6 +459,7 @@ class KL05Z(Target): self.default_toolchain = "uARM" self.supported_form_factors = ["ARDUINO"] self.is_disk_virtual = True + self.progen_target ='frdm-kl05z' class KL25Z(Target): def __init__(self): @@ -453,6 +470,7 @@ class KL25Z(Target): 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): @@ -471,6 +489,7 @@ class KL43Z(Target): 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): @@ -481,6 +500,7 @@ class KL46Z(Target): 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): @@ -490,6 +510,7 @@ class K20D50M(Target): self.supported_toolchains = ["GCC_ARM", "ARM", "IAR"] self.is_disk_virtual = True self.detect_code = ["0230"] + self.progen_target = 'frdm-k20d50m' class TEENSY3_1(Target): OUTPUT_EXT = 'hex' @@ -501,7 +522,7 @@ class TEENSY3_1(Target): 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']: @@ -526,6 +547,7 @@ class K22F(Target): self.supported_form_factors = ["ARDUINO"] self.is_disk_virtual = True self.detect_code = ["0201"] + self.progen_target = 'frdm-k22f' class K64F(Target): def __init__(self): @@ -538,6 +560,7 @@ class K64F(Target): 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): @@ -548,7 +571,7 @@ class MTS_GAMBIT(Target): self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"] self.is_disk_virtual = True self.default_toolchain = "ARM" - + self.progen_target ='mts-gambit' ### STMicro ### @@ -561,6 +584,7 @@ class NUCLEO_F030R8(Target): 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): @@ -571,6 +595,7 @@ class NUCLEO_F031K6(Target): 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): @@ -581,6 +606,7 @@ class NUCLEO_F042K6(Target): 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): @@ -591,6 +617,7 @@ class NUCLEO_F070RB(Target): 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): @@ -601,6 +628,7 @@ class NUCLEO_F072RB(Target): 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): @@ -611,6 +639,7 @@ class NUCLEO_F091RC(Target): 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): @@ -621,6 +650,7 @@ class NUCLEO_F103RB(Target): 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): @@ -631,6 +661,7 @@ class NUCLEO_F302R8(Target): 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): @@ -641,7 +672,7 @@ class NUCLEO_F303K8(Target): 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): @@ -652,6 +683,7 @@ class NUCLEO_F303RE(Target): 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): @@ -662,6 +694,7 @@ class NUCLEO_F334R8(Target): 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): @@ -672,6 +705,7 @@ class NUCLEO_F401RE(Target): 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): @@ -682,6 +716,7 @@ class NUCLEO_F410RB(Target): 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): @@ -692,7 +727,8 @@ class NUCLEO_F411RE(Target): 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) @@ -712,6 +748,7 @@ class NUCLEO_F446RE(Target): self.default_toolchain = "uARM" self.supported_form_factors = ["ARDUINO", "MORPHO"] self.detect_code = ["0777"] + self.progen_target ='nucleo-f446re' class NUCLEO_L053R8(Target): def __init__(self): @@ -722,6 +759,7 @@ class NUCLEO_L053R8(Target): 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): @@ -732,6 +770,7 @@ class NUCLEO_L073RZ(Target): 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): @@ -742,6 +781,7 @@ class NUCLEO_L152RE(Target): 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): @@ -752,6 +792,7 @@ class NUCLEO_L476RG(Target): 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): @@ -776,6 +817,7 @@ class ARCH_MAX(Target): 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 @@ -812,6 +854,7 @@ class DISCO_F334C8(Target): 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): @@ -819,6 +862,7 @@ class DISCO_F407VG(Target): self.core = "Cortex-M4F" self.extra_labels = ['STM', 'STM32F4', 'STM32F407', 'STM32F407VG'] self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"] + self.progen_target ='disco-f407vg' class DISCO_F429ZI(Target): def __init__(self): @@ -827,6 +871,7 @@ class DISCO_F429ZI(Target): 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): @@ -837,6 +882,7 @@ class DISCO_F469NI(Target): 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): @@ -845,6 +891,7 @@ class DISCO_L053C8(Target): 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): @@ -854,6 +901,7 @@ class DISCO_F746NG(Target): self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"] self.default_toolchain = "uARM" self.detect_code = ["0815"] + self.progen_target ='disco-f746ng' class DISCO_L476VG(Target): def __init__(self): @@ -863,6 +911,7 @@ class DISCO_L476VG(Target): 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): @@ -873,6 +922,7 @@ class MTS_MDOT_F405RG(Target): 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): @@ -882,6 +932,7 @@ class MTS_MDOT_F411RE(Target): 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']: @@ -923,6 +974,7 @@ class MTS_DRAGONFLY_F411RE(Target): 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']: @@ -964,6 +1016,7 @@ class MOTE_L152RC(Target): 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): @@ -990,6 +1043,7 @@ class NZ32SC151(Target): 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 @@ -1217,6 +1271,7 @@ class NRF51822(MCU_NRF51_16K): 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): @@ -1234,6 +1289,7 @@ 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): @@ -1273,6 +1329,7 @@ class ARCH_LINK_OTA(MCU_NRF51_16K_OTA): 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): @@ -1290,6 +1347,7 @@ 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): @@ -1307,6 +1365,7 @@ 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): @@ -1363,6 +1422,7 @@ class DELTA_DFCM_NNN40(MCU_NRF51_32K): MCU_NRF51_32K.__init__(self) self.supported_toolchains = ["ARM", "GCC_ARM"] self.macros += ['TARGET_NRF_LFCLK_RC'] + self.progen_target ='dfcm-nnn40' def program_cycle_s(self): return 10 @@ -1389,6 +1449,7 @@ class NRF51_DK(MCU_NRF51_32K): MCU_NRF51_32K.__init__(self) self.supported_toolchains = ["ARM", "GCC_ARM"] self.supported_form_factors = ["ARDUINO"] + self.progen_target ='nrf51-dk' class NRF51_DK_BOOT(MCU_NRF51_32K_BOOT): def __init__(self): @@ -1409,6 +1470,7 @@ class NRF51_DK_OTA(MCU_NRF51_32K_OTA): 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): @@ -1556,6 +1618,7 @@ class MAXWSNENV(Target): 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): @@ -1565,7 +1628,7 @@ class MAX32600MBED(Target): self.macros = ['__SYSTEM_HFX=24000000'] self.supported_toolchains = ["GCC_ARM", "IAR", "ARM"] self.default_toolchain = "ARM" - + self.progen_target ='max32600mbed' ### Silicon Labs ### @@ -1654,6 +1717,7 @@ class SAMR21G18A(Target): 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): @@ -1663,6 +1727,7 @@ class SAMD21J18A(Target): 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): @@ -1672,6 +1737,7 @@ class SAMD21G18A(Target): 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): @@ -1681,7 +1747,7 @@ class SAML21J18A(Target): 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' # Get a single instance for each target TARGETS = [ From 3575c11ad53d834633c455f52dcf98ab65c608f1 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Tue, 5 Jan 2016 21:53:26 +0000 Subject: [PATCH 11/11] Exporter - progen prefix to member functions for progen --- workspace_tools/export/__init__.py | 4 ++-- workspace_tools/export/exporters.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/workspace_tools/export/__init__.py b/workspace_tools/export/__init__.py index d1fbc47416..05ae049563 100755 --- a/workspace_tools/export/__init__.py +++ b/workspace_tools/export/__init__.py @@ -21,7 +21,7 @@ from shutil import copytree, rmtree, copy from workspace_tools.utils import mkdir from workspace_tools.export import uvision4, codesourcery, codered, gccarm, ds5_5, iar, emblocks, coide, kds, zip, simplicityv3, atmelstudio from workspace_tools.export.exporters import zip_working_directory_and_clean_up, OldLibrariesException -from workspace_tools.targets import TARGET_NAMES, EXPORT_MAP +from workspace_tools.targets import TARGET_NAMES, EXPORT_MAP, TARGET_MAP from project_generator_definitions.definitions import ProGenDef @@ -88,7 +88,7 @@ def export(project_path, project_name, ide, target, destination='/tmp/', except AttributeError: pass if use_progen: - if target not in Exporter.PROGEN_TARGETS.keys() or not ProGenDef(ide).is_supported(Exporter.PROGEN_TARGETS[target]): + if not ProGenDef(ide).is_supported(TARGET_MAP[target].progen_target): supported = False else: if target not in Exporter.TARGETS: diff --git a/workspace_tools/export/exporters.py b/workspace_tools/export/exporters.py index 6c36132558..741bafed41 100644 --- a/workspace_tools/export/exporters.py +++ b/workspace_tools/export/exporters.py @@ -46,7 +46,7 @@ class Exporter(object): self.toolchain.copy_files(r, trg_path, rel_path=src_path) return resources - def get_project_data(self): + def progen_get_project_data(self): """ Get ProGen project data """ # provide default data, some tools don't require any additional # tool specific settings @@ -64,7 +64,7 @@ class Exporter(object): 'includes': { 'Include Files': self.resources.headers, }, - 'target': [self.target.progen_target], + 'target': [TARGET_MAP[self.target].progen_target], 'macros': self.get_symbols(), 'export_dir': [self.inputDir], 'linker_file': [self.resources.linker_script], @@ -72,6 +72,12 @@ class Exporter(object): } 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) + project.generate(tool_name, copied=True) + def __scan_all(self, path): resources = [] @@ -119,12 +125,6 @@ class Exporter(object): # if not self.toolchain.mbed_libs: # raise OldLibrariesException() - def gen_file_progen(self, tool_name, project_data): - """" Generate project using ProGen Project API """ - settings = ProjectSettings() - project = Project(self.program_name, [project_data], settings) - project.generate(tool_name, copied=True) - 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)