Clone of official tools

Committer:
screamer
Date:
Thu May 19 19:44:41 2016 +0100
Revision:
0:66f3b5499f7f
Child:
7:5af61d55adbe
Initial revision

Who changed what in which revision?

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