Morpheus / mbed-tools

Fork of mbed-tools by -deleted-

Committer:
screamer
Date:
Tue Apr 05 00:21:13 2016 +0100
Revision:
11:072037a91709
Parent:
2:5f044fef8f98
Add K64F_UV target for when K64F is used with uVisor

Who changed what in which revision?

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