Brian Daniels / mbed-tools

Fork of mbed-tools by Morpheus

Committer:
screamer
Date:
Wed Mar 30 16:23:44 2016 +0000
Revision:
0:4a2e5f0422d6
Child:
2:5f044fef8f98
Initial revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:4a2e5f0422d6 1 """
screamer 0:4a2e5f0422d6 2 mbed SDK
screamer 0:4a2e5f0422d6 3 Copyright (c) 2011-2016 ARM Limited
screamer 0:4a2e5f0422d6 4
screamer 0:4a2e5f0422d6 5 Licensed under the Apache License, Version 2.0 (the "License");
screamer 0:4a2e5f0422d6 6 you may not use this file except in compliance with the License.
screamer 0:4a2e5f0422d6 7 You may obtain a copy of the License at
screamer 0:4a2e5f0422d6 8
screamer 0:4a2e5f0422d6 9 http://www.apache.org/licenses/LICENSE-2.0
screamer 0:4a2e5f0422d6 10
screamer 0:4a2e5f0422d6 11 Unless required by applicable law or agreed to in writing, software
screamer 0:4a2e5f0422d6 12 distributed under the License is distributed on an "AS IS" BASIS,
screamer 0:4a2e5f0422d6 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
screamer 0:4a2e5f0422d6 14 See the License for the specific language governing permissions and
screamer 0:4a2e5f0422d6 15 limitations under the License.
screamer 0:4a2e5f0422d6 16 """
screamer 0:4a2e5f0422d6 17
screamer 0:4a2e5f0422d6 18 CORE_LABELS = {
screamer 0:4a2e5f0422d6 19 "ARM7TDMI-S": ["ARM7", "LIKE_CORTEX_ARM7"],
screamer 0:4a2e5f0422d6 20 "Cortex-M0" : ["M0", "CORTEX_M", "LIKE_CORTEX_M0"],
screamer 0:4a2e5f0422d6 21 "Cortex-M0+": ["M0P", "CORTEX_M", "LIKE_CORTEX_M0"],
screamer 0:4a2e5f0422d6 22 "Cortex-M1" : ["M1", "CORTEX_M", "LIKE_CORTEX_M1"],
screamer 0:4a2e5f0422d6 23 "Cortex-M3" : ["M3", "CORTEX_M", "LIKE_CORTEX_M3"],
screamer 0:4a2e5f0422d6 24 "Cortex-M4" : ["M4", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M4"],
screamer 0:4a2e5f0422d6 25 "Cortex-M4F" : ["M4", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M4"],
screamer 0:4a2e5f0422d6 26 "Cortex-M7" : ["M7", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M7"],
screamer 0:4a2e5f0422d6 27 "Cortex-M7F" : ["M7", "CORTEX_M", "RTOS_M4_M7", "LIKE_CORTEX_M7"],
screamer 0:4a2e5f0422d6 28 "Cortex-A9" : ["A9", "CORTEX_A", "LIKE_CORTEX_A9"]
screamer 0:4a2e5f0422d6 29 }
screamer 0:4a2e5f0422d6 30
screamer 0:4a2e5f0422d6 31 import os
screamer 0:4a2e5f0422d6 32 import binascii
screamer 0:4a2e5f0422d6 33 import struct
screamer 0:4a2e5f0422d6 34 import shutil
screamer 0:4a2e5f0422d6 35 from workspace_tools.patch import patch
screamer 0:4a2e5f0422d6 36 from paths import TOOLS_BOOTLOADERS
screamer 0:4a2e5f0422d6 37
screamer 0:4a2e5f0422d6 38 class Target:
screamer 0:4a2e5f0422d6 39 def __init__(self):
screamer 0:4a2e5f0422d6 40 # ARM Core
screamer 0:4a2e5f0422d6 41 self.core = None
screamer 0:4a2e5f0422d6 42
screamer 0:4a2e5f0422d6 43 # Is the disk provided by the interface chip of this board virtual?
screamer 0:4a2e5f0422d6 44 self.is_disk_virtual = False
screamer 0:4a2e5f0422d6 45
screamer 0:4a2e5f0422d6 46 # list of toolchains that are supported by the mbed SDK for this target
screamer 0:4a2e5f0422d6 47 self.supported_toolchains = None
screamer 0:4a2e5f0422d6 48
screamer 0:4a2e5f0422d6 49 # list of extra specific labels
screamer 0:4a2e5f0422d6 50 self.extra_labels = []
screamer 0:4a2e5f0422d6 51
screamer 0:4a2e5f0422d6 52 # list of macros (-D)
screamer 0:4a2e5f0422d6 53 self.macros = []
screamer 0:4a2e5f0422d6 54
screamer 0:4a2e5f0422d6 55 # Default online compiler:
screamer 0:4a2e5f0422d6 56 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 57
screamer 0:4a2e5f0422d6 58 self.name = self.__class__.__name__
screamer 0:4a2e5f0422d6 59
screamer 0:4a2e5f0422d6 60 # Code used to determine devices' platform
screamer 0:4a2e5f0422d6 61 # This code is prefix in URL link provided in mbed.htm (in mbed disk)
screamer 0:4a2e5f0422d6 62 self.detect_code = []
screamer 0:4a2e5f0422d6 63
screamer 0:4a2e5f0422d6 64 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 65 return 4 if self.is_disk_virtual else 1.5
screamer 0:4a2e5f0422d6 66
screamer 0:4a2e5f0422d6 67 def get_labels(self):
screamer 0:4a2e5f0422d6 68 return [self.name] + CORE_LABELS[self.core] + self.extra_labels
screamer 0:4a2e5f0422d6 69
screamer 0:4a2e5f0422d6 70 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 71 pass
screamer 0:4a2e5f0422d6 72
screamer 0:4a2e5f0422d6 73
screamer 0:4a2e5f0422d6 74 ### MCU Support ###
screamer 0:4a2e5f0422d6 75
screamer 0:4a2e5f0422d6 76 class CM4_UARM(Target):
screamer 0:4a2e5f0422d6 77 def __init__(self):
screamer 0:4a2e5f0422d6 78 Target.__init__(self)
screamer 0:4a2e5f0422d6 79 self.core = "Cortex-M4"
screamer 0:4a2e5f0422d6 80 self.supported_toolchains = ["uARM"]
screamer 0:4a2e5f0422d6 81 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 82
screamer 0:4a2e5f0422d6 83 class CM4_ARM(Target):
screamer 0:4a2e5f0422d6 84 def __init__(self):
screamer 0:4a2e5f0422d6 85 Target.__init__(self)
screamer 0:4a2e5f0422d6 86 self.core = "Cortex-M4"
screamer 0:4a2e5f0422d6 87 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 88 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 89
screamer 0:4a2e5f0422d6 90 class CM4F_UARM(Target):
screamer 0:4a2e5f0422d6 91 def __init__(self):
screamer 0:4a2e5f0422d6 92 Target.__init__(self)
screamer 0:4a2e5f0422d6 93 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 94 self.supported_toolchains = ["uARM"]
screamer 0:4a2e5f0422d6 95 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 96
screamer 0:4a2e5f0422d6 97 class CM4F_ARM(Target):
screamer 0:4a2e5f0422d6 98 def __init__(self):
screamer 0:4a2e5f0422d6 99 Target.__init__(self)
screamer 0:4a2e5f0422d6 100 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 101 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 102 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 103
screamer 0:4a2e5f0422d6 104
screamer 0:4a2e5f0422d6 105 ### NXP ###
screamer 0:4a2e5f0422d6 106
screamer 0:4a2e5f0422d6 107 # This class implements the post-link patching step needed by LPC targets
screamer 0:4a2e5f0422d6 108 class LPCTarget(Target):
screamer 0:4a2e5f0422d6 109 def __init__(self):
screamer 0:4a2e5f0422d6 110 Target.__init__(self)
screamer 0:4a2e5f0422d6 111
screamer 0:4a2e5f0422d6 112 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 113 hook.hook_add_binary("post", self.lpc_patch)
screamer 0:4a2e5f0422d6 114
screamer 0:4a2e5f0422d6 115 @staticmethod
screamer 0:4a2e5f0422d6 116 def lpc_patch(t_self, resources, elf, binf):
screamer 0:4a2e5f0422d6 117 t_self.debug("LPC Patch: %s" % os.path.split(binf)[1])
screamer 0:4a2e5f0422d6 118 patch(binf)
screamer 0:4a2e5f0422d6 119
screamer 0:4a2e5f0422d6 120 class LPC11C24(LPCTarget):
screamer 0:4a2e5f0422d6 121 def __init__(self):
screamer 0:4a2e5f0422d6 122 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 123 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 124 self.extra_labels = ['NXP', 'LPC11XX_11CXX', 'LPC11CXX']
screamer 0:4a2e5f0422d6 125 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 126
screamer 0:4a2e5f0422d6 127 self.progen = {
screamer 0:4a2e5f0422d6 128 "target":"lpc11c24_301",
screamer 0:4a2e5f0422d6 129 }
screamer 0:4a2e5f0422d6 130
screamer 0:4a2e5f0422d6 131 class LPC1114(LPCTarget):
screamer 0:4a2e5f0422d6 132 def __init__(self):
screamer 0:4a2e5f0422d6 133 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 134 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 135 self.extra_labels = ['NXP', 'LPC11XX_11CXX', 'LPC11XX']
screamer 0:4a2e5f0422d6 136 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 137 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 138 self.progen = {
screamer 0:4a2e5f0422d6 139 "target":"lpc1114_102",
screamer 0:4a2e5f0422d6 140 "uvision": {
screamer 0:4a2e5f0422d6 141 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 142 }
screamer 0:4a2e5f0422d6 143 }
screamer 0:4a2e5f0422d6 144
screamer 0:4a2e5f0422d6 145 class LPC11U24(LPCTarget):
screamer 0:4a2e5f0422d6 146 def __init__(self):
screamer 0:4a2e5f0422d6 147 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 148 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 149 self.extra_labels = ['NXP', 'LPC11UXX', 'LPC11U24_401']
screamer 0:4a2e5f0422d6 150 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 151 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 152 self.detect_code = ["1040"]
screamer 0:4a2e5f0422d6 153 self.progen = {
screamer 0:4a2e5f0422d6 154 "target":"lpc11u24_201",
screamer 0:4a2e5f0422d6 155 "uvision": {
screamer 0:4a2e5f0422d6 156 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 157 }
screamer 0:4a2e5f0422d6 158 }
screamer 0:4a2e5f0422d6 159
screamer 0:4a2e5f0422d6 160 class OC_MBUINO(LPC11U24):
screamer 0:4a2e5f0422d6 161 def __init__(self):
screamer 0:4a2e5f0422d6 162 LPC11U24.__init__(self)
screamer 0:4a2e5f0422d6 163 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 164 self.extra_labels = ['NXP', 'LPC11UXX']
screamer 0:4a2e5f0422d6 165 self.macros = ['TARGET_LPC11U24']
screamer 0:4a2e5f0422d6 166 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 167 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 168 self.progen = {
screamer 0:4a2e5f0422d6 169 "target":"lpc11u24_201",
screamer 0:4a2e5f0422d6 170 "uvision": {
screamer 0:4a2e5f0422d6 171 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 172 }
screamer 0:4a2e5f0422d6 173 }
screamer 0:4a2e5f0422d6 174
screamer 0:4a2e5f0422d6 175 class LPC11U24_301(LPCTarget):
screamer 0:4a2e5f0422d6 176 def __init__(self):
screamer 0:4a2e5f0422d6 177 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 178 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 179 self.extra_labels = ['NXP', 'LPC11UXX']
screamer 0:4a2e5f0422d6 180 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 181
screamer 0:4a2e5f0422d6 182 class LPC11U34_421(LPCTarget):
screamer 0:4a2e5f0422d6 183 def __init__(self):
screamer 0:4a2e5f0422d6 184 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 185 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 186 self.extra_labels = ['NXP', 'LPC11UXX']
screamer 0:4a2e5f0422d6 187 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 188 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 189
screamer 0:4a2e5f0422d6 190 class MICRONFCBOARD(LPC11U34_421):
screamer 0:4a2e5f0422d6 191 def __init__(self):
screamer 0:4a2e5f0422d6 192 LPC11U34_421.__init__(self)
screamer 0:4a2e5f0422d6 193 self.macros = ['LPC11U34_421', 'APPNEARME_MICRONFCBOARD']
screamer 0:4a2e5f0422d6 194 self.extra_labels = ['NXP', 'LPC11UXX', 'APPNEARME_MICRONFCBOARD']
screamer 0:4a2e5f0422d6 195 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 196 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 197
screamer 0:4a2e5f0422d6 198 class LPC11U35_401(LPCTarget):
screamer 0:4a2e5f0422d6 199 def __init__(self):
screamer 0:4a2e5f0422d6 200 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 201 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 202 self.extra_labels = ['NXP', 'LPC11UXX']
screamer 0:4a2e5f0422d6 203 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 204 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 205 self.progen = {
screamer 0:4a2e5f0422d6 206 "target":"lpc11u35_401",
screamer 0:4a2e5f0422d6 207 "uvision": {
screamer 0:4a2e5f0422d6 208 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 209 }
screamer 0:4a2e5f0422d6 210 }
screamer 0:4a2e5f0422d6 211
screamer 0:4a2e5f0422d6 212 class LPC11U35_501(LPCTarget):
screamer 0:4a2e5f0422d6 213 def __init__(self):
screamer 0:4a2e5f0422d6 214 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 215 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 216 self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
screamer 0:4a2e5f0422d6 217 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR" , "IAR"]
screamer 0:4a2e5f0422d6 218 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 219 self.progen = {
screamer 0:4a2e5f0422d6 220 "target":"lpc11u35_501",
screamer 0:4a2e5f0422d6 221 "uvision": {
screamer 0:4a2e5f0422d6 222 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 223 }
screamer 0:4a2e5f0422d6 224 }
screamer 0:4a2e5f0422d6 225
screamer 0:4a2e5f0422d6 226 class LPC11U35_501_IBDAP(LPCTarget):
screamer 0:4a2e5f0422d6 227 def __init__(self):
screamer 0:4a2e5f0422d6 228 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 229 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 230 self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
screamer 0:4a2e5f0422d6 231 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR" , "IAR"]
screamer 0:4a2e5f0422d6 232 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 233 self.progen = {
screamer 0:4a2e5f0422d6 234 "target":"lpc11u35_501",
screamer 0:4a2e5f0422d6 235 "uvision": {
screamer 0:4a2e5f0422d6 236 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 237 }
screamer 0:4a2e5f0422d6 238 }
screamer 0:4a2e5f0422d6 239
screamer 0:4a2e5f0422d6 240 class XADOW_M0(LPCTarget):
screamer 0:4a2e5f0422d6 241 def __init__(self):
screamer 0:4a2e5f0422d6 242 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 243 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 244 self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
screamer 0:4a2e5f0422d6 245 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 246 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 247 self.progen = {
screamer 0:4a2e5f0422d6 248 "target":"lpc11u35_501",
screamer 0:4a2e5f0422d6 249 "uvision": {
screamer 0:4a2e5f0422d6 250 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 251 }
screamer 0:4a2e5f0422d6 252 }
screamer 0:4a2e5f0422d6 253
screamer 0:4a2e5f0422d6 254 class LPC11U35_Y5_MBUG(LPCTarget):
screamer 0:4a2e5f0422d6 255 def __init__(self):
screamer 0:4a2e5f0422d6 256 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 257 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 258 self.extra_labels = ['NXP', 'LPC11UXX', 'MCU_LPC11U35_501']
screamer 0:4a2e5f0422d6 259 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR" , "IAR"]
screamer 0:4a2e5f0422d6 260 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 261 self.progen = {
screamer 0:4a2e5f0422d6 262 "target":"lpc11u35_501",
screamer 0:4a2e5f0422d6 263 "uvision": {
screamer 0:4a2e5f0422d6 264 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 265 }
screamer 0:4a2e5f0422d6 266 }
screamer 0:4a2e5f0422d6 267
screamer 0:4a2e5f0422d6 268 class LPC11U37_501(LPCTarget):
screamer 0:4a2e5f0422d6 269 def __init__(self):
screamer 0:4a2e5f0422d6 270 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 271 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 272 self.extra_labels = ['NXP', 'LPC11UXX']
screamer 0:4a2e5f0422d6 273 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 274 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 275 self.progen = {
screamer 0:4a2e5f0422d6 276 "target":"lpc11u37_501",
screamer 0:4a2e5f0422d6 277 "uvision": {
screamer 0:4a2e5f0422d6 278 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 279 }
screamer 0:4a2e5f0422d6 280 }
screamer 0:4a2e5f0422d6 281
screamer 0:4a2e5f0422d6 282 class LPCCAPPUCCINO(LPC11U37_501):
screamer 0:4a2e5f0422d6 283 def __init__(self):
screamer 0:4a2e5f0422d6 284 LPC11U37_501.__init__(self)
screamer 0:4a2e5f0422d6 285
screamer 0:4a2e5f0422d6 286 class ARCH_GPRS(LPCTarget):
screamer 0:4a2e5f0422d6 287 def __init__(self):
screamer 0:4a2e5f0422d6 288 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 289 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 290 self.extra_labels = ['NXP', 'LPC11UXX', 'LPC11U37_501']
screamer 0:4a2e5f0422d6 291 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 292 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 293 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 294 self.progen = {
screamer 0:4a2e5f0422d6 295 "target":"lpc11u37_501",
screamer 0:4a2e5f0422d6 296 "uvision": {
screamer 0:4a2e5f0422d6 297 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 298 }
screamer 0:4a2e5f0422d6 299 }
screamer 0:4a2e5f0422d6 300
screamer 0:4a2e5f0422d6 301 class LPC11U68(LPCTarget):
screamer 0:4a2e5f0422d6 302 def __init__(self):
screamer 0:4a2e5f0422d6 303 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 304 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 305 self.extra_labels = ['NXP', 'LPC11U6X']
screamer 0:4a2e5f0422d6 306 self.supported_toolchains = ["ARM", "uARM", "GCC_CR", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 307 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 308 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 309 self.detect_code = ["1168"]
screamer 0:4a2e5f0422d6 310 self.progen = {
screamer 0:4a2e5f0422d6 311 "target":"lpc11u68",
screamer 0:4a2e5f0422d6 312 "uvision": {
screamer 0:4a2e5f0422d6 313 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 314 }
screamer 0:4a2e5f0422d6 315 }
screamer 0:4a2e5f0422d6 316
screamer 0:4a2e5f0422d6 317 class LPC1347(LPCTarget):
screamer 0:4a2e5f0422d6 318 def __init__(self):
screamer 0:4a2e5f0422d6 319 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 320 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 321 self.extra_labels = ['NXP', 'LPC13XX']
screamer 0:4a2e5f0422d6 322 self.supported_toolchains = ["ARM", "GCC_ARM","IAR"]
screamer 0:4a2e5f0422d6 323 self.progen = {
screamer 0:4a2e5f0422d6 324 "target":"lpc1347",
screamer 0:4a2e5f0422d6 325 }
screamer 0:4a2e5f0422d6 326
screamer 0:4a2e5f0422d6 327 class LPC1549(LPCTarget):
screamer 0:4a2e5f0422d6 328 def __init__(self):
screamer 0:4a2e5f0422d6 329 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 330 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 331 self.extra_labels = ['NXP', 'LPC15XX']
screamer 0:4a2e5f0422d6 332 self.supported_toolchains = ["uARM", "GCC_CR", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 333 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 334 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 335 self.detect_code = ["1549"]
screamer 0:4a2e5f0422d6 336 self.progen = {
screamer 0:4a2e5f0422d6 337 "target":"lpc1549",
screamer 0:4a2e5f0422d6 338 "uvision": {
screamer 0:4a2e5f0422d6 339 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 340 }
screamer 0:4a2e5f0422d6 341 }
screamer 0:4a2e5f0422d6 342
screamer 0:4a2e5f0422d6 343 class LPC1768(LPCTarget):
screamer 0:4a2e5f0422d6 344 def __init__(self):
screamer 0:4a2e5f0422d6 345 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 346 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 347 self.extra_labels = ['NXP', 'LPC176X', 'MBED_LPC1768']
screamer 0:4a2e5f0422d6 348 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 349 self.detect_code = ["1010"]
screamer 0:4a2e5f0422d6 350 self.progen = {
screamer 0:4a2e5f0422d6 351 "target":"mbed-lpc1768",
screamer 0:4a2e5f0422d6 352 }
screamer 0:4a2e5f0422d6 353
screamer 0:4a2e5f0422d6 354 class ARCH_PRO(LPCTarget):
screamer 0:4a2e5f0422d6 355 def __init__(self):
screamer 0:4a2e5f0422d6 356 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 357 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 358 self.extra_labels = ['NXP', 'LPC176X']
screamer 0:4a2e5f0422d6 359 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 360 self.macros = ['TARGET_LPC1768']
screamer 0:4a2e5f0422d6 361 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 362 self.progen = {
screamer 0:4a2e5f0422d6 363 "target":"arch-pro",
screamer 0:4a2e5f0422d6 364 }
screamer 0:4a2e5f0422d6 365
screamer 0:4a2e5f0422d6 366 class UBLOX_C027(LPCTarget):
screamer 0:4a2e5f0422d6 367 def __init__(self):
screamer 0:4a2e5f0422d6 368 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 369 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 370 self.extra_labels = ['NXP', 'LPC176X']
screamer 0:4a2e5f0422d6 371 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 372 self.macros = ['TARGET_LPC1768']
screamer 0:4a2e5f0422d6 373 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 374 self.progen = {
screamer 0:4a2e5f0422d6 375 "target":"ublox-c027",
screamer 0:4a2e5f0422d6 376 }
screamer 0:4a2e5f0422d6 377
screamer 0:4a2e5f0422d6 378 class XBED_LPC1768(LPCTarget):
screamer 0:4a2e5f0422d6 379 def __init__(self):
screamer 0:4a2e5f0422d6 380 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 381 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 382 self.extra_labels = ['NXP', 'LPC176X', 'XBED_LPC1768']
screamer 0:4a2e5f0422d6 383 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 384 self.macros = ['TARGET_LPC1768']
screamer 0:4a2e5f0422d6 385 self.detect_code = ["1010"]
screamer 0:4a2e5f0422d6 386 self.progen = {
screamer 0:4a2e5f0422d6 387 "target":"lpc1768",
screamer 0:4a2e5f0422d6 388 }
screamer 0:4a2e5f0422d6 389
screamer 0:4a2e5f0422d6 390 class LPC2368(LPCTarget):
screamer 0:4a2e5f0422d6 391 def __init__(self):
screamer 0:4a2e5f0422d6 392 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 393 self.core = "ARM7TDMI-S"
screamer 0:4a2e5f0422d6 394 self.extra_labels = ['NXP', 'LPC23XX']
screamer 0:4a2e5f0422d6 395 self.supported_toolchains = ["ARM", "GCC_ARM", "GCC_CR"]
screamer 0:4a2e5f0422d6 396 self.progen = {
screamer 0:4a2e5f0422d6 397 "target":"lpc2368",
screamer 0:4a2e5f0422d6 398 }
screamer 0:4a2e5f0422d6 399
screamer 0:4a2e5f0422d6 400 class LPC2460(LPCTarget):
screamer 0:4a2e5f0422d6 401 def __init__(self):
screamer 0:4a2e5f0422d6 402 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 403 self.core = "ARM7TDMI-S"
screamer 0:4a2e5f0422d6 404 self.extra_labels = ['NXP', 'LPC2460']
screamer 0:4a2e5f0422d6 405 self.supported_toolchains = ["GCC_ARM"]
screamer 0:4a2e5f0422d6 406 self.progen = {
screamer 0:4a2e5f0422d6 407 "target":"lpc2460",
screamer 0:4a2e5f0422d6 408 }
screamer 0:4a2e5f0422d6 409
screamer 0:4a2e5f0422d6 410 class LPC810(LPCTarget):
screamer 0:4a2e5f0422d6 411 def __init__(self):
screamer 0:4a2e5f0422d6 412 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 413 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 414 self.extra_labels = ['NXP', 'LPC81X']
screamer 0:4a2e5f0422d6 415 self.supported_toolchains = ["uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 416 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 417 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 418 self.progen = {
screamer 0:4a2e5f0422d6 419 "target":"lpc810",
screamer 0:4a2e5f0422d6 420 "uvision": {
screamer 0:4a2e5f0422d6 421 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 422 }
screamer 0:4a2e5f0422d6 423 }
screamer 0:4a2e5f0422d6 424
screamer 0:4a2e5f0422d6 425 class LPC812(LPCTarget):
screamer 0:4a2e5f0422d6 426 def __init__(self):
screamer 0:4a2e5f0422d6 427 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 428 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 429 self.extra_labels = ['NXP', 'LPC81X']
screamer 0:4a2e5f0422d6 430 self.supported_toolchains = ["uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 431 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 432 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 433 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 434 self.detect_code = ["1050"]
screamer 0:4a2e5f0422d6 435 self.progen = {
screamer 0:4a2e5f0422d6 436 "target":"lpc812m101",
screamer 0:4a2e5f0422d6 437 "uvision": {
screamer 0:4a2e5f0422d6 438 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 439 }
screamer 0:4a2e5f0422d6 440 }
screamer 0:4a2e5f0422d6 441
screamer 0:4a2e5f0422d6 442 class LPC824(LPCTarget):
screamer 0:4a2e5f0422d6 443 def __init__(self):
screamer 0:4a2e5f0422d6 444 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 445 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 446 self.extra_labels = ['NXP', 'LPC82X']
screamer 0:4a2e5f0422d6 447 self.supported_toolchains = ["uARM", "GCC_ARM","GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 448 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 449 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 450 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 451 self.progen = {
screamer 0:4a2e5f0422d6 452 "target":"lpc824m201",
screamer 0:4a2e5f0422d6 453 "uvision": {
screamer 0:4a2e5f0422d6 454 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 455 }
screamer 0:4a2e5f0422d6 456 }
screamer 0:4a2e5f0422d6 457
screamer 0:4a2e5f0422d6 458 class SSCI824(LPCTarget):
screamer 0:4a2e5f0422d6 459 def __init__(self):
screamer 0:4a2e5f0422d6 460 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 461 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 462 self.extra_labels = ['NXP', 'LPC82X']
screamer 0:4a2e5f0422d6 463 self.supported_toolchains = ["uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 464 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 465 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 466 self.progen = {
screamer 0:4a2e5f0422d6 467 "target":"ssci824",
screamer 0:4a2e5f0422d6 468 "uvision": {
screamer 0:4a2e5f0422d6 469 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 470 }
screamer 0:4a2e5f0422d6 471 }
screamer 0:4a2e5f0422d6 472
screamer 0:4a2e5f0422d6 473 class LPC4088(LPCTarget):
screamer 0:4a2e5f0422d6 474 def __init__(self):
screamer 0:4a2e5f0422d6 475 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 476 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 477 self.extra_labels = ['NXP', 'LPC408X']
screamer 0:4a2e5f0422d6 478 self.supported_toolchains = ["ARM", "GCC_CR", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 479 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 480 self.progen = {
screamer 0:4a2e5f0422d6 481 "target":"lpc4088",
screamer 0:4a2e5f0422d6 482 }
screamer 0:4a2e5f0422d6 483
screamer 0:4a2e5f0422d6 484 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 485 if toolchain_name in ['ARM_STD', 'ARM_MICRO']:
screamer 0:4a2e5f0422d6 486 hook.hook_add_binary("post", self.binary_hook)
screamer 0:4a2e5f0422d6 487
screamer 0:4a2e5f0422d6 488 @staticmethod
screamer 0:4a2e5f0422d6 489 def binary_hook(t_self, resources, elf, binf):
screamer 0:4a2e5f0422d6 490 if not os.path.isdir(binf):
screamer 0:4a2e5f0422d6 491 # Regular binary file, nothing to do
screamer 0:4a2e5f0422d6 492 LPCTarget.lpc_patch(t_self, resources, elf, binf)
screamer 0:4a2e5f0422d6 493 return
screamer 0:4a2e5f0422d6 494 outbin = open(binf + ".temp", "wb")
screamer 0:4a2e5f0422d6 495 partf = open(os.path.join(binf, "ER_IROM1"), "rb")
screamer 0:4a2e5f0422d6 496 # Pad the fist part (internal flash) with 0xFF to 512k
screamer 0:4a2e5f0422d6 497 data = partf.read()
screamer 0:4a2e5f0422d6 498 outbin.write(data)
screamer 0:4a2e5f0422d6 499 outbin.write('\xFF' * (512*1024 - len(data)))
screamer 0:4a2e5f0422d6 500 partf.close()
screamer 0:4a2e5f0422d6 501 # Read and append the second part (external flash) in chunks of fixed size
screamer 0:4a2e5f0422d6 502 chunksize = 128 * 1024
screamer 0:4a2e5f0422d6 503 partf = open(os.path.join(binf, "ER_IROM2"), "rb")
screamer 0:4a2e5f0422d6 504 while True:
screamer 0:4a2e5f0422d6 505 data = partf.read(chunksize)
screamer 0:4a2e5f0422d6 506 outbin.write(data)
screamer 0:4a2e5f0422d6 507 if len(data) < chunksize:
screamer 0:4a2e5f0422d6 508 break
screamer 0:4a2e5f0422d6 509 partf.close()
screamer 0:4a2e5f0422d6 510 outbin.close()
screamer 0:4a2e5f0422d6 511 # Remove the directory with the binary parts and rename the temporary
screamer 0:4a2e5f0422d6 512 # file to 'binf'
screamer 0:4a2e5f0422d6 513 shutil.rmtree(binf, True)
screamer 0:4a2e5f0422d6 514 os.rename(binf + '.temp', binf)
screamer 0:4a2e5f0422d6 515 t_self.debug("Generated custom binary file (internal flash + SPIFI)")
screamer 0:4a2e5f0422d6 516 LPCTarget.lpc_patch(t_self, resources, elf, binf)
screamer 0:4a2e5f0422d6 517
screamer 0:4a2e5f0422d6 518 class LPC4088_DM(LPC4088):
screamer 0:4a2e5f0422d6 519 pass
screamer 0:4a2e5f0422d6 520
screamer 0:4a2e5f0422d6 521 class LPC4330_M4(LPCTarget):
screamer 0:4a2e5f0422d6 522 def __init__(self):
screamer 0:4a2e5f0422d6 523 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 524 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 525 self.extra_labels = ['NXP', 'LPC43XX', 'LPC4330']
screamer 0:4a2e5f0422d6 526 self.supported_toolchains = ["ARM", "GCC_CR", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 527 self.progen = {
screamer 0:4a2e5f0422d6 528 "target":"lpc4330",
screamer 0:4a2e5f0422d6 529 }
screamer 0:4a2e5f0422d6 530
screamer 0:4a2e5f0422d6 531 class LPC4330_M0(LPCTarget):
screamer 0:4a2e5f0422d6 532 def __init__(self):
screamer 0:4a2e5f0422d6 533 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 534 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 535 self.extra_labels = ['NXP', 'LPC43XX', 'LPC4330']
screamer 0:4a2e5f0422d6 536 self.supported_toolchains = ["ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 537
screamer 0:4a2e5f0422d6 538 class LPC4337(LPCTarget):
screamer 0:4a2e5f0422d6 539 def __init__(self):
screamer 0:4a2e5f0422d6 540 Target.__init__(self)
screamer 0:4a2e5f0422d6 541 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 542 self.extra_labels = ['NXP', 'LPC43XX', 'LPC4337']
screamer 0:4a2e5f0422d6 543 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 544 self.progen = {
screamer 0:4a2e5f0422d6 545 "target":"lpc4337",
screamer 0:4a2e5f0422d6 546 }
screamer 0:4a2e5f0422d6 547
screamer 0:4a2e5f0422d6 548 class LPC1800(LPCTarget):
screamer 0:4a2e5f0422d6 549 def __init__(self):
screamer 0:4a2e5f0422d6 550 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 551 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 552 self.extra_labels = ['NXP', 'LPC43XX']
screamer 0:4a2e5f0422d6 553 self.supported_toolchains = ["ARM", "GCC_CR", "IAR"]
screamer 0:4a2e5f0422d6 554
screamer 0:4a2e5f0422d6 555 class LPC11U37H_401(LPCTarget):
screamer 0:4a2e5f0422d6 556 def __init__(self):
screamer 0:4a2e5f0422d6 557 LPCTarget.__init__(self)
screamer 0:4a2e5f0422d6 558 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 559 self.extra_labels = ['NXP', 'LPC11UXX']
screamer 0:4a2e5f0422d6 560 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "GCC_CR"]
screamer 0:4a2e5f0422d6 561 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 562 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 563 self.progen = {
screamer 0:4a2e5f0422d6 564 "target":"lpc11u37_401",
screamer 0:4a2e5f0422d6 565 "uvision": {
screamer 0:4a2e5f0422d6 566 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 567 }
screamer 0:4a2e5f0422d6 568 }
screamer 0:4a2e5f0422d6 569 ### Freescale ###
screamer 0:4a2e5f0422d6 570
screamer 0:4a2e5f0422d6 571 class KL05Z(Target):
screamer 0:4a2e5f0422d6 572 def __init__(self):
screamer 0:4a2e5f0422d6 573 Target.__init__(self)
screamer 0:4a2e5f0422d6 574 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 575 self.extra_labels = ['Freescale', 'KLXX']
screamer 0:4a2e5f0422d6 576 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 577 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 578 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 579 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 580 self.progen = {
screamer 0:4a2e5f0422d6 581 "target":"frdm-kl05z",
screamer 0:4a2e5f0422d6 582 "uvision": {
screamer 0:4a2e5f0422d6 583 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 584 }
screamer 0:4a2e5f0422d6 585 }
screamer 0:4a2e5f0422d6 586
screamer 0:4a2e5f0422d6 587 class KL25Z(Target):
screamer 0:4a2e5f0422d6 588 def __init__(self):
screamer 0:4a2e5f0422d6 589 Target.__init__(self)
screamer 0:4a2e5f0422d6 590 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 591 self.extra_labels = ['Freescale', 'KLXX']
screamer 0:4a2e5f0422d6 592 self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 593 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 594 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 595 self.detect_code = ["0200"]
screamer 0:4a2e5f0422d6 596 self.progen = {
screamer 0:4a2e5f0422d6 597 "target":"frdm-kl25z",
screamer 0:4a2e5f0422d6 598 }
screamer 0:4a2e5f0422d6 599
screamer 0:4a2e5f0422d6 600 class KL26Z(Target):
screamer 0:4a2e5f0422d6 601 def __init__(self):
screamer 0:4a2e5f0422d6 602 Target.__init__(self)
screamer 0:4a2e5f0422d6 603 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 604 self.extra_labels = ['Freescale', 'KLXX']
screamer 0:4a2e5f0422d6 605 self.supported_toolchains = ["ARM","GCC_ARM","IAR"]
screamer 0:4a2e5f0422d6 606 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 607 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 608 self.progen = {
screamer 0:4a2e5f0422d6 609 "target":"kl26z",
screamer 0:4a2e5f0422d6 610 }
screamer 0:4a2e5f0422d6 611
screamer 0:4a2e5f0422d6 612 class KL43Z(Target):
screamer 0:4a2e5f0422d6 613 def __init__(self):
screamer 0:4a2e5f0422d6 614 Target.__init__(self)
screamer 0:4a2e5f0422d6 615 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 616 self.extra_labels = ['Freescale', 'KLXX']
screamer 0:4a2e5f0422d6 617 self.supported_toolchains = ["GCC_ARM", "ARM"]
screamer 0:4a2e5f0422d6 618 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 619 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 620 self.progen = {
screamer 0:4a2e5f0422d6 621 "target":"frdm-kl43z",
screamer 0:4a2e5f0422d6 622 }
screamer 0:4a2e5f0422d6 623
screamer 0:4a2e5f0422d6 624 class KL46Z(Target):
screamer 0:4a2e5f0422d6 625 def __init__(self):
screamer 0:4a2e5f0422d6 626 Target.__init__(self)
screamer 0:4a2e5f0422d6 627 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 628 self.extra_labels = ['Freescale', 'KLXX']
screamer 0:4a2e5f0422d6 629 self.supported_toolchains = ["GCC_ARM", "ARM", "IAR"]
screamer 0:4a2e5f0422d6 630 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 631 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 632 self.detect_code = ["0220"]
screamer 0:4a2e5f0422d6 633 self.progen = {
screamer 0:4a2e5f0422d6 634 "target":"frdm-kl46z",
screamer 0:4a2e5f0422d6 635 }
screamer 0:4a2e5f0422d6 636
screamer 0:4a2e5f0422d6 637 class K20D50M(Target):
screamer 0:4a2e5f0422d6 638 def __init__(self):
screamer 0:4a2e5f0422d6 639 Target.__init__(self)
screamer 0:4a2e5f0422d6 640 self.core = "Cortex-M4"
screamer 0:4a2e5f0422d6 641 self.extra_labels = ['Freescale', 'K20XX']
screamer 0:4a2e5f0422d6 642 self.supported_toolchains = ["GCC_ARM", "ARM", "IAR"]
screamer 0:4a2e5f0422d6 643 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 644 self.detect_code = ["0230"]
screamer 0:4a2e5f0422d6 645 self.progen = {
screamer 0:4a2e5f0422d6 646 "target":"frdm-k20d50m",
screamer 0:4a2e5f0422d6 647 }
screamer 0:4a2e5f0422d6 648
screamer 0:4a2e5f0422d6 649 class TEENSY3_1(Target):
screamer 0:4a2e5f0422d6 650 OUTPUT_EXT = 'hex'
screamer 0:4a2e5f0422d6 651
screamer 0:4a2e5f0422d6 652 def __init__(self):
screamer 0:4a2e5f0422d6 653 Target.__init__(self)
screamer 0:4a2e5f0422d6 654 self.core = "Cortex-M4"
screamer 0:4a2e5f0422d6 655 self.extra_labels = ['Freescale', 'K20XX', 'K20DX256']
screamer 0:4a2e5f0422d6 656 self.supported_toolchains = ["GCC_ARM", "ARM"]
screamer 0:4a2e5f0422d6 657 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 658 self.detect_code = ["0230"]
screamer 0:4a2e5f0422d6 659 self.progen = {
screamer 0:4a2e5f0422d6 660 "target":"teensy-31",
screamer 0:4a2e5f0422d6 661 }
screamer 0:4a2e5f0422d6 662
screamer 0:4a2e5f0422d6 663 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 664 if toolchain_name in ['ARM_STD', 'ARM_MICRO', 'GCC_ARM']:
screamer 0:4a2e5f0422d6 665 hook.hook_add_binary("post", self.binary_hook)
screamer 0:4a2e5f0422d6 666
screamer 0:4a2e5f0422d6 667 @staticmethod
screamer 0:4a2e5f0422d6 668 def binary_hook(t_self, resources, elf, binf):
screamer 0:4a2e5f0422d6 669 from intelhex import IntelHex
screamer 0:4a2e5f0422d6 670 binh = IntelHex()
screamer 0:4a2e5f0422d6 671 binh.loadbin(binf, offset = 0)
screamer 0:4a2e5f0422d6 672
screamer 0:4a2e5f0422d6 673 with open(binf.replace(".bin", ".hex"), "w") as f:
screamer 0:4a2e5f0422d6 674 binh.tofile(f, format='hex')
screamer 0:4a2e5f0422d6 675
screamer 0:4a2e5f0422d6 676 class K22F(Target):
screamer 0:4a2e5f0422d6 677 def __init__(self):
screamer 0:4a2e5f0422d6 678 Target.__init__(self)
screamer 0:4a2e5f0422d6 679 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 680 self.extra_labels = ['Freescale', 'KPSDK_MCUS', 'KPSDK_CODE']
screamer 0:4a2e5f0422d6 681 self.macros = ["CPU_MK22FN512VLH12", "FSL_RTOS_MBED"]
screamer 0:4a2e5f0422d6 682 self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 683 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 684 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 685 self.detect_code = ["0201"]
screamer 0:4a2e5f0422d6 686 self.progen = {
screamer 0:4a2e5f0422d6 687 "target":"frdm-k22f",
screamer 0:4a2e5f0422d6 688 }
screamer 0:4a2e5f0422d6 689
screamer 0:4a2e5f0422d6 690 class K64F(Target):
screamer 0:4a2e5f0422d6 691 def __init__(self):
screamer 0:4a2e5f0422d6 692 Target.__init__(self)
screamer 0:4a2e5f0422d6 693 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 694 self.extra_labels = ['Freescale', 'KPSDK_MCUS', 'KPSDK_CODE', 'MCU_K64F', 'FRDM']
screamer 0:4a2e5f0422d6 695 self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED"]
screamer 0:4a2e5f0422d6 696 self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 697 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 698 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 699 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 700 self.detect_code = ["0240"]
screamer 0:4a2e5f0422d6 701 self.progen = {
screamer 0:4a2e5f0422d6 702 "target":"frdm-k64f",
screamer 0:4a2e5f0422d6 703 }
screamer 0:4a2e5f0422d6 704
screamer 0:4a2e5f0422d6 705 class MTS_GAMBIT(Target):
screamer 0:4a2e5f0422d6 706 def __init__(self):
screamer 0:4a2e5f0422d6 707 Target.__init__(self)
screamer 0:4a2e5f0422d6 708 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 709 self.extra_labels = ['Freescale', 'KPSDK_MCUS', 'KPSDK_CODE', 'MCU_K64F']
screamer 0:4a2e5f0422d6 710 self.supported_toolchains = ["ARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 711 self.macros = ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"]
screamer 0:4a2e5f0422d6 712 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 713 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 714 self.progen = {
screamer 0:4a2e5f0422d6 715 "target":"mts-gambit",
screamer 0:4a2e5f0422d6 716 }
screamer 0:4a2e5f0422d6 717
screamer 0:4a2e5f0422d6 718 ### STMicro ###
screamer 0:4a2e5f0422d6 719
screamer 0:4a2e5f0422d6 720 class NUCLEO_F030R8(Target):
screamer 0:4a2e5f0422d6 721 def __init__(self):
screamer 0:4a2e5f0422d6 722 Target.__init__(self)
screamer 0:4a2e5f0422d6 723 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 724 self.extra_labels = ['STM', 'STM32F0', 'STM32F030R8']
screamer 0:4a2e5f0422d6 725 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 726 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 727 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 728 self.detect_code = ["0725"]
screamer 0:4a2e5f0422d6 729 self.progen = {
screamer 0:4a2e5f0422d6 730 "target":"nucleo-f030r8",
screamer 0:4a2e5f0422d6 731 }
screamer 0:4a2e5f0422d6 732
screamer 0:4a2e5f0422d6 733 class NUCLEO_F031K6(Target):
screamer 0:4a2e5f0422d6 734 def __init__(self):
screamer 0:4a2e5f0422d6 735 Target.__init__(self)
screamer 0:4a2e5f0422d6 736 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 737 self.extra_labels = ['STM', 'STM32F0', 'STM32F031K6']
screamer 0:4a2e5f0422d6 738 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 739 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 740 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 741 self.detect_code = ["0791"]
screamer 0:4a2e5f0422d6 742 self.progen = {
screamer 0:4a2e5f0422d6 743 "target":"nucleo-f031k6",
screamer 0:4a2e5f0422d6 744 }
screamer 0:4a2e5f0422d6 745
screamer 0:4a2e5f0422d6 746 class NUCLEO_F042K6(Target):
screamer 0:4a2e5f0422d6 747 def __init__(self):
screamer 0:4a2e5f0422d6 748 Target.__init__(self)
screamer 0:4a2e5f0422d6 749 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 750 self.extra_labels = ['STM', 'STM32F0', 'STM32F042K6']
screamer 0:4a2e5f0422d6 751 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 752 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 753 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 754 self.detect_code = ["0785"]
screamer 0:4a2e5f0422d6 755 self.progen = {
screamer 0:4a2e5f0422d6 756 "target":"nucleo-f042k6",
screamer 0:4a2e5f0422d6 757 }
screamer 0:4a2e5f0422d6 758
screamer 0:4a2e5f0422d6 759 class NUCLEO_F070RB(Target):
screamer 0:4a2e5f0422d6 760 def __init__(self):
screamer 0:4a2e5f0422d6 761 Target.__init__(self)
screamer 0:4a2e5f0422d6 762 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 763 self.extra_labels = ['STM', 'STM32F0', 'STM32F070RB']
screamer 0:4a2e5f0422d6 764 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 765 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 766 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 767 self.detect_code = ["0755"]
screamer 0:4a2e5f0422d6 768 self.progen = {
screamer 0:4a2e5f0422d6 769 "target":"nucleo-f070rb",
screamer 0:4a2e5f0422d6 770 }
screamer 0:4a2e5f0422d6 771
screamer 0:4a2e5f0422d6 772 class NUCLEO_F072RB(Target):
screamer 0:4a2e5f0422d6 773 def __init__(self):
screamer 0:4a2e5f0422d6 774 Target.__init__(self)
screamer 0:4a2e5f0422d6 775 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 776 self.extra_labels = ['STM', 'STM32F0', 'STM32F072RB']
screamer 0:4a2e5f0422d6 777 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 778 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 779 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 780 self.detect_code = ["0730"]
screamer 0:4a2e5f0422d6 781 self.progen = {
screamer 0:4a2e5f0422d6 782 "target":"nucleo-f072rb",
screamer 0:4a2e5f0422d6 783 }
screamer 0:4a2e5f0422d6 784
screamer 0:4a2e5f0422d6 785 class NUCLEO_F091RC(Target):
screamer 0:4a2e5f0422d6 786 def __init__(self):
screamer 0:4a2e5f0422d6 787 Target.__init__(self)
screamer 0:4a2e5f0422d6 788 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 789 self.extra_labels = ['STM', 'STM32F0', 'STM32F091RC']
screamer 0:4a2e5f0422d6 790 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 791 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 792 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 793 self.detect_code = ["0750"]
screamer 0:4a2e5f0422d6 794 self.progen = {
screamer 0:4a2e5f0422d6 795 "target":"nucleo-f091rc",
screamer 0:4a2e5f0422d6 796 }
screamer 0:4a2e5f0422d6 797
screamer 0:4a2e5f0422d6 798 class NUCLEO_F103RB(Target):
screamer 0:4a2e5f0422d6 799 def __init__(self):
screamer 0:4a2e5f0422d6 800 Target.__init__(self)
screamer 0:4a2e5f0422d6 801 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 802 self.extra_labels = ['STM', 'STM32F1', 'STM32F103RB']
screamer 0:4a2e5f0422d6 803 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 804 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 805 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 806 self.detect_code = ["0700"]
screamer 0:4a2e5f0422d6 807 self.progen = {
screamer 0:4a2e5f0422d6 808 "target":"nucleo-f103rb",
screamer 0:4a2e5f0422d6 809 }
screamer 0:4a2e5f0422d6 810
screamer 0:4a2e5f0422d6 811 class NUCLEO_F302R8(Target):
screamer 0:4a2e5f0422d6 812 def __init__(self):
screamer 0:4a2e5f0422d6 813 Target.__init__(self)
screamer 0:4a2e5f0422d6 814 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 815 self.extra_labels = ['STM', 'STM32F3', 'STM32F302R8']
screamer 0:4a2e5f0422d6 816 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 817 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 818 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 819 self.detect_code = ["0705"]
screamer 0:4a2e5f0422d6 820 self.progen = {
screamer 0:4a2e5f0422d6 821 "target":"nucleo-f302r8",
screamer 0:4a2e5f0422d6 822 }
screamer 0:4a2e5f0422d6 823
screamer 0:4a2e5f0422d6 824 class NUCLEO_F303K8(Target):
screamer 0:4a2e5f0422d6 825 def __init__(self):
screamer 0:4a2e5f0422d6 826 Target.__init__(self)
screamer 0:4a2e5f0422d6 827 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 828 self.extra_labels = ['STM', 'STM32F3', 'STM32F303K8']
screamer 0:4a2e5f0422d6 829 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 830 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 831 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 832 self.detect_code = ["0775"]
screamer 0:4a2e5f0422d6 833 self.progen = {
screamer 0:4a2e5f0422d6 834 "target":"nucleo-f303k8",
screamer 0:4a2e5f0422d6 835 }
screamer 0:4a2e5f0422d6 836
screamer 0:4a2e5f0422d6 837 class NUCLEO_F303RE(Target):
screamer 0:4a2e5f0422d6 838 def __init__(self):
screamer 0:4a2e5f0422d6 839 Target.__init__(self)
screamer 0:4a2e5f0422d6 840 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 841 self.extra_labels = ['STM', 'STM32F3', 'STM32F303RE']
screamer 0:4a2e5f0422d6 842 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 843 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 844 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 845 self.detect_code = ["0745"]
screamer 0:4a2e5f0422d6 846 self.progen = {
screamer 0:4a2e5f0422d6 847 "target":"nucleo-f303re",
screamer 0:4a2e5f0422d6 848 }
screamer 0:4a2e5f0422d6 849
screamer 0:4a2e5f0422d6 850 class NUCLEO_F334R8(Target):
screamer 0:4a2e5f0422d6 851 def __init__(self):
screamer 0:4a2e5f0422d6 852 Target.__init__(self)
screamer 0:4a2e5f0422d6 853 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 854 self.extra_labels = ['STM', 'STM32F3', 'STM32F334R8']
screamer 0:4a2e5f0422d6 855 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 856 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 857 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 858 self.detect_code = ["0735"]
screamer 0:4a2e5f0422d6 859 self.progen = {
screamer 0:4a2e5f0422d6 860 "target":"nucleo-f334r8",
screamer 0:4a2e5f0422d6 861 }
screamer 0:4a2e5f0422d6 862
screamer 0:4a2e5f0422d6 863 class NUCLEO_F401RE(Target):
screamer 0:4a2e5f0422d6 864 def __init__(self):
screamer 0:4a2e5f0422d6 865 Target.__init__(self)
screamer 0:4a2e5f0422d6 866 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 867 self.extra_labels = ['STM', 'STM32F4', 'STM32F401RE']
screamer 0:4a2e5f0422d6 868 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 869 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 870 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 871 self.detect_code = ["0720"]
screamer 0:4a2e5f0422d6 872 self.progen = {
screamer 0:4a2e5f0422d6 873 "target":"nucleo-f401re",
screamer 0:4a2e5f0422d6 874 }
screamer 0:4a2e5f0422d6 875
screamer 0:4a2e5f0422d6 876 class NUCLEO_F410RB(Target):
screamer 0:4a2e5f0422d6 877 def __init__(self):
screamer 0:4a2e5f0422d6 878 Target.__init__(self)
screamer 0:4a2e5f0422d6 879 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 880 self.extra_labels = ['STM', 'STM32F4', 'STM32F410RB']
screamer 0:4a2e5f0422d6 881 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 882 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 883 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 884 self.detect_code = ["0740"]
screamer 0:4a2e5f0422d6 885 self.progen = {
screamer 0:4a2e5f0422d6 886 "target":"nucleo-f410rb",
screamer 0:4a2e5f0422d6 887 }
screamer 0:4a2e5f0422d6 888
screamer 0:4a2e5f0422d6 889 class NUCLEO_F411RE(Target):
screamer 0:4a2e5f0422d6 890 def __init__(self):
screamer 0:4a2e5f0422d6 891 Target.__init__(self)
screamer 0:4a2e5f0422d6 892 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 893 self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
screamer 0:4a2e5f0422d6 894 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 895 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 896 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 897 self.detect_code = ["0740"]
screamer 0:4a2e5f0422d6 898 self.progen = {
screamer 0:4a2e5f0422d6 899 "target":"nucleo-f411re",
screamer 0:4a2e5f0422d6 900 }
screamer 0:4a2e5f0422d6 901
screamer 0:4a2e5f0422d6 902 class ELMO_F411RE(Target):
screamer 0:4a2e5f0422d6 903 def __init__(self):
screamer 0:4a2e5f0422d6 904 Target.__init__(self)
screamer 0:4a2e5f0422d6 905 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 906 self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
screamer 0:4a2e5f0422d6 907 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 908 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 909 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 910 self.detect_code = ["----"]
screamer 0:4a2e5f0422d6 911
screamer 0:4a2e5f0422d6 912 class NUCLEO_F446RE(Target):
screamer 0:4a2e5f0422d6 913 def __init__(self):
screamer 0:4a2e5f0422d6 914 Target.__init__(self)
screamer 0:4a2e5f0422d6 915 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 916 self.extra_labels = ['STM', 'STM32F4', 'STM32F446RE']
screamer 0:4a2e5f0422d6 917 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 918 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 919 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 920 self.detect_code = ["0777"]
screamer 0:4a2e5f0422d6 921 self.progen = {
screamer 0:4a2e5f0422d6 922 "target":"nucleo-f446re",
screamer 0:4a2e5f0422d6 923 }
screamer 0:4a2e5f0422d6 924
screamer 0:4a2e5f0422d6 925 class B96B_F446VE(Target):
screamer 0:4a2e5f0422d6 926 def __init__(self):
screamer 0:4a2e5f0422d6 927 Target.__init__(self)
screamer 0:4a2e5f0422d6 928 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 929 self.extra_labels = ['STM', 'STM32F4', 'STM32F446VE']
screamer 0:4a2e5f0422d6 930 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 931 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 932 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 933 self.detect_code = ["0840"]
screamer 0:4a2e5f0422d6 934
screamer 0:4a2e5f0422d6 935 class NUCLEO_F746ZG(Target):
screamer 0:4a2e5f0422d6 936 def __init__(self):
screamer 0:4a2e5f0422d6 937 Target.__init__(self)
screamer 0:4a2e5f0422d6 938 self.core = "Cortex-M7F"
screamer 0:4a2e5f0422d6 939 self.extra_labels = ['STM', 'STM32F7', 'STM32F746', 'STM32F746ZG']
screamer 0:4a2e5f0422d6 940 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 941 self.detect_code = ["0816"]
screamer 0:4a2e5f0422d6 942 self.progen = {
screamer 0:4a2e5f0422d6 943 "target":"nucleo-f746zg",
screamer 0:4a2e5f0422d6 944 "iar": {
screamer 0:4a2e5f0422d6 945 "template": [os.path.join(os.path.dirname(__file__), 'export', 'iar_nucleo_f746zg.ewp.tmpl')],
screamer 0:4a2e5f0422d6 946 }
screamer 0:4a2e5f0422d6 947 }
screamer 0:4a2e5f0422d6 948
screamer 0:4a2e5f0422d6 949 class NUCLEO_L053R8(Target):
screamer 0:4a2e5f0422d6 950 def __init__(self):
screamer 0:4a2e5f0422d6 951 Target.__init__(self)
screamer 0:4a2e5f0422d6 952 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 953 self.extra_labels = ['STM', 'STM32L0', 'STM32L053R8']
screamer 0:4a2e5f0422d6 954 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 955 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 956 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 957 self.detect_code = ["0715"]
screamer 0:4a2e5f0422d6 958 self.progen = {
screamer 0:4a2e5f0422d6 959 "target":"nucleo-l053r8",
screamer 0:4a2e5f0422d6 960 }
screamer 0:4a2e5f0422d6 961
screamer 0:4a2e5f0422d6 962 class NUCLEO_L073RZ(Target):
screamer 0:4a2e5f0422d6 963 def __init__(self):
screamer 0:4a2e5f0422d6 964 Target.__init__(self)
screamer 0:4a2e5f0422d6 965 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 966 self.extra_labels = ['STM', 'STM32L0', 'STM32L073RZ']
screamer 0:4a2e5f0422d6 967 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 968 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 969 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 970 self.detect_code = ["0760"]
screamer 0:4a2e5f0422d6 971 self.progen = {
screamer 0:4a2e5f0422d6 972 "target":"nucleo-l073rz",
screamer 0:4a2e5f0422d6 973 }
screamer 0:4a2e5f0422d6 974
screamer 0:4a2e5f0422d6 975 class NUCLEO_L152RE(Target):
screamer 0:4a2e5f0422d6 976 def __init__(self):
screamer 0:4a2e5f0422d6 977 Target.__init__(self)
screamer 0:4a2e5f0422d6 978 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 979 self.extra_labels = ['STM', 'STM32L1', 'STM32L152RE']
screamer 0:4a2e5f0422d6 980 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 981 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 982 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 983 self.detect_code = ["0710"]
screamer 0:4a2e5f0422d6 984 self.progen = {
screamer 0:4a2e5f0422d6 985 "target":"nucleo-l152re",
screamer 0:4a2e5f0422d6 986 }
screamer 0:4a2e5f0422d6 987
screamer 0:4a2e5f0422d6 988 class NUCLEO_L476RG(Target):
screamer 0:4a2e5f0422d6 989 def __init__(self):
screamer 0:4a2e5f0422d6 990 Target.__init__(self)
screamer 0:4a2e5f0422d6 991 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 992 self.extra_labels = ['STM', 'STM32L4', 'STM32L476RG']
screamer 0:4a2e5f0422d6 993 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 994 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 995 self.supported_form_factors = ["ARDUINO", "MORPHO"]
screamer 0:4a2e5f0422d6 996 self.detect_code = ["0765"]
screamer 0:4a2e5f0422d6 997 self.progen = {
screamer 0:4a2e5f0422d6 998 "target":"nucleo-l476rg",
screamer 0:4a2e5f0422d6 999 }
screamer 0:4a2e5f0422d6 1000
screamer 0:4a2e5f0422d6 1001 class STM32F3XX(Target):
screamer 0:4a2e5f0422d6 1002 def __init__(self):
screamer 0:4a2e5f0422d6 1003 Target.__init__(self)
screamer 0:4a2e5f0422d6 1004 self.core = "Cortex-M4"
screamer 0:4a2e5f0422d6 1005 self.extra_labels = ['STM', 'STM32F3XX']
screamer 0:4a2e5f0422d6 1006 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1007 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1008
screamer 0:4a2e5f0422d6 1009 class STM32F407(Target):
screamer 0:4a2e5f0422d6 1010 def __init__(self):
screamer 0:4a2e5f0422d6 1011 Target.__init__(self)
screamer 0:4a2e5f0422d6 1012 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1013 self.extra_labels = ['STM', 'STM32F4', 'STM32F4XX']
screamer 0:4a2e5f0422d6 1014 self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1015
screamer 0:4a2e5f0422d6 1016 class ARCH_MAX(Target):
screamer 0:4a2e5f0422d6 1017 def __init__(self):
screamer 0:4a2e5f0422d6 1018 Target.__init__(self)
screamer 0:4a2e5f0422d6 1019 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1020 self.extra_labels = ['STM', 'STM32F4', 'STM32F407', 'STM32F407VG']
screamer 0:4a2e5f0422d6 1021 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1022 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1023 self.macros = ['LSI_VALUE=32000']
screamer 0:4a2e5f0422d6 1024 self.progen = {
screamer 0:4a2e5f0422d6 1025 "target":"lpc1768",
screamer 0:4a2e5f0422d6 1026 }
screamer 0:4a2e5f0422d6 1027 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1028 return 2
screamer 0:4a2e5f0422d6 1029
screamer 0:4a2e5f0422d6 1030 class DISCO_F051R8(Target):
screamer 0:4a2e5f0422d6 1031 def __init__(self):
screamer 0:4a2e5f0422d6 1032 Target.__init__(self)
screamer 0:4a2e5f0422d6 1033 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 1034 self.extra_labels = ['STM', 'STM32F0', 'STM32F051', 'STM32F051R8']
screamer 0:4a2e5f0422d6 1035 self.supported_toolchains = ["GCC_ARM"]
screamer 0:4a2e5f0422d6 1036 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1037
screamer 0:4a2e5f0422d6 1038 class DISCO_F100RB(Target):
screamer 0:4a2e5f0422d6 1039 def __init__(self):
screamer 0:4a2e5f0422d6 1040 Target.__init__(self)
screamer 0:4a2e5f0422d6 1041 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1042 self.extra_labels = ['STM', 'STM32F1', 'STM32F100RB']
screamer 0:4a2e5f0422d6 1043 self.supported_toolchains = ["GCC_ARM"]
screamer 0:4a2e5f0422d6 1044 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1045
screamer 0:4a2e5f0422d6 1046 class DISCO_F303VC(Target):
screamer 0:4a2e5f0422d6 1047 def __init__(self):
screamer 0:4a2e5f0422d6 1048 Target.__init__(self)
screamer 0:4a2e5f0422d6 1049 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1050 self.extra_labels = ['STM', 'STM32F3', 'STM32F303', 'STM32F303VC']
screamer 0:4a2e5f0422d6 1051 self.supported_toolchains = ["GCC_ARM"]
screamer 0:4a2e5f0422d6 1052 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1053
screamer 0:4a2e5f0422d6 1054 class DISCO_F334C8(Target):
screamer 0:4a2e5f0422d6 1055 def __init__(self):
screamer 0:4a2e5f0422d6 1056 Target.__init__(self)
screamer 0:4a2e5f0422d6 1057 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1058 self.extra_labels = ['STM', 'STM32F3', 'STM32F334C8']
screamer 0:4a2e5f0422d6 1059 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1060 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1061 self.detect_code = ["0810"]
screamer 0:4a2e5f0422d6 1062 self.progen = {
screamer 0:4a2e5f0422d6 1063 "target":"disco-f334c8",
screamer 0:4a2e5f0422d6 1064 }
screamer 0:4a2e5f0422d6 1065
screamer 0:4a2e5f0422d6 1066 class DISCO_F407VG(Target):
screamer 0:4a2e5f0422d6 1067 def __init__(self):
screamer 0:4a2e5f0422d6 1068 Target.__init__(self)
screamer 0:4a2e5f0422d6 1069 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1070 self.extra_labels = ['STM', 'STM32F4', 'STM32F407', 'STM32F407VG']
screamer 0:4a2e5f0422d6 1071 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1072 self.progen = {
screamer 0:4a2e5f0422d6 1073 "target":"disco-f407vg",
screamer 0:4a2e5f0422d6 1074 }
screamer 0:4a2e5f0422d6 1075 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1076
screamer 0:4a2e5f0422d6 1077 class DISCO_F429ZI(Target):
screamer 0:4a2e5f0422d6 1078 def __init__(self):
screamer 0:4a2e5f0422d6 1079 Target.__init__(self)
screamer 0:4a2e5f0422d6 1080 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1081 self.extra_labels = ['STM', 'STM32F4', 'STM32F429', 'STM32F429ZI']
screamer 0:4a2e5f0422d6 1082 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1083 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1084 self.progen = {
screamer 0:4a2e5f0422d6 1085 "target":"",
screamer 0:4a2e5f0422d6 1086 }
screamer 0:4a2e5f0422d6 1087
screamer 0:4a2e5f0422d6 1088 class DISCO_F469NI(Target):
screamer 0:4a2e5f0422d6 1089 def __init__(self):
screamer 0:4a2e5f0422d6 1090 Target.__init__(self)
screamer 0:4a2e5f0422d6 1091 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1092 self.extra_labels = ['STM', 'STM32F4', 'STM32F469', 'STM32F469NI']
screamer 0:4a2e5f0422d6 1093 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1094 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1095 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1096 self.detect_code = ["0788"]
screamer 0:4a2e5f0422d6 1097 self.progen = {
screamer 0:4a2e5f0422d6 1098 "target":"disco-f469ni",
screamer 0:4a2e5f0422d6 1099 }
screamer 0:4a2e5f0422d6 1100
screamer 0:4a2e5f0422d6 1101 class DISCO_L053C8(Target):
screamer 0:4a2e5f0422d6 1102 def __init__(self):
screamer 0:4a2e5f0422d6 1103 Target.__init__(self)
screamer 0:4a2e5f0422d6 1104 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 1105 self.extra_labels = ['STM', 'STM32L0', 'STM32L053C8']
screamer 0:4a2e5f0422d6 1106 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1107 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1108 self.progen = {
screamer 0:4a2e5f0422d6 1109 "target":"disco-l053c8",
screamer 0:4a2e5f0422d6 1110 }
screamer 0:4a2e5f0422d6 1111
screamer 0:4a2e5f0422d6 1112 class DISCO_F746NG(Target):
screamer 0:4a2e5f0422d6 1113 def __init__(self):
screamer 0:4a2e5f0422d6 1114 Target.__init__(self)
screamer 0:4a2e5f0422d6 1115 self.core = "Cortex-M7F"
screamer 0:4a2e5f0422d6 1116 self.extra_labels = ['STM', 'STM32F7', 'STM32F746', 'STM32F746NG']
screamer 0:4a2e5f0422d6 1117 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1118 self.detect_code = ["0815"]
screamer 0:4a2e5f0422d6 1119 self.progen = {
screamer 0:4a2e5f0422d6 1120 "target":"disco-f746ng",
screamer 0:4a2e5f0422d6 1121 }
screamer 0:4a2e5f0422d6 1122
screamer 0:4a2e5f0422d6 1123 class DISCO_L476VG(Target):
screamer 0:4a2e5f0422d6 1124 def __init__(self):
screamer 0:4a2e5f0422d6 1125 Target.__init__(self)
screamer 0:4a2e5f0422d6 1126 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1127 self.extra_labels = ['STM', 'STM32L4', 'STM32L476VG']
screamer 0:4a2e5f0422d6 1128 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1129 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1130 self.detect_code = ["0820"]
screamer 0:4a2e5f0422d6 1131 self.progen = {
screamer 0:4a2e5f0422d6 1132 "target":"disco-l476vg",
screamer 0:4a2e5f0422d6 1133 }
screamer 0:4a2e5f0422d6 1134
screamer 0:4a2e5f0422d6 1135 class MTS_MDOT_F405RG(Target):
screamer 0:4a2e5f0422d6 1136 def __init__(self):
screamer 0:4a2e5f0422d6 1137 Target.__init__(self)
screamer 0:4a2e5f0422d6 1138 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1139 self.extra_labels = ['STM', 'STM32F4', 'STM32F405RG']
screamer 0:4a2e5f0422d6 1140 self.macros = ['HSE_VALUE=26000000', 'OS_CLOCK=48000000']
screamer 0:4a2e5f0422d6 1141 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1142 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 1143 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1144 self.progen = {
screamer 0:4a2e5f0422d6 1145 "target":"mts-mdot-f405rg",
screamer 0:4a2e5f0422d6 1146 }
screamer 0:4a2e5f0422d6 1147
screamer 0:4a2e5f0422d6 1148 class MTS_MDOT_F411RE(Target):
screamer 0:4a2e5f0422d6 1149 def __init__(self):
screamer 0:4a2e5f0422d6 1150 Target.__init__(self)
screamer 0:4a2e5f0422d6 1151 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1152 self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
screamer 0:4a2e5f0422d6 1153 self.macros = ['HSE_VALUE=26000000', 'OS_CLOCK=96000000', 'USE_PLL_HSE_EXTC=0', 'VECT_TAB_OFFSET=0x00010000']
screamer 0:4a2e5f0422d6 1154 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1155 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1156 self.progen = {
screamer 0:4a2e5f0422d6 1157 "target":"mts-mdot-f411re",
screamer 0:4a2e5f0422d6 1158 }
screamer 0:4a2e5f0422d6 1159
screamer 0:4a2e5f0422d6 1160 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 1161 if toolchain_name in ['GCC_ARM', 'ARM_STD', 'ARM_MICRO']:
screamer 0:4a2e5f0422d6 1162 hook.hook_add_binary("post", self.combine_bins)
screamer 0:4a2e5f0422d6 1163
screamer 0:4a2e5f0422d6 1164 # combine application binary with bootloader
screamer 0:4a2e5f0422d6 1165 # bootloader + padding to 64kB + application + md5sum (16 bytes)
screamer 0:4a2e5f0422d6 1166 @staticmethod
screamer 0:4a2e5f0422d6 1167 def combine_bins(t_self, resources, elf, binf):
screamer 0:4a2e5f0422d6 1168 loader = os.path.join(TOOLS_BOOTLOADERS, "MTS_MDOT_F411RE", "bootloader.bin")
screamer 0:4a2e5f0422d6 1169 target = binf + ".tmp"
screamer 0:4a2e5f0422d6 1170 if not os.path.exists(loader):
screamer 0:4a2e5f0422d6 1171 print "Can't find bootloader binary: " + loader
screamer 0:4a2e5f0422d6 1172 return
screamer 0:4a2e5f0422d6 1173 outbin = open(target, 'w+b')
screamer 0:4a2e5f0422d6 1174 part = open(loader, 'rb')
screamer 0:4a2e5f0422d6 1175 data = part.read()
screamer 0:4a2e5f0422d6 1176 outbin.write(data)
screamer 0:4a2e5f0422d6 1177 outbin.write('\xFF' * (64*1024 - len(data)))
screamer 0:4a2e5f0422d6 1178 part.close()
screamer 0:4a2e5f0422d6 1179 part = open(binf, 'rb')
screamer 0:4a2e5f0422d6 1180 data = part.read()
screamer 0:4a2e5f0422d6 1181 outbin.write(data)
screamer 0:4a2e5f0422d6 1182 part.close()
screamer 0:4a2e5f0422d6 1183 outbin.seek(0, 0)
screamer 0:4a2e5f0422d6 1184 data = outbin.read()
screamer 0:4a2e5f0422d6 1185 outbin.seek(0, 1)
screamer 0:4a2e5f0422d6 1186 crc = struct.pack('<I', binascii.crc32(data) & 0xFFFFFFFF)
screamer 0:4a2e5f0422d6 1187 outbin.write(crc)
screamer 0:4a2e5f0422d6 1188 outbin.close()
screamer 0:4a2e5f0422d6 1189 os.remove(binf)
screamer 0:4a2e5f0422d6 1190 os.rename(target, binf)
screamer 0:4a2e5f0422d6 1191
screamer 0:4a2e5f0422d6 1192 class MTS_DRAGONFLY_F411RE(Target):
screamer 0:4a2e5f0422d6 1193 def __init__(self):
screamer 0:4a2e5f0422d6 1194 Target.__init__(self)
screamer 0:4a2e5f0422d6 1195 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1196 self.extra_labels = ['STM', 'STM32F4', 'STM32F411RE']
screamer 0:4a2e5f0422d6 1197 self.macros = ['HSE_VALUE=26000000', 'VECT_TAB_OFFSET=0x08010000']
screamer 0:4a2e5f0422d6 1198 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1199 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1200 self.progen = {
screamer 0:4a2e5f0422d6 1201 "target":"mts-dragonfly-f411re",
screamer 0:4a2e5f0422d6 1202 }
screamer 0:4a2e5f0422d6 1203
screamer 0:4a2e5f0422d6 1204 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 1205 if toolchain_name in ['GCC_ARM', 'ARM_STD', 'ARM_MICRO']:
screamer 0:4a2e5f0422d6 1206 hook.hook_add_binary("post", self.combine_bins)
screamer 0:4a2e5f0422d6 1207
screamer 0:4a2e5f0422d6 1208 # combine application binary with bootloader
screamer 0:4a2e5f0422d6 1209 # bootloader + padding to 64kB + application + md5sum (16 bytes)
screamer 0:4a2e5f0422d6 1210 @staticmethod
screamer 0:4a2e5f0422d6 1211 def combine_bins(t_self, resources, elf, binf):
screamer 0:4a2e5f0422d6 1212 loader = os.path.join(TOOLS_BOOTLOADERS, "MTS_DRAGONFLY_F411RE", "bootloader.bin")
screamer 0:4a2e5f0422d6 1213 target = binf + ".tmp"
screamer 0:4a2e5f0422d6 1214 if not os.path.exists(loader):
screamer 0:4a2e5f0422d6 1215 print "Can't find bootloader binary: " + loader
screamer 0:4a2e5f0422d6 1216 return
screamer 0:4a2e5f0422d6 1217 outbin = open(target, 'w+b')
screamer 0:4a2e5f0422d6 1218 part = open(loader, 'rb')
screamer 0:4a2e5f0422d6 1219 data = part.read()
screamer 0:4a2e5f0422d6 1220 outbin.write(data)
screamer 0:4a2e5f0422d6 1221 outbin.write('\xFF' * (64*1024 - len(data)))
screamer 0:4a2e5f0422d6 1222 part.close()
screamer 0:4a2e5f0422d6 1223 part = open(binf, 'rb')
screamer 0:4a2e5f0422d6 1224 data = part.read()
screamer 0:4a2e5f0422d6 1225 outbin.write(data)
screamer 0:4a2e5f0422d6 1226 part.close()
screamer 0:4a2e5f0422d6 1227 outbin.seek(0, 0)
screamer 0:4a2e5f0422d6 1228 data = outbin.read()
screamer 0:4a2e5f0422d6 1229 outbin.seek(0, 1)
screamer 0:4a2e5f0422d6 1230 crc = struct.pack('<I', binascii.crc32(data) & 0xFFFFFFFF)
screamer 0:4a2e5f0422d6 1231 outbin.write(crc)
screamer 0:4a2e5f0422d6 1232 outbin.close()
screamer 0:4a2e5f0422d6 1233 os.remove(binf)
screamer 0:4a2e5f0422d6 1234 os.rename(target, binf)
screamer 0:4a2e5f0422d6 1235
screamer 0:4a2e5f0422d6 1236 class MOTE_L152RC(Target):
screamer 0:4a2e5f0422d6 1237 def __init__(self):
screamer 0:4a2e5f0422d6 1238 Target.__init__(self)
screamer 0:4a2e5f0422d6 1239 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1240 self.extra_labels = ['STM', 'STM32L1', 'STM32L152RC']
screamer 0:4a2e5f0422d6 1241 self.supported_toolchains = ["ARM", "uARM", "IAR", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1242 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1243 self.detect_code = ["4100"]
screamer 0:4a2e5f0422d6 1244 self.progen = {
screamer 0:4a2e5f0422d6 1245 "target":"stm32l151rc",
screamer 0:4a2e5f0422d6 1246 }
screamer 0:4a2e5f0422d6 1247 class DISCO_F401VC(Target):
screamer 0:4a2e5f0422d6 1248 def __init__(self):
screamer 0:4a2e5f0422d6 1249 Target.__init__(self)
screamer 0:4a2e5f0422d6 1250 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1251 self.extra_labels = ['STM', 'STM32F4', 'STM32F401', 'STM32F401VC']
screamer 0:4a2e5f0422d6 1252 self.supported_toolchains = ["GCC_ARM"]
screamer 0:4a2e5f0422d6 1253 self.default_toolchain = "GCC_ARM"
screamer 0:4a2e5f0422d6 1254
screamer 0:4a2e5f0422d6 1255 class UBLOX_C029(Target):
screamer 0:4a2e5f0422d6 1256 def __init__(self):
screamer 0:4a2e5f0422d6 1257 Target.__init__(self)
screamer 0:4a2e5f0422d6 1258 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1259 self.extra_labels = ['STM', 'STM32F4', 'STM32F439', 'STM32F439ZI']
screamer 0:4a2e5f0422d6 1260 self.macros = ['HSE_VALUE=24000000', 'HSE_STARTUP_TIMEOUT=5000']
screamer 0:4a2e5f0422d6 1261 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1262 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1263 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1264
screamer 0:4a2e5f0422d6 1265 class NZ32_SC151(Target):
screamer 0:4a2e5f0422d6 1266 def __init__(self):
screamer 0:4a2e5f0422d6 1267 Target.__init__(self)
screamer 0:4a2e5f0422d6 1268 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1269 self.extra_labels = ['STM', 'STM32L1', 'STM32L151RC']
screamer 0:4a2e5f0422d6 1270 self.supported_toolchains = ["ARM", "uARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1271 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1272 self.progen = {
screamer 0:4a2e5f0422d6 1273 "target":"stm32l151rc",
screamer 0:4a2e5f0422d6 1274 }
screamer 0:4a2e5f0422d6 1275 # After flashing device, how long to delay until we assume program is running
screamer 0:4a2e5f0422d6 1276 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1277 return 1.5
screamer 0:4a2e5f0422d6 1278
screamer 0:4a2e5f0422d6 1279
screamer 0:4a2e5f0422d6 1280 ### Nordic ###
screamer 0:4a2e5f0422d6 1281
screamer 0:4a2e5f0422d6 1282 class MCU_NRF51(Target):
screamer 0:4a2e5f0422d6 1283 # the following is a list of possible Nordic softdevices in decreasing order
screamer 0:4a2e5f0422d6 1284 # of preference.
screamer 0:4a2e5f0422d6 1285 EXPECTED_SOFTDEVICES_WITH_OFFSETS = [
screamer 0:4a2e5f0422d6 1286 {
screamer 0:4a2e5f0422d6 1287 'name' : 's130_nrf51_1.0.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1288 'boot' : 's130_nrf51_1.0.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1289 'offset' : 0x1C000
screamer 0:4a2e5f0422d6 1290 },
screamer 0:4a2e5f0422d6 1291 {
screamer 0:4a2e5f0422d6 1292 'name' : 's110_nrf51822_8.0.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1293 'boot' : 's110_nrf51822_8.0.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1294 'offset' : 0x18000
screamer 0:4a2e5f0422d6 1295 },
screamer 0:4a2e5f0422d6 1296 {
screamer 0:4a2e5f0422d6 1297 'name' : 's110_nrf51822_7.1.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1298 'boot' : 's110_nrf51822_7.1.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1299 'offset' : 0x16000
screamer 0:4a2e5f0422d6 1300 },
screamer 0:4a2e5f0422d6 1301 {
screamer 0:4a2e5f0422d6 1302 'name' : 's110_nrf51822_7.0.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1303 'boot' : 's110_nrf51822_7.0.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1304 'offset' : 0x16000
screamer 0:4a2e5f0422d6 1305 },
screamer 0:4a2e5f0422d6 1306 {
screamer 0:4a2e5f0422d6 1307 'name' : 's110_nrf51822_6.0.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1308 'boot' : 's110_nrf51822_6.0.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1309 'offset' : 0x14000
screamer 0:4a2e5f0422d6 1310 }
screamer 0:4a2e5f0422d6 1311 ]
screamer 0:4a2e5f0422d6 1312 OVERRIDE_BOOTLOADER_FILENAME = "nrf51822_bootloader.hex"
screamer 0:4a2e5f0422d6 1313 OUTPUT_EXT = 'hex'
screamer 0:4a2e5f0422d6 1314 MERGE_SOFT_DEVICE = True
screamer 0:4a2e5f0422d6 1315 MERGE_BOOTLOADER = False
screamer 0:4a2e5f0422d6 1316
screamer 0:4a2e5f0422d6 1317 def __init__(self):
screamer 0:4a2e5f0422d6 1318 Target.__init__(self)
screamer 0:4a2e5f0422d6 1319 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 1320 self.extra_labels = ["NORDIC", "MCU_NRF51", "MCU_NRF51822"]
screamer 0:4a2e5f0422d6 1321 self.macros = ['NRF51', 'TARGET_NRF51822']
screamer 0:4a2e5f0422d6 1322 self.supported_toolchains = ["ARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1323 self.is_disk_virtual = True
screamer 0:4a2e5f0422d6 1324 self.detect_code = ["1070"]
screamer 0:4a2e5f0422d6 1325
screamer 0:4a2e5f0422d6 1326 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1327 return 6
screamer 0:4a2e5f0422d6 1328
screamer 0:4a2e5f0422d6 1329 def init_hooks(self, hook, toolchain_name):
screamer 0:4a2e5f0422d6 1330 if toolchain_name in ['ARM_STD', 'GCC_ARM']:
screamer 0:4a2e5f0422d6 1331 hook.hook_add_binary("post", self.binary_hook)
screamer 0:4a2e5f0422d6 1332
screamer 0:4a2e5f0422d6 1333 @staticmethod
screamer 0:4a2e5f0422d6 1334 def binary_hook(t_self, resources, elf, binf):
screamer 0:4a2e5f0422d6 1335
screamer 0:4a2e5f0422d6 1336 # Scan to find the actual paths of soft device
screamer 0:4a2e5f0422d6 1337 sdf = None
screamer 0:4a2e5f0422d6 1338 for softdeviceAndOffsetEntry in t_self.target.EXPECTED_SOFTDEVICES_WITH_OFFSETS:
screamer 0:4a2e5f0422d6 1339 for hexf in resources.hex_files:
screamer 0:4a2e5f0422d6 1340 if hexf.find(softdeviceAndOffsetEntry['name']) != -1:
screamer 0:4a2e5f0422d6 1341 t_self.debug("SoftDevice file found %s." % softdeviceAndOffsetEntry['name'])
screamer 0:4a2e5f0422d6 1342 sdf = hexf
screamer 0:4a2e5f0422d6 1343
screamer 0:4a2e5f0422d6 1344 if sdf is not None: break
screamer 0:4a2e5f0422d6 1345 if sdf is not None: break
screamer 0:4a2e5f0422d6 1346
screamer 0:4a2e5f0422d6 1347 if sdf is None:
screamer 0:4a2e5f0422d6 1348 t_self.debug("Hex file not found. Aborting.")
screamer 0:4a2e5f0422d6 1349 return
screamer 0:4a2e5f0422d6 1350
screamer 0:4a2e5f0422d6 1351 # Look for bootloader file that matches this soft device or bootloader override image
screamer 0:4a2e5f0422d6 1352 blf = None
screamer 0:4a2e5f0422d6 1353 if t_self.target.MERGE_BOOTLOADER is True:
screamer 0:4a2e5f0422d6 1354 for hexf in resources.hex_files:
screamer 0:4a2e5f0422d6 1355 if hexf.find(t_self.target.OVERRIDE_BOOTLOADER_FILENAME) != -1:
screamer 0:4a2e5f0422d6 1356 t_self.debug("Bootloader file found %s." % t_self.target.OVERRIDE_BOOTLOADER_FILENAME)
screamer 0:4a2e5f0422d6 1357 blf = hexf
screamer 0:4a2e5f0422d6 1358 break
screamer 0:4a2e5f0422d6 1359 elif hexf.find(softdeviceAndOffsetEntry['boot']) != -1:
screamer 0:4a2e5f0422d6 1360 t_self.debug("Bootloader file found %s." % softdeviceAndOffsetEntry['boot'])
screamer 0:4a2e5f0422d6 1361 blf = hexf
screamer 0:4a2e5f0422d6 1362 break
screamer 0:4a2e5f0422d6 1363
screamer 0:4a2e5f0422d6 1364 # Merge user code with softdevice
screamer 0:4a2e5f0422d6 1365 from intelhex import IntelHex
screamer 0:4a2e5f0422d6 1366 binh = IntelHex()
screamer 0:4a2e5f0422d6 1367 binh.loadbin(binf, offset=softdeviceAndOffsetEntry['offset'])
screamer 0:4a2e5f0422d6 1368
screamer 0:4a2e5f0422d6 1369 if t_self.target.MERGE_SOFT_DEVICE is True:
screamer 0:4a2e5f0422d6 1370 t_self.debug("Merge SoftDevice file %s" % softdeviceAndOffsetEntry['name'])
screamer 0:4a2e5f0422d6 1371 sdh = IntelHex(sdf)
screamer 0:4a2e5f0422d6 1372 binh.merge(sdh)
screamer 0:4a2e5f0422d6 1373
screamer 0:4a2e5f0422d6 1374 if t_self.target.MERGE_BOOTLOADER is True and blf is not None:
screamer 0:4a2e5f0422d6 1375 t_self.debug("Merge BootLoader file %s" % blf)
screamer 0:4a2e5f0422d6 1376 blh = IntelHex(blf)
screamer 0:4a2e5f0422d6 1377 binh.merge(blh)
screamer 0:4a2e5f0422d6 1378
screamer 0:4a2e5f0422d6 1379 with open(binf.replace(".bin", ".hex"), "w") as f:
screamer 0:4a2e5f0422d6 1380 binh.tofile(f, format='hex')
screamer 0:4a2e5f0422d6 1381
screamer 0:4a2e5f0422d6 1382
screamer 0:4a2e5f0422d6 1383 # 16KB Nordic targets are tight on SRAM using S130 (default) so we
screamer 0:4a2e5f0422d6 1384 # introduce two possible options:
screamer 0:4a2e5f0422d6 1385 # 1) Use S130 (default) - for this derive from MCU_NRF51_16K
screamer 0:4a2e5f0422d6 1386 # 2) Use S110 - for this derive from MCU_NRF51_16K_S110
screamer 0:4a2e5f0422d6 1387 # Note that the 'default' option will track the default choice
screamer 0:4a2e5f0422d6 1388 # for other Nordic targets, and so can take advantage of other
screamer 0:4a2e5f0422d6 1389 # future SoftDevice improvements
screamer 0:4a2e5f0422d6 1390
screamer 0:4a2e5f0422d6 1391 # The *_BASE targets should *not* be inherited from, as they do not
screamer 0:4a2e5f0422d6 1392 # specify enough for building a target
screamer 0:4a2e5f0422d6 1393
screamer 0:4a2e5f0422d6 1394 # 16KB MCU version, e.g. Nordic nRF51822, Seeed Arch BLE, etc.
screamer 0:4a2e5f0422d6 1395 class MCU_NRF51_16K_BASE(MCU_NRF51):
screamer 0:4a2e5f0422d6 1396 def __init__(self):
screamer 0:4a2e5f0422d6 1397 MCU_NRF51.__init__(self)
screamer 0:4a2e5f0422d6 1398 self.extra_labels += ['MCU_NORDIC_16K', 'MCU_NRF51_16K']
screamer 0:4a2e5f0422d6 1399 self.macros += ['TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K']
screamer 0:4a2e5f0422d6 1400
screamer 0:4a2e5f0422d6 1401 # derivative class used to create softdevice+bootloader enabled images
screamer 0:4a2e5f0422d6 1402 class MCU_NRF51_16K_BOOT_BASE(MCU_NRF51_16K_BASE):
screamer 0:4a2e5f0422d6 1403 def __init__(self):
screamer 0:4a2e5f0422d6 1404 MCU_NRF51_16K_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1405 self.extra_labels += ['MCU_NRF51_16K_BOOT']
screamer 0:4a2e5f0422d6 1406 self.macros += ['TARGET_MCU_NRF51_16K_BOOT', 'TARGET_OTA_ENABLED']
screamer 0:4a2e5f0422d6 1407 self.MERGE_SOFT_DEVICE = True
screamer 0:4a2e5f0422d6 1408 self.MERGE_BOOTLOADER = True
screamer 0:4a2e5f0422d6 1409
screamer 0:4a2e5f0422d6 1410 # derivative class used to create program only images for use with FOTA
screamer 0:4a2e5f0422d6 1411 class MCU_NRF51_16K_OTA_BASE(MCU_NRF51_16K_BASE):
screamer 0:4a2e5f0422d6 1412 def __init__(self):
screamer 0:4a2e5f0422d6 1413 MCU_NRF51_16K_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1414 self.extra_labels += ['MCU_NRF51_16K_OTA']
screamer 0:4a2e5f0422d6 1415 self.macros += ['TARGET_MCU_NRF51_16K_OTA', 'TARGET_OTA_ENABLED']
screamer 0:4a2e5f0422d6 1416 self.MERGE_SOFT_DEVICE = False
screamer 0:4a2e5f0422d6 1417
screamer 0:4a2e5f0422d6 1418 class MCU_NRF51_16K(MCU_NRF51_16K_BASE):
screamer 0:4a2e5f0422d6 1419 def __init__(self):
screamer 0:4a2e5f0422d6 1420 MCU_NRF51_16K_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1421 self.extra_labels += ['MCU_NRF51_16K_S130']
screamer 0:4a2e5f0422d6 1422 self.macros += ['TARGET_MCU_NRF51_16K_S130']
screamer 0:4a2e5f0422d6 1423
screamer 0:4a2e5f0422d6 1424 class MCU_NRF51_S110:
screamer 0:4a2e5f0422d6 1425 """ Interface for overwriting the default SoftDevices """
screamer 0:4a2e5f0422d6 1426 def __init__(self):
screamer 0:4a2e5f0422d6 1427 self.EXPECTED_SOFTDEVICES_WITH_OFFSETS = [
screamer 0:4a2e5f0422d6 1428 {
screamer 0:4a2e5f0422d6 1429 'name' : 's110_nrf51822_8.0.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1430 'boot' : 's110_nrf51822_8.0.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1431 'offset' : 0x18000
screamer 0:4a2e5f0422d6 1432 },
screamer 0:4a2e5f0422d6 1433 {
screamer 0:4a2e5f0422d6 1434 'name' : 's110_nrf51822_7.1.0_softdevice.hex',
screamer 0:4a2e5f0422d6 1435 'boot' : 's110_nrf51822_7.1.0_bootloader.hex',
screamer 0:4a2e5f0422d6 1436 'offset' : 0x16000
screamer 0:4a2e5f0422d6 1437 }
screamer 0:4a2e5f0422d6 1438 ]
screamer 0:4a2e5f0422d6 1439 self.extra_labels += ['MCU_NRF51_16K_S110']
screamer 0:4a2e5f0422d6 1440 self.macros += ['TARGET_MCU_NRF51_16K_S110']
screamer 0:4a2e5f0422d6 1441
screamer 0:4a2e5f0422d6 1442 class MCU_NRF51_16K_S110(MCU_NRF51_16K_BASE, MCU_NRF51_S110):
screamer 0:4a2e5f0422d6 1443 def __init__(self):
screamer 0:4a2e5f0422d6 1444 MCU_NRF51_16K_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1445 MCU_NRF51_S110.__init__(self)
screamer 0:4a2e5f0422d6 1446
screamer 0:4a2e5f0422d6 1447 class MCU_NRF51_16K_BOOT(MCU_NRF51_16K_BOOT_BASE):
screamer 0:4a2e5f0422d6 1448 def __init__(self):
screamer 0:4a2e5f0422d6 1449 MCU_NRF51_16K_BOOT_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1450 self.extra_labels += ['MCU_NRF51_16K_S130']
screamer 0:4a2e5f0422d6 1451 self.macros += ['TARGET_MCU_NRF51_16K_S130']
screamer 0:4a2e5f0422d6 1452
screamer 0:4a2e5f0422d6 1453 class MCU_NRF51_16K_BOOT_S110(MCU_NRF51_16K_BOOT_BASE, MCU_NRF51_S110):
screamer 0:4a2e5f0422d6 1454 def __init__(self):
screamer 0:4a2e5f0422d6 1455 MCU_NRF51_16K_BOOT_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1456 MCU_NRF51_S110.__init__(self)
screamer 0:4a2e5f0422d6 1457
screamer 0:4a2e5f0422d6 1458 class MCU_NRF51_16K_OTA(MCU_NRF51_16K_OTA_BASE):
screamer 0:4a2e5f0422d6 1459 def __init__(self):
screamer 0:4a2e5f0422d6 1460 MCU_NRF51_16K_OTA_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1461 self.extra_labels += ['MCU_NRF51_16K_S130']
screamer 0:4a2e5f0422d6 1462 self.macros += ['TARGET_MCU_NRF51_16K_S130']
screamer 0:4a2e5f0422d6 1463
screamer 0:4a2e5f0422d6 1464 class MCU_NRF51_16K_OTA_S110(MCU_NRF51_16K_OTA_BASE, MCU_NRF51_S110):
screamer 0:4a2e5f0422d6 1465 def __init__(self):
screamer 0:4a2e5f0422d6 1466 MCU_NRF51_16K_OTA_BASE.__init__(self)
screamer 0:4a2e5f0422d6 1467 MCU_NRF51_S110.__init__(self)
screamer 0:4a2e5f0422d6 1468
screamer 0:4a2e5f0422d6 1469
screamer 0:4a2e5f0422d6 1470 # 32KB MCU version, e.g. Nordic nRF51-DK, nRF51-Dongle, etc.
screamer 0:4a2e5f0422d6 1471 class MCU_NRF51_32K(MCU_NRF51):
screamer 0:4a2e5f0422d6 1472 def __init__(self):
screamer 0:4a2e5f0422d6 1473 MCU_NRF51.__init__(self)
screamer 0:4a2e5f0422d6 1474 self.extra_labels += ['MCU_NORDIC_32K', 'MCU_NRF51_32K']
screamer 0:4a2e5f0422d6 1475 self.macros += ['TARGET_MCU_NORDIC_32K', 'TARGET_MCU_NRF51_32K']
screamer 0:4a2e5f0422d6 1476
screamer 0:4a2e5f0422d6 1477 class MCU_NRF51_32K_BOOT(MCU_NRF51_32K):
screamer 0:4a2e5f0422d6 1478 def __init__(self):
screamer 0:4a2e5f0422d6 1479 MCU_NRF51_32K.__init__(self)
screamer 0:4a2e5f0422d6 1480 self.extra_labels += ['MCU_NRF51_32K_BOOT']
screamer 0:4a2e5f0422d6 1481 self.macros += ['TARGET_MCU_NRF51_32K_BOOT', 'TARGET_OTA_ENABLED']
screamer 0:4a2e5f0422d6 1482 self.MERGE_SOFT_DEVICE = True
screamer 0:4a2e5f0422d6 1483 self.MERGE_BOOTLOADER = True
screamer 0:4a2e5f0422d6 1484
screamer 0:4a2e5f0422d6 1485 class MCU_NRF51_32K_OTA(MCU_NRF51_32K):
screamer 0:4a2e5f0422d6 1486 def __init__(self):
screamer 0:4a2e5f0422d6 1487 MCU_NRF51_32K.__init__(self)
screamer 0:4a2e5f0422d6 1488 self.extra_labels += ['MCU_NRF51_32K_OTA']
screamer 0:4a2e5f0422d6 1489 self.macros += ['TARGET_MCU_NRF51_32K_OTA', 'TARGET_OTA_ENABLED']
screamer 0:4a2e5f0422d6 1490 self.MERGE_SOFT_DEVICE = False
screamer 0:4a2e5f0422d6 1491
screamer 0:4a2e5f0422d6 1492 #
screamer 0:4a2e5f0422d6 1493 # nRF51 based development kits
screamer 0:4a2e5f0422d6 1494 #
screamer 0:4a2e5f0422d6 1495
screamer 0:4a2e5f0422d6 1496 # This one is special for legacy reasons
screamer 0:4a2e5f0422d6 1497 class NRF51822(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1498 def __init__(self):
screamer 0:4a2e5f0422d6 1499 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1500 self.extra_labels += ['NRF51822', 'NRF51822_MKIT']
screamer 0:4a2e5f0422d6 1501 self.macros += ['TARGET_NRF51822_MKIT']
screamer 0:4a2e5f0422d6 1502 self.progen = {
screamer 0:4a2e5f0422d6 1503 "target":"mkit",
screamer 0:4a2e5f0422d6 1504 }
screamer 0:4a2e5f0422d6 1505 class NRF51822_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1506 def __init__(self):
screamer 0:4a2e5f0422d6 1507 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1508 self.extra_labels += ['NRF51822', 'NRF51822_MKIT']
screamer 0:4a2e5f0422d6 1509 self.macros += ['TARGET_NRF51822_MKIT']
screamer 0:4a2e5f0422d6 1510
screamer 0:4a2e5f0422d6 1511 class NRF51822_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1512 def __init__(self):
screamer 0:4a2e5f0422d6 1513 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1514 self.extra_labels += ['NRF51822', 'NRF51822_MKIT']
screamer 0:4a2e5f0422d6 1515 self.macros += ['TARGET_NRF51822_MKIT']
screamer 0:4a2e5f0422d6 1516
screamer 0:4a2e5f0422d6 1517 class ARCH_BLE(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1518 def __init__(self):
screamer 0:4a2e5f0422d6 1519 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1520 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1521 self.progen = {
screamer 0:4a2e5f0422d6 1522 "target":"arch-ble",
screamer 0:4a2e5f0422d6 1523 }
screamer 0:4a2e5f0422d6 1524
screamer 0:4a2e5f0422d6 1525 class ARCH_BLE_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1526 def __init__(self):
screamer 0:4a2e5f0422d6 1527 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1528 self.extra_labels += ['ARCH_BLE']
screamer 0:4a2e5f0422d6 1529 self.macros += ['TARGET_ARCH_BLE']
screamer 0:4a2e5f0422d6 1530 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1531
screamer 0:4a2e5f0422d6 1532 class ARCH_BLE_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1533 def __init__(self):
screamer 0:4a2e5f0422d6 1534 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1535 self.extra_labels += ['ARCH_BLE']
screamer 0:4a2e5f0422d6 1536 self.macros += ['TARGET_ARCH_BLE']
screamer 0:4a2e5f0422d6 1537 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1538
screamer 0:4a2e5f0422d6 1539 class ARCH_LINK(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1540 def __init__(self):
screamer 0:4a2e5f0422d6 1541 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1542 self.extra_labels += ['ARCH_BLE']
screamer 0:4a2e5f0422d6 1543 self.macros += ['TARGET_ARCH_BLE']
screamer 0:4a2e5f0422d6 1544 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1545
screamer 0:4a2e5f0422d6 1546 class ARCH_LINK_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1547 def __init__(self):
screamer 0:4a2e5f0422d6 1548 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1549 self.extra_labels += ['ARCH_BLE', 'ARCH_LINK']
screamer 0:4a2e5f0422d6 1550 self.macros += ['TARGET_ARCH_BLE', 'TARGET_ARCH_LINK']
screamer 0:4a2e5f0422d6 1551 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1552
screamer 0:4a2e5f0422d6 1553 class ARCH_LINK_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1554 def __init__(self):
screamer 0:4a2e5f0422d6 1555 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1556 self.extra_labels += ['ARCH_BLE', 'ARCH_LINK']
screamer 0:4a2e5f0422d6 1557 self.macros += ['TARGET_ARCH_BLE', 'TARGET_ARCH_LINK']
screamer 0:4a2e5f0422d6 1558 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1559
screamer 0:4a2e5f0422d6 1560 class SEEED_TINY_BLE(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1561 def __init__(self):
screamer 0:4a2e5f0422d6 1562 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1563 self.progen = {
screamer 0:4a2e5f0422d6 1564 "target":"seed-tinyble",
screamer 0:4a2e5f0422d6 1565 }
screamer 0:4a2e5f0422d6 1566
screamer 0:4a2e5f0422d6 1567 class SEEED_TINY_BLE_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1568 def __init__(self):
screamer 0:4a2e5f0422d6 1569 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1570 self.extra_labels += ['SEEED_TINY_BLE']
screamer 0:4a2e5f0422d6 1571 self.macros += ['TARGET_SEEED_TINY_BLE']
screamer 0:4a2e5f0422d6 1572
screamer 0:4a2e5f0422d6 1573 class SEEED_TINY_BLE_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1574 def __init__(self):
screamer 0:4a2e5f0422d6 1575 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1576 self.extra_labels += ['SEEED_TINY_BLE']
screamer 0:4a2e5f0422d6 1577 self.macros += ['TARGET_SEEED_TINY_BLE']
screamer 0:4a2e5f0422d6 1578
screamer 0:4a2e5f0422d6 1579 class HRM1017(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1580 def __init__(self):
screamer 0:4a2e5f0422d6 1581 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1582 self.macros += ['TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1583 self.progen = {
screamer 0:4a2e5f0422d6 1584 "target":"hrm1017",
screamer 0:4a2e5f0422d6 1585 }
screamer 0:4a2e5f0422d6 1586 class HRM1017_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1587 def __init__(self):
screamer 0:4a2e5f0422d6 1588 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1589 self.extra_labels += ['HRM1017']
screamer 0:4a2e5f0422d6 1590 self.macros += ['TARGET_HRM1017', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1591
screamer 0:4a2e5f0422d6 1592 class HRM1017_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1593 def __init__(self):
screamer 0:4a2e5f0422d6 1594 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1595 self.extra_labels += ['HRM1017']
screamer 0:4a2e5f0422d6 1596 self.macros += ['TARGET_HRM1017', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1597
screamer 0:4a2e5f0422d6 1598 class RBLAB_NRF51822(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1599 def __init__(self):
screamer 0:4a2e5f0422d6 1600 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1601 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1602 self.progen = {
screamer 0:4a2e5f0422d6 1603 "target":"rblab-nrf51822",
screamer 0:4a2e5f0422d6 1604 }
screamer 0:4a2e5f0422d6 1605
screamer 0:4a2e5f0422d6 1606 class RBLAB_NRF51822_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1607 def __init__(self):
screamer 0:4a2e5f0422d6 1608 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1609 self.extra_labels += ['RBLAB_NRF51822']
screamer 0:4a2e5f0422d6 1610 self.macros += ['TARGET_RBLAB_NRF51822']
screamer 0:4a2e5f0422d6 1611 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1612
screamer 0:4a2e5f0422d6 1613 class RBLAB_NRF51822_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1614 def __init__(self):
screamer 0:4a2e5f0422d6 1615 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1616 self.extra_labels += ['RBLAB_NRF51822']
screamer 0:4a2e5f0422d6 1617 self.macros += ['TARGET_RBLAB_NRF51822']
screamer 0:4a2e5f0422d6 1618 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1619
screamer 0:4a2e5f0422d6 1620 class RBLAB_BLENANO(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1621 def __init__(self):
screamer 0:4a2e5f0422d6 1622 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1623
screamer 0:4a2e5f0422d6 1624 class RBLAB_BLENANO_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1625 def __init__(self):
screamer 0:4a2e5f0422d6 1626 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1627 self.extra_labels += ['RBLAB_BLENANO']
screamer 0:4a2e5f0422d6 1628 self.macros += ['TARGET_RBLAB_BLENANO']
screamer 0:4a2e5f0422d6 1629
screamer 0:4a2e5f0422d6 1630 class RBLAB_BLENANO_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1631 def __init__(self):
screamer 0:4a2e5f0422d6 1632 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1633 self.extra_labels += ['RBLAB_BLENANO']
screamer 0:4a2e5f0422d6 1634 self.macros += ['TARGET_RBLAB_BLENANO']
screamer 0:4a2e5f0422d6 1635
screamer 0:4a2e5f0422d6 1636 class NRF51822_Y5_MBUG(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1637 def __init__(self):
screamer 0:4a2e5f0422d6 1638 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1639
screamer 0:4a2e5f0422d6 1640 class WALLBOT_BLE(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1641 def __init__(self):
screamer 0:4a2e5f0422d6 1642 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1643
screamer 0:4a2e5f0422d6 1644 class WALLBOT_BLE_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1645 def __init__(self):
screamer 0:4a2e5f0422d6 1646 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1647 self.extra_labels += ['WALLBOT_BLE']
screamer 0:4a2e5f0422d6 1648 self.macros += ['TARGET_WALLBOT_BLE']
screamer 0:4a2e5f0422d6 1649
screamer 0:4a2e5f0422d6 1650 class WALLBOT_BLE_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1651 def __init__(self):
screamer 0:4a2e5f0422d6 1652 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1653 self.extra_labels += ['WALLBOT_BLE']
screamer 0:4a2e5f0422d6 1654 self.macros += ['TARGET_WALLBOT_BLE']
screamer 0:4a2e5f0422d6 1655
screamer 0:4a2e5f0422d6 1656 class DELTA_DFCM_NNN40(MCU_NRF51_32K):
screamer 0:4a2e5f0422d6 1657 def __init__(self):
screamer 0:4a2e5f0422d6 1658 MCU_NRF51_32K.__init__(self)
screamer 0:4a2e5f0422d6 1659 self.macros += ['TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1660 self.progen = {
screamer 0:4a2e5f0422d6 1661 "target":"dfcm-nnn40",
screamer 0:4a2e5f0422d6 1662 }
screamer 0:4a2e5f0422d6 1663 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1664 return 10
screamer 0:4a2e5f0422d6 1665
screamer 0:4a2e5f0422d6 1666 class DELTA_DFCM_NNN40_BOOT(MCU_NRF51_32K_BOOT):
screamer 0:4a2e5f0422d6 1667 def __init__(self):
screamer 0:4a2e5f0422d6 1668 MCU_NRF51_32K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1669 self.extra_labels += ['DELTA_DFCM_NNN40']
screamer 0:4a2e5f0422d6 1670 self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1671 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1672 return 10
screamer 0:4a2e5f0422d6 1673
screamer 0:4a2e5f0422d6 1674 class DELTA_DFCM_NNN40_OTA(MCU_NRF51_32K_OTA):
screamer 0:4a2e5f0422d6 1675 def __init__(self):
screamer 0:4a2e5f0422d6 1676 MCU_NRF51_32K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1677 self.extra_labels += ['DELTA_DFCM_NNN40']
screamer 0:4a2e5f0422d6 1678 self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1679 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1680 return 10
screamer 0:4a2e5f0422d6 1681
screamer 0:4a2e5f0422d6 1682 class NRF51_DK(MCU_NRF51_32K):
screamer 0:4a2e5f0422d6 1683 def __init__(self):
screamer 0:4a2e5f0422d6 1684 MCU_NRF51_32K.__init__(self)
screamer 0:4a2e5f0422d6 1685 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1686 self.progen = {
screamer 0:4a2e5f0422d6 1687 "target":"nrf51-dk",
screamer 0:4a2e5f0422d6 1688 }
screamer 0:4a2e5f0422d6 1689
screamer 0:4a2e5f0422d6 1690 class NRF51_DK_BOOT(MCU_NRF51_32K_BOOT):
screamer 0:4a2e5f0422d6 1691 def __init__(self):
screamer 0:4a2e5f0422d6 1692 MCU_NRF51_32K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1693 self.extra_labels += ['NRF51_DK']
screamer 0:4a2e5f0422d6 1694 self.macros += ['TARGET_NRF51_DK']
screamer 0:4a2e5f0422d6 1695 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1696
screamer 0:4a2e5f0422d6 1697 class NRF51_DK_OTA(MCU_NRF51_32K_OTA):
screamer 0:4a2e5f0422d6 1698 def __init__(self):
screamer 0:4a2e5f0422d6 1699 MCU_NRF51_32K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1700 self.extra_labels += ['NRF51_DK']
screamer 0:4a2e5f0422d6 1701 self.macros += ['TARGET_NRF51_DK']
screamer 0:4a2e5f0422d6 1702 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1703
screamer 0:4a2e5f0422d6 1704 class NRF51_DONGLE(MCU_NRF51_32K):
screamer 0:4a2e5f0422d6 1705 def __init__(self):
screamer 0:4a2e5f0422d6 1706 MCU_NRF51_32K.__init__(self)
screamer 0:4a2e5f0422d6 1707 self.progen = {
screamer 0:4a2e5f0422d6 1708 "target":"nrf51-dongle",
screamer 0:4a2e5f0422d6 1709 }
screamer 0:4a2e5f0422d6 1710
screamer 0:4a2e5f0422d6 1711 class NRF51_DONGLE_BOOT(MCU_NRF51_32K_BOOT):
screamer 0:4a2e5f0422d6 1712 def __init__(self):
screamer 0:4a2e5f0422d6 1713 MCU_NRF51_32K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1714 self.extra_labels += ['NRF51_DONGLE']
screamer 0:4a2e5f0422d6 1715 self.macros += ['TARGET_NRF51_DONGLE']
screamer 0:4a2e5f0422d6 1716
screamer 0:4a2e5f0422d6 1717 class NRF51_DONGLE_OTA(MCU_NRF51_32K_OTA):
screamer 0:4a2e5f0422d6 1718 def __init__(self):
screamer 0:4a2e5f0422d6 1719 MCU_NRF51_32K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1720 self.extra_labels += ['NRF51_DONGLE']
screamer 0:4a2e5f0422d6 1721 self.macros += ['TARGET_NRF51_DONGLE']
screamer 0:4a2e5f0422d6 1722
screamer 0:4a2e5f0422d6 1723 class NRF51_MICROBIT(MCU_NRF51_16K_S110):
screamer 0:4a2e5f0422d6 1724 def __init__(self):
screamer 0:4a2e5f0422d6 1725 MCU_NRF51_16K_S110.__init__(self)
screamer 0:4a2e5f0422d6 1726 self.macros += ['TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1727
screamer 0:4a2e5f0422d6 1728 class NRF51_MICROBIT_BOOT(MCU_NRF51_16K_BOOT_S110):
screamer 0:4a2e5f0422d6 1729 def __init__(self):
screamer 0:4a2e5f0422d6 1730 MCU_NRF51_16K_BOOT_S110.__init__(self)
screamer 0:4a2e5f0422d6 1731 self.extra_labels += ['NRF51_MICROBIT']
screamer 0:4a2e5f0422d6 1732 self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1733
screamer 0:4a2e5f0422d6 1734 class NRF51_MICROBIT_OTA(MCU_NRF51_16K_OTA_S110):
screamer 0:4a2e5f0422d6 1735 def __init__(self):
screamer 0:4a2e5f0422d6 1736 MCU_NRF51_16K_OTA_S110.__init__(self)
screamer 0:4a2e5f0422d6 1737 self.extra_labels += ['NRF51_MICROBIT']
screamer 0:4a2e5f0422d6 1738 self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1739
screamer 0:4a2e5f0422d6 1740 class NRF51_MICROBIT_B(MCU_NRF51_16K):
screamer 0:4a2e5f0422d6 1741 def __init__(self):
screamer 0:4a2e5f0422d6 1742 MCU_NRF51_16K.__init__(self)
screamer 0:4a2e5f0422d6 1743 self.extra_labels += ['NRF51_MICROBIT']
screamer 0:4a2e5f0422d6 1744 self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1745
screamer 0:4a2e5f0422d6 1746 class NRF51_MICROBIT_B_BOOT(MCU_NRF51_16K_BOOT):
screamer 0:4a2e5f0422d6 1747 def __init__(self):
screamer 0:4a2e5f0422d6 1748 MCU_NRF51_16K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1749 self.extra_labels += ['NRF51_MICROBIT']
screamer 0:4a2e5f0422d6 1750 self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1751
screamer 0:4a2e5f0422d6 1752 class NRF51_MICROBIT_B_OTA(MCU_NRF51_16K_OTA):
screamer 0:4a2e5f0422d6 1753 def __init__(self):
screamer 0:4a2e5f0422d6 1754 MCU_NRF51_16K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1755 self.extra_labels += ['NRF51_MICROBIT']
screamer 0:4a2e5f0422d6 1756 self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']
screamer 0:4a2e5f0422d6 1757
screamer 0:4a2e5f0422d6 1758 class TY51822R3(MCU_NRF51_32K):
screamer 0:4a2e5f0422d6 1759 def __init__(self):
screamer 0:4a2e5f0422d6 1760 MCU_NRF51_32K.__init__(self)
screamer 0:4a2e5f0422d6 1761 self.macros += ['TARGET_NRF_32MHZ_XTAL']
screamer 0:4a2e5f0422d6 1762 self.supported_toolchains = ["ARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1763
screamer 0:4a2e5f0422d6 1764 class TY51822R3_BOOT(MCU_NRF51_32K_BOOT):
screamer 0:4a2e5f0422d6 1765 def __init__(self):
screamer 0:4a2e5f0422d6 1766 MCU_NRF51_32K_BOOT.__init__(self)
screamer 0:4a2e5f0422d6 1767 self.extra_labels += ['TY51822R3']
screamer 0:4a2e5f0422d6 1768 self.macros += ['TARGET_TY51822R3', 'TARGET_NRF_32MHZ_XTAL']
screamer 0:4a2e5f0422d6 1769 self.supported_toolchains = ["ARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1770
screamer 0:4a2e5f0422d6 1771 class TY51822R3_OTA(MCU_NRF51_32K_OTA):
screamer 0:4a2e5f0422d6 1772 def __init__(self):
screamer 0:4a2e5f0422d6 1773 MCU_NRF51_32K_OTA.__init__(self)
screamer 0:4a2e5f0422d6 1774 self.extra_labels += ['NRF51_DK']
screamer 0:4a2e5f0422d6 1775 self.macros += ['TARGET_TY51822R3', 'TARGET_NRF_32MHZ_XTAL']
screamer 0:4a2e5f0422d6 1776 self.supported_toolchains = ["ARM", "GCC_ARM"]
screamer 0:4a2e5f0422d6 1777
screamer 0:4a2e5f0422d6 1778
screamer 0:4a2e5f0422d6 1779 ### ARM ###
screamer 0:4a2e5f0422d6 1780
screamer 0:4a2e5f0422d6 1781 class ARM_MPS2_Target(Target):
screamer 0:4a2e5f0422d6 1782 def __init__(self):
screamer 0:4a2e5f0422d6 1783 Target.__init__(self)
screamer 0:4a2e5f0422d6 1784
screamer 0:4a2e5f0422d6 1785 class ARM_MPS2_M0(ARM_MPS2_Target):
screamer 0:4a2e5f0422d6 1786 def __init__(self):
screamer 0:4a2e5f0422d6 1787 ARM_MPS2_Target.__init__(self)
screamer 0:4a2e5f0422d6 1788 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 1789 self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M0']
screamer 0:4a2e5f0422d6 1790 self.macros = ['CMSDK_CM0']
screamer 0:4a2e5f0422d6 1791 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1792 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1793
screamer 0:4a2e5f0422d6 1794 class ARM_MPS2_M0P(ARM_MPS2_Target):
screamer 0:4a2e5f0422d6 1795 def __init__(self):
screamer 0:4a2e5f0422d6 1796 ARM_MPS2_Target.__init__(self)
screamer 0:4a2e5f0422d6 1797 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 1798 self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M0P']
screamer 0:4a2e5f0422d6 1799 self.macros = ['CMSDK_CM0plus']
screamer 0:4a2e5f0422d6 1800 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1801 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1802
screamer 0:4a2e5f0422d6 1803 class ARM_MPS2_M1(ARM_MPS2_Target):
screamer 0:4a2e5f0422d6 1804 def __init__(self):
screamer 0:4a2e5f0422d6 1805 ARM_MPS2_Target.__init__(self)
screamer 0:4a2e5f0422d6 1806 self.core = "Cortex-M1"
screamer 0:4a2e5f0422d6 1807 self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M1']
screamer 0:4a2e5f0422d6 1808 self.macros = ['CMSDK_CM1']
screamer 0:4a2e5f0422d6 1809 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1810 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1811
screamer 0:4a2e5f0422d6 1812 class ARM_MPS2_M3(ARM_MPS2_Target):
screamer 0:4a2e5f0422d6 1813 def __init__(self):
screamer 0:4a2e5f0422d6 1814 ARM_MPS2_Target.__init__(self)
screamer 0:4a2e5f0422d6 1815 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1816 self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M3']
screamer 0:4a2e5f0422d6 1817 self.macros = ['CMSDK_CM3']
screamer 0:4a2e5f0422d6 1818 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1819 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1820
screamer 0:4a2e5f0422d6 1821 class ARM_MPS2_M4(ARM_MPS2_Target):
screamer 0:4a2e5f0422d6 1822 def __init__(self):
screamer 0:4a2e5f0422d6 1823 ARM_MPS2_Target.__init__(self)
screamer 0:4a2e5f0422d6 1824 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1825 self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M4']
screamer 0:4a2e5f0422d6 1826 self.macros = ['CMSDK_CM4']
screamer 0:4a2e5f0422d6 1827 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1828 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1829
screamer 0:4a2e5f0422d6 1830 class ARM_MPS2_M7(ARM_MPS2_Target):
screamer 0:4a2e5f0422d6 1831 def __init__(self):
screamer 0:4a2e5f0422d6 1832 ARM_MPS2_Target.__init__(self)
screamer 0:4a2e5f0422d6 1833 self.core = "Cortex-M7"
screamer 0:4a2e5f0422d6 1834 self.extra_labels = ['ARM_SSG', 'MPS2', 'MPS2_M7']
screamer 0:4a2e5f0422d6 1835 self.macros = ['CMSDK_CM7']
screamer 0:4a2e5f0422d6 1836 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1837 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1838
screamer 0:4a2e5f0422d6 1839 class ARM_IOTSS_Target(Target):
screamer 0:4a2e5f0422d6 1840 def __init__(self):
screamer 0:4a2e5f0422d6 1841 Target.__init__(self)
screamer 0:4a2e5f0422d6 1842 class ARM_IOTSS_BEID(ARM_IOTSS_Target):
screamer 0:4a2e5f0422d6 1843 def __init__(self):
screamer 0:4a2e5f0422d6 1844 ARM_IOTSS_Target.__init__(self)
screamer 0:4a2e5f0422d6 1845 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1846 self.extra_labels = ['ARM_SSG', 'IOTSS', 'IOTSS_BEID']
screamer 0:4a2e5f0422d6 1847 self.macros = ['CMSDK_BEID']
screamer 0:4a2e5f0422d6 1848 self.supported_toolchains = ["ARM"]
screamer 0:4a2e5f0422d6 1849 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1850
screamer 0:4a2e5f0422d6 1851
screamer 0:4a2e5f0422d6 1852 ### Renesas ###
screamer 0:4a2e5f0422d6 1853
screamer 0:4a2e5f0422d6 1854 class RZ_A1H(Target):
screamer 0:4a2e5f0422d6 1855 def __init__(self):
screamer 0:4a2e5f0422d6 1856 Target.__init__(self)
screamer 0:4a2e5f0422d6 1857 self.core = "Cortex-A9"
screamer 0:4a2e5f0422d6 1858 self.extra_labels = ['RENESAS', 'MBRZA1H']
screamer 0:4a2e5f0422d6 1859 self.supported_toolchains = ["ARM", "GCC_ARM", "IAR"]
screamer 0:4a2e5f0422d6 1860 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 1861 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1862 self.progen = {
screamer 0:4a2e5f0422d6 1863 "target": "gr-peach",
screamer 0:4a2e5f0422d6 1864 "iar": {
screamer 0:4a2e5f0422d6 1865 # rewrite generic template, this device needs futher support for FPU in progendef
screamer 0:4a2e5f0422d6 1866 "template": [os.path.join(os.path.dirname(__file__), 'export', 'iar_rz_a1h.ewp.tmpl')],
screamer 0:4a2e5f0422d6 1867 }
screamer 0:4a2e5f0422d6 1868 }
screamer 0:4a2e5f0422d6 1869
screamer 0:4a2e5f0422d6 1870 def program_cycle_s(self):
screamer 0:4a2e5f0422d6 1871 return 2
screamer 0:4a2e5f0422d6 1872
screamer 0:4a2e5f0422d6 1873
screamer 0:4a2e5f0422d6 1874 ### Maxim Integrated ###
screamer 0:4a2e5f0422d6 1875
screamer 0:4a2e5f0422d6 1876 class MAXWSNENV(Target):
screamer 0:4a2e5f0422d6 1877 def __init__(self):
screamer 0:4a2e5f0422d6 1878 Target.__init__(self)
screamer 0:4a2e5f0422d6 1879 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1880 self.extra_labels = ['Maxim', 'MAX32610']
screamer 0:4a2e5f0422d6 1881 self.macros = ['__SYSTEM_HFX=24000000']
screamer 0:4a2e5f0422d6 1882 self.supported_toolchains = ["GCC_ARM", "IAR", "ARM"]
screamer 0:4a2e5f0422d6 1883 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1884 self.progen = {
screamer 0:4a2e5f0422d6 1885 "target": "maxwsnenv",
screamer 0:4a2e5f0422d6 1886 }
screamer 0:4a2e5f0422d6 1887
screamer 0:4a2e5f0422d6 1888 class MAX32600MBED(Target):
screamer 0:4a2e5f0422d6 1889 def __init__(self):
screamer 0:4a2e5f0422d6 1890 Target.__init__(self)
screamer 0:4a2e5f0422d6 1891 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1892 self.extra_labels = ['Maxim', 'MAX32600']
screamer 0:4a2e5f0422d6 1893 self.macros = ['__SYSTEM_HFX=24000000']
screamer 0:4a2e5f0422d6 1894 self.supported_toolchains = ["GCC_ARM", "IAR", "ARM"]
screamer 0:4a2e5f0422d6 1895 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1896 self.progen = {
screamer 0:4a2e5f0422d6 1897 "target": "max32600mbed",
screamer 0:4a2e5f0422d6 1898 }
screamer 0:4a2e5f0422d6 1899
screamer 0:4a2e5f0422d6 1900 ### Silicon Labs ###
screamer 0:4a2e5f0422d6 1901
screamer 0:4a2e5f0422d6 1902 class EFM32GG_STK3700(Target):
screamer 0:4a2e5f0422d6 1903 def __init__(self):
screamer 0:4a2e5f0422d6 1904 Target.__init__(self)
screamer 0:4a2e5f0422d6 1905 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1906 self.extra_labels = ['Silicon_Labs', 'EFM32']
screamer 0:4a2e5f0422d6 1907 self.macros = ['EFM32GG990F1024']
screamer 0:4a2e5f0422d6 1908 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 1909 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1910 self.progen = {
screamer 0:4a2e5f0422d6 1911 "target":"efm32gg_stk3700", #TODO: add to progen
screamer 0:4a2e5f0422d6 1912 }
screamer 0:4a2e5f0422d6 1913
screamer 0:4a2e5f0422d6 1914
screamer 0:4a2e5f0422d6 1915
screamer 0:4a2e5f0422d6 1916 class EFM32LG_STK3600(Target):
screamer 0:4a2e5f0422d6 1917 def __init__(self):
screamer 0:4a2e5f0422d6 1918 Target.__init__(self)
screamer 0:4a2e5f0422d6 1919 self.core = "Cortex-M3"
screamer 0:4a2e5f0422d6 1920 self.extra_labels = ['Silicon_Labs', 'EFM32']
screamer 0:4a2e5f0422d6 1921 self.macros = ['EFM32LG990F256']
screamer 0:4a2e5f0422d6 1922 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 1923 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1924 self.progen = {
screamer 0:4a2e5f0422d6 1925 "target":"efm32lg_stk3600", #TODO: add to progen
screamer 0:4a2e5f0422d6 1926 }
screamer 0:4a2e5f0422d6 1927
screamer 0:4a2e5f0422d6 1928
screamer 0:4a2e5f0422d6 1929
screamer 0:4a2e5f0422d6 1930 class EFM32WG_STK3800(Target):
screamer 0:4a2e5f0422d6 1931 def __init__(self):
screamer 0:4a2e5f0422d6 1932 Target.__init__(self)
screamer 0:4a2e5f0422d6 1933 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1934 self.extra_labels = ['Silicon_Labs', 'EFM32']
screamer 0:4a2e5f0422d6 1935 self.macros = ['EFM32WG990F256']
screamer 0:4a2e5f0422d6 1936 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 1937 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1938 self.progen = {
screamer 0:4a2e5f0422d6 1939 "target":"efm32wg_stk3800", #TODO: add to progen
screamer 0:4a2e5f0422d6 1940 }
screamer 0:4a2e5f0422d6 1941
screamer 0:4a2e5f0422d6 1942
screamer 0:4a2e5f0422d6 1943
screamer 0:4a2e5f0422d6 1944 class EFM32ZG_STK3200(Target):
screamer 0:4a2e5f0422d6 1945 def __init__(self):
screamer 0:4a2e5f0422d6 1946 Target.__init__(self)
screamer 0:4a2e5f0422d6 1947 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 1948 self.extra_labels = ['Silicon_Labs', 'EFM32']
screamer 0:4a2e5f0422d6 1949 self.macros = ['EFM32ZG222F32']
screamer 0:4a2e5f0422d6 1950 self.supported_toolchains = ["GCC_ARM", "uARM"]
screamer 0:4a2e5f0422d6 1951 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1952 self.progen = {
screamer 0:4a2e5f0422d6 1953 "target":"efm32zg_stk3200", #TODO: add to progen
screamer 0:4a2e5f0422d6 1954 "uvision": {
screamer 0:4a2e5f0422d6 1955 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 1956 }
screamer 0:4a2e5f0422d6 1957 }
screamer 0:4a2e5f0422d6 1958
screamer 0:4a2e5f0422d6 1959
screamer 0:4a2e5f0422d6 1960 class EFM32HG_STK3400(Target):
screamer 0:4a2e5f0422d6 1961 def __init__(self):
screamer 0:4a2e5f0422d6 1962 Target.__init__(self)
screamer 0:4a2e5f0422d6 1963 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 1964 self.extra_labels = ['Silicon_Labs', 'EFM32']
screamer 0:4a2e5f0422d6 1965 self.macros = ['EFM32HG322F64']
screamer 0:4a2e5f0422d6 1966 self.supported_toolchains = ["GCC_ARM", "uARM"]
screamer 0:4a2e5f0422d6 1967 self.default_toolchain = "uARM"
screamer 0:4a2e5f0422d6 1968 self.progen = {
screamer 0:4a2e5f0422d6 1969 "target":"efm32hg_stk3400", #TODO: add to progen
screamer 0:4a2e5f0422d6 1970 "uvision": {
screamer 0:4a2e5f0422d6 1971 "template": [os.path.join(os.path.dirname(__file__), 'export', 'uvision_microlib.uvproj.tmpl')],
screamer 0:4a2e5f0422d6 1972 }
screamer 0:4a2e5f0422d6 1973 }
screamer 0:4a2e5f0422d6 1974
screamer 0:4a2e5f0422d6 1975
screamer 0:4a2e5f0422d6 1976 class EFM32PG_STK3401(Target):
screamer 0:4a2e5f0422d6 1977 def __init__(self):
screamer 0:4a2e5f0422d6 1978 Target.__init__(self)
screamer 0:4a2e5f0422d6 1979 self.core = "Cortex-M4F"
screamer 0:4a2e5f0422d6 1980 self.extra_labels = ['Silicon_Labs', 'EFM32']
screamer 0:4a2e5f0422d6 1981 self.macros = ['EFM32PG1B200F256GM48']
screamer 0:4a2e5f0422d6 1982 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM", "IAR"]
screamer 0:4a2e5f0422d6 1983 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1984 self.progen = {
screamer 0:4a2e5f0422d6 1985 "target":"efm32pg_stk3401", #TODO: add to progen
screamer 0:4a2e5f0422d6 1986 }
screamer 0:4a2e5f0422d6 1987
screamer 0:4a2e5f0422d6 1988
screamer 0:4a2e5f0422d6 1989
screamer 0:4a2e5f0422d6 1990 ##WIZnet
screamer 0:4a2e5f0422d6 1991
screamer 0:4a2e5f0422d6 1992 class WIZWIKI_W7500(Target):
screamer 0:4a2e5f0422d6 1993 def __init__(self):
screamer 0:4a2e5f0422d6 1994 Target.__init__(self)
screamer 0:4a2e5f0422d6 1995 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 1996 self.extra_labels = ['WIZNET', 'W7500x', 'WIZwiki_W7500']
screamer 0:4a2e5f0422d6 1997 self.supported_toolchains = ["uARM", "ARM"]
screamer 0:4a2e5f0422d6 1998 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 1999 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 2000 self.progen = {
screamer 0:4a2e5f0422d6 2001 "target":"wizwiki_w7500",
screamer 0:4a2e5f0422d6 2002 }
screamer 0:4a2e5f0422d6 2003
screamer 0:4a2e5f0422d6 2004 class WIZWIKI_W7500P(Target):
screamer 0:4a2e5f0422d6 2005 def __init__(self):
screamer 0:4a2e5f0422d6 2006 Target.__init__(self)
screamer 0:4a2e5f0422d6 2007 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 2008 self.extra_labels = ['WIZNET', 'W7500x', 'WIZwiki_W7500P']
screamer 0:4a2e5f0422d6 2009 self.supported_toolchains = ["uARM", "ARM"]
screamer 0:4a2e5f0422d6 2010 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 2011 self.supported_form_factors = ["ARDUINO"]
screamer 0:4a2e5f0422d6 2012 self.progen = {
screamer 0:4a2e5f0422d6 2013 "target":"wizwiki_w7500p", # TODO: add to progen
screamer 0:4a2e5f0422d6 2014 }
screamer 0:4a2e5f0422d6 2015
screamer 0:4a2e5f0422d6 2016 class WIZWIKI_W7500ECO(Target):
screamer 0:4a2e5f0422d6 2017 def __init__(self):
screamer 0:4a2e5f0422d6 2018 Target.__init__(self)
screamer 0:4a2e5f0422d6 2019 self.core = "Cortex-M0"
screamer 0:4a2e5f0422d6 2020 self.extra_labels = ['WIZNET', 'W7500x', 'WIZwiki_W7500ECO']
screamer 0:4a2e5f0422d6 2021 self.supported_toolchains = ["uARM", "ARM"]
screamer 0:4a2e5f0422d6 2022 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 2023 self.progen = {
screamer 0:4a2e5f0422d6 2024 "target":"wizwiki_w7500eco", # TODO: add to progen
screamer 0:4a2e5f0422d6 2025 }
screamer 0:4a2e5f0422d6 2026
screamer 0:4a2e5f0422d6 2027
screamer 0:4a2e5f0422d6 2028 class SAMR21G18A(Target):
screamer 0:4a2e5f0422d6 2029 def __init__(self):
screamer 0:4a2e5f0422d6 2030 Target.__init__(self)
screamer 0:4a2e5f0422d6 2031 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 2032 self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAMR21']
screamer 0:4a2e5f0422d6 2033 self.macros = ['__SAMR21G18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
screamer 0:4a2e5f0422d6 2034 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 2035 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 2036 self.progen = {
screamer 0:4a2e5f0422d6 2037 "target":"samr21g18a",
screamer 0:4a2e5f0422d6 2038 }
screamer 0:4a2e5f0422d6 2039
screamer 0:4a2e5f0422d6 2040 class SAMD21J18A(Target):
screamer 0:4a2e5f0422d6 2041 def __init__(self):
screamer 0:4a2e5f0422d6 2042 Target.__init__(self)
screamer 0:4a2e5f0422d6 2043 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 2044 self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAMD21']
screamer 0:4a2e5f0422d6 2045 self.macros = ['__SAMD21J18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
screamer 0:4a2e5f0422d6 2046 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 2047 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 2048 self.progen = {
screamer 0:4a2e5f0422d6 2049 "target":"samd21j18a",
screamer 0:4a2e5f0422d6 2050 }
screamer 0:4a2e5f0422d6 2051
screamer 0:4a2e5f0422d6 2052 class SAMD21G18A(Target):
screamer 0:4a2e5f0422d6 2053 def __init__(self):
screamer 0:4a2e5f0422d6 2054 Target.__init__(self)
screamer 0:4a2e5f0422d6 2055 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 2056 self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAMD21']
screamer 0:4a2e5f0422d6 2057 self.macros = ['__SAMD21G18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
screamer 0:4a2e5f0422d6 2058 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 2059 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 2060 self.progen = {
screamer 0:4a2e5f0422d6 2061 "target":"samd21g18a",
screamer 0:4a2e5f0422d6 2062 }
screamer 0:4a2e5f0422d6 2063
screamer 0:4a2e5f0422d6 2064 class SAML21J18A(Target):
screamer 0:4a2e5f0422d6 2065 def __init__(self):
screamer 0:4a2e5f0422d6 2066 Target.__init__(self)
screamer 0:4a2e5f0422d6 2067 self.core = "Cortex-M0+"
screamer 0:4a2e5f0422d6 2068 self.extra_labels = ['Atmel', 'SAM_CortexM0P', 'SAML21']
screamer 0:4a2e5f0422d6 2069 self.macros = ['__SAML21J18A__', 'I2C_MASTER_CALLBACK_MODE=true', 'EXTINT_CALLBACK_MODE=true', 'USART_CALLBACK_MODE=true', 'TC_ASYNC=true']
screamer 0:4a2e5f0422d6 2070 self.supported_toolchains = ["GCC_ARM", "ARM", "uARM"]
screamer 0:4a2e5f0422d6 2071 self.default_toolchain = "ARM"
screamer 0:4a2e5f0422d6 2072 self.progen = {
screamer 0:4a2e5f0422d6 2073 "target":"samr21j18a",
screamer 0:4a2e5f0422d6 2074 }
screamer 0:4a2e5f0422d6 2075
screamer 0:4a2e5f0422d6 2076 # Get a single instance for each target
screamer 0:4a2e5f0422d6 2077 TARGETS = [
screamer 0:4a2e5f0422d6 2078
screamer 0:4a2e5f0422d6 2079 ### NXP ###
screamer 0:4a2e5f0422d6 2080 LPC11C24(),
screamer 0:4a2e5f0422d6 2081 LPC11U24(),
screamer 0:4a2e5f0422d6 2082 OC_MBUINO(), # LPC11U24
screamer 0:4a2e5f0422d6 2083 LPC11U24_301(),
screamer 0:4a2e5f0422d6 2084 LPC11U34_421(),
screamer 0:4a2e5f0422d6 2085 MICRONFCBOARD(), # LPC11U34_421
screamer 0:4a2e5f0422d6 2086 LPC11U35_401(),
screamer 0:4a2e5f0422d6 2087 LPC11U35_501(), # LPC11U35_501
screamer 0:4a2e5f0422d6 2088 LPC11U35_501_IBDAP(), # LPC11U35_501
screamer 0:4a2e5f0422d6 2089 XADOW_M0(), # LPC11U35_501
screamer 0:4a2e5f0422d6 2090 LPC11U35_Y5_MBUG(), # LPC11U35_501
screamer 0:4a2e5f0422d6 2091 LPC11U37_501(),
screamer 0:4a2e5f0422d6 2092 LPCCAPPUCCINO(), # LPC11U37_501
screamer 0:4a2e5f0422d6 2093 ARCH_GPRS(), # LPC11U37_501
screamer 0:4a2e5f0422d6 2094 LPC11U68(),
screamer 0:4a2e5f0422d6 2095 LPC1114(),
screamer 0:4a2e5f0422d6 2096 LPC1347(),
screamer 0:4a2e5f0422d6 2097 LPC1549(),
screamer 0:4a2e5f0422d6 2098 LPC1768(), # LPC1768
screamer 0:4a2e5f0422d6 2099 ARCH_PRO(), # LPC1768
screamer 0:4a2e5f0422d6 2100 UBLOX_C027(), # LPC1768
screamer 0:4a2e5f0422d6 2101 XBED_LPC1768(), # LPC1768
screamer 0:4a2e5f0422d6 2102 LPC2368(),
screamer 0:4a2e5f0422d6 2103 LPC2460(),
screamer 0:4a2e5f0422d6 2104 LPC810(),
screamer 0:4a2e5f0422d6 2105 LPC812(),
screamer 0:4a2e5f0422d6 2106 LPC824(),
screamer 0:4a2e5f0422d6 2107 SSCI824(), # LPC824
screamer 0:4a2e5f0422d6 2108 LPC4088(),
screamer 0:4a2e5f0422d6 2109 LPC4088_DM(),
screamer 0:4a2e5f0422d6 2110 LPC4330_M4(),
screamer 0:4a2e5f0422d6 2111 LPC4330_M0(),
screamer 0:4a2e5f0422d6 2112 LPC4337(),
screamer 0:4a2e5f0422d6 2113 LPC11U37H_401(),
screamer 0:4a2e5f0422d6 2114
screamer 0:4a2e5f0422d6 2115 ### Freescale ###
screamer 0:4a2e5f0422d6 2116 KL05Z(),
screamer 0:4a2e5f0422d6 2117 KL25Z(),
screamer 0:4a2e5f0422d6 2118 KL26Z(),
screamer 0:4a2e5f0422d6 2119 KL43Z(),
screamer 0:4a2e5f0422d6 2120 KL46Z(),
screamer 0:4a2e5f0422d6 2121 K20D50M(),
screamer 0:4a2e5f0422d6 2122 TEENSY3_1(),
screamer 0:4a2e5f0422d6 2123 K22F(),
screamer 0:4a2e5f0422d6 2124 K64F(),
screamer 0:4a2e5f0422d6 2125 MTS_GAMBIT(), # FRDM K64F
screamer 0:4a2e5f0422d6 2126
screamer 0:4a2e5f0422d6 2127 ### STMicro ###
screamer 0:4a2e5f0422d6 2128 B96B_F446VE(),
screamer 0:4a2e5f0422d6 2129 NUCLEO_F030R8(),
screamer 0:4a2e5f0422d6 2130 NUCLEO_F031K6(),
screamer 0:4a2e5f0422d6 2131 NUCLEO_F042K6(),
screamer 0:4a2e5f0422d6 2132 NUCLEO_F070RB(),
screamer 0:4a2e5f0422d6 2133 NUCLEO_F072RB(),
screamer 0:4a2e5f0422d6 2134 NUCLEO_F091RC(),
screamer 0:4a2e5f0422d6 2135 NUCLEO_F103RB(),
screamer 0:4a2e5f0422d6 2136 NUCLEO_F302R8(),
screamer 0:4a2e5f0422d6 2137 NUCLEO_F303K8(),
screamer 0:4a2e5f0422d6 2138 NUCLEO_F303RE(),
screamer 0:4a2e5f0422d6 2139 NUCLEO_F334R8(),
screamer 0:4a2e5f0422d6 2140 NUCLEO_F401RE(),
screamer 0:4a2e5f0422d6 2141 NUCLEO_F410RB(),
screamer 0:4a2e5f0422d6 2142 NUCLEO_F411RE(),
screamer 0:4a2e5f0422d6 2143 NUCLEO_F746ZG(),
screamer 0:4a2e5f0422d6 2144 ELMO_F411RE(),
screamer 0:4a2e5f0422d6 2145 NUCLEO_F446RE(),
screamer 0:4a2e5f0422d6 2146 NUCLEO_L053R8(),
screamer 0:4a2e5f0422d6 2147 NUCLEO_L073RZ(),
screamer 0:4a2e5f0422d6 2148 NUCLEO_L152RE(),
screamer 0:4a2e5f0422d6 2149 NUCLEO_L476RG(),
screamer 0:4a2e5f0422d6 2150 STM32F3XX(),
screamer 0:4a2e5f0422d6 2151 STM32F407(),
screamer 0:4a2e5f0422d6 2152 DISCO_F051R8(),
screamer 0:4a2e5f0422d6 2153 DISCO_F100RB(),
screamer 0:4a2e5f0422d6 2154 DISCO_F303VC(),
screamer 0:4a2e5f0422d6 2155 DISCO_F334C8(),
screamer 0:4a2e5f0422d6 2156 DISCO_F746NG(),
screamer 0:4a2e5f0422d6 2157 DISCO_F407VG(), # STM32F407
screamer 0:4a2e5f0422d6 2158 ARCH_MAX(), # STM32F407
screamer 0:4a2e5f0422d6 2159 DISCO_F429ZI(),
screamer 0:4a2e5f0422d6 2160 DISCO_F469NI(),
screamer 0:4a2e5f0422d6 2161 DISCO_L053C8(),
screamer 0:4a2e5f0422d6 2162 DISCO_L476VG(),
screamer 0:4a2e5f0422d6 2163 MTS_MDOT_F405RG(),
screamer 0:4a2e5f0422d6 2164 MTS_MDOT_F411RE(),
screamer 0:4a2e5f0422d6 2165 MOTE_L152RC(),
screamer 0:4a2e5f0422d6 2166 MTS_DRAGONFLY_F411RE(),
screamer 0:4a2e5f0422d6 2167 DISCO_F401VC(),
screamer 0:4a2e5f0422d6 2168 UBLOX_C029(), # STM32F439
screamer 0:4a2e5f0422d6 2169 NZ32_SC151(), # STM32L151
screamer 0:4a2e5f0422d6 2170
screamer 0:4a2e5f0422d6 2171 ### Nordic ###
screamer 0:4a2e5f0422d6 2172 NRF51822(), # nRF51_16K
screamer 0:4a2e5f0422d6 2173 NRF51822_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2174 NRF51822_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2175 ARCH_BLE(), # nRF51_16K
screamer 0:4a2e5f0422d6 2176 ARCH_BLE_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2177 ARCH_BLE_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2178 ARCH_LINK(), # nRF51_16K
screamer 0:4a2e5f0422d6 2179 ARCH_LINK_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2180 ARCH_LINK_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2181 SEEED_TINY_BLE(), # nRF51_16K
screamer 0:4a2e5f0422d6 2182 SEEED_TINY_BLE_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2183 SEEED_TINY_BLE_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2184 HRM1017(), # nRF51_16K
screamer 0:4a2e5f0422d6 2185 HRM1017_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2186 HRM1017_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2187 RBLAB_NRF51822(), # nRF51_16K
screamer 0:4a2e5f0422d6 2188 RBLAB_NRF51822_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2189 RBLAB_NRF51822_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2190 RBLAB_BLENANO(), # nRF51_16K
screamer 0:4a2e5f0422d6 2191 RBLAB_BLENANO_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2192 RBLAB_BLENANO_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2193 NRF51822_Y5_MBUG(), # nRF51_16K
screamer 0:4a2e5f0422d6 2194 WALLBOT_BLE(), # nRF51_16K
screamer 0:4a2e5f0422d6 2195 WALLBOT_BLE_BOOT(), # nRF51_16K
screamer 0:4a2e5f0422d6 2196 WALLBOT_BLE_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2197 DELTA_DFCM_NNN40(), # nRF51_16K
screamer 0:4a2e5f0422d6 2198 DELTA_DFCM_NNN40_BOOT(),# nRF51_16K
screamer 0:4a2e5f0422d6 2199 DELTA_DFCM_NNN40_OTA(), # nRF51_16K
screamer 0:4a2e5f0422d6 2200 NRF51_DK(), # nRF51_32K
screamer 0:4a2e5f0422d6 2201 NRF51_DK_BOOT(), # nRF51_32K
screamer 0:4a2e5f0422d6 2202 NRF51_DK_OTA(), # nRF51_32K
screamer 0:4a2e5f0422d6 2203 NRF51_DONGLE(), # nRF51_32K
screamer 0:4a2e5f0422d6 2204 NRF51_DONGLE_BOOT(), # nRF51_32K
screamer 0:4a2e5f0422d6 2205 NRF51_DONGLE_OTA(), # nRF51_32K
screamer 0:4a2e5f0422d6 2206 NRF51_MICROBIT(), # nRF51_16K - S110
screamer 0:4a2e5f0422d6 2207 NRF51_MICROBIT_BOOT(), # nRF51_16K - S110
screamer 0:4a2e5f0422d6 2208 NRF51_MICROBIT_OTA(), # nRF51_16K - S110
screamer 0:4a2e5f0422d6 2209 NRF51_MICROBIT_B(), # nRF51_16K - default
screamer 0:4a2e5f0422d6 2210 NRF51_MICROBIT_B_BOOT(),# nRF51_16K - default
screamer 0:4a2e5f0422d6 2211 NRF51_MICROBIT_B_OTA(), # nRF51_16K - default
screamer 0:4a2e5f0422d6 2212 TY51822R3(), # nRF51_32K
screamer 0:4a2e5f0422d6 2213 TY51822R3_BOOT(), # nRF51_32K
screamer 0:4a2e5f0422d6 2214 TY51822R3_OTA(), # nRF51_32K
screamer 0:4a2e5f0422d6 2215
screamer 0:4a2e5f0422d6 2216
screamer 0:4a2e5f0422d6 2217 ### ARM ###
screamer 0:4a2e5f0422d6 2218 ARM_MPS2_M0(),
screamer 0:4a2e5f0422d6 2219 ARM_MPS2_M0P(),
screamer 0:4a2e5f0422d6 2220 ARM_MPS2_M1(),
screamer 0:4a2e5f0422d6 2221 ARM_MPS2_M3(),
screamer 0:4a2e5f0422d6 2222 ARM_MPS2_M4(),
screamer 0:4a2e5f0422d6 2223 ARM_MPS2_M7(),
screamer 0:4a2e5f0422d6 2224
screamer 0:4a2e5f0422d6 2225 ARM_IOTSS_BEID(),
screamer 0:4a2e5f0422d6 2226
screamer 0:4a2e5f0422d6 2227 ### Renesas ###
screamer 0:4a2e5f0422d6 2228 RZ_A1H(),
screamer 0:4a2e5f0422d6 2229
screamer 0:4a2e5f0422d6 2230 ### Maxim Integrated ###
screamer 0:4a2e5f0422d6 2231 MAXWSNENV(),
screamer 0:4a2e5f0422d6 2232 MAX32600MBED(),
screamer 0:4a2e5f0422d6 2233
screamer 0:4a2e5f0422d6 2234 ### Silicon Labs ###
screamer 0:4a2e5f0422d6 2235 EFM32GG_STK3700(),
screamer 0:4a2e5f0422d6 2236 EFM32LG_STK3600(),
screamer 0:4a2e5f0422d6 2237 EFM32WG_STK3800(),
screamer 0:4a2e5f0422d6 2238 EFM32ZG_STK3200(),
screamer 0:4a2e5f0422d6 2239 EFM32HG_STK3400(),
screamer 0:4a2e5f0422d6 2240 EFM32PG_STK3401(),
screamer 0:4a2e5f0422d6 2241
screamer 0:4a2e5f0422d6 2242 ### WIZnet ###
screamer 0:4a2e5f0422d6 2243 WIZWIKI_W7500(),
screamer 0:4a2e5f0422d6 2244 WIZWIKI_W7500P(),
screamer 0:4a2e5f0422d6 2245 WIZWIKI_W7500ECO(),
screamer 0:4a2e5f0422d6 2246
screamer 0:4a2e5f0422d6 2247 ### Atmel ###
screamer 0:4a2e5f0422d6 2248 SAMR21G18A(),
screamer 0:4a2e5f0422d6 2249 SAMD21J18A(),
screamer 0:4a2e5f0422d6 2250 SAMD21G18A(),
screamer 0:4a2e5f0422d6 2251 SAML21J18A(),
screamer 0:4a2e5f0422d6 2252 ]
screamer 0:4a2e5f0422d6 2253
screamer 0:4a2e5f0422d6 2254 # Map each target name to its unique instance
screamer 0:4a2e5f0422d6 2255 TARGET_MAP = {}
screamer 0:4a2e5f0422d6 2256 for t in TARGETS:
screamer 0:4a2e5f0422d6 2257 TARGET_MAP[t.name] = t
screamer 0:4a2e5f0422d6 2258
screamer 0:4a2e5f0422d6 2259 TARGET_NAMES = TARGET_MAP.keys()
screamer 0:4a2e5f0422d6 2260
screamer 0:4a2e5f0422d6 2261 # Some targets with different name have the same exporters
screamer 0:4a2e5f0422d6 2262 EXPORT_MAP = { }
screamer 0:4a2e5f0422d6 2263
screamer 0:4a2e5f0422d6 2264 # Detection APIs
screamer 0:4a2e5f0422d6 2265 def get_target_detect_codes():
screamer 0:4a2e5f0422d6 2266 """ Returns dictionary mapping detect_code -> platform_name
screamer 0:4a2e5f0422d6 2267 """
screamer 0:4a2e5f0422d6 2268 result = {}
screamer 0:4a2e5f0422d6 2269 for target in TARGETS:
screamer 0:4a2e5f0422d6 2270 for detect_code in target.detect_code:
screamer 0:4a2e5f0422d6 2271 result[detect_code] = target.name
screamer 0:4a2e5f0422d6 2272 return result