mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			
						commit
						8b98a2caaa
					
				
							
								
								
									
										241
									
								
								hal/targets.json
								
								
								
								
							
							
						
						
									
										241
									
								
								hal/targets.json
								
								
								
								
							| 
						 | 
				
			
			@ -10,8 +10,7 @@
 | 
			
		|||
        "features": [],
 | 
			
		||||
        "detect_code": [],
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "default_build": "standard",
 | 
			
		||||
        "release": false
 | 
			
		||||
        "default_build": "standard"
 | 
			
		||||
    },
 | 
			
		||||
    "CM4_UARM": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -19,15 +18,13 @@
 | 
			
		|||
        "default_toolchain": "uARM",
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "supported_toolchains": ["uARM"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": false
 | 
			
		||||
        "default_build": "small"
 | 
			
		||||
    },
 | 
			
		||||
    "CM4_ARM": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
        "core": "Cortex-M4",
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "supported_toolchains": ["ARM"],
 | 
			
		||||
        "release": false
 | 
			
		||||
        "supported_toolchains": ["ARM"]
 | 
			
		||||
    },
 | 
			
		||||
    "CM4F_UARM": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -35,21 +32,18 @@
 | 
			
		|||
        "default_toolchain": "uARM",
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "supported_toolchains": ["uARM"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": false
 | 
			
		||||
        "default_build": "small"
 | 
			
		||||
    },
 | 
			
		||||
    "CM4F_ARM": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
        "core": "Cortex-M4F",
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "supported_toolchains": ["ARM"],
 | 
			
		||||
        "release": false
 | 
			
		||||
        "supported_toolchains": ["ARM"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPCTarget": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
        "post_binary_hook": {"function": "LPCTargetCode.lpc_patch"},
 | 
			
		||||
        "public": false,
 | 
			
		||||
        "release": false
 | 
			
		||||
        "public": false
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11C24": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +64,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U24": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +78,7 @@
 | 
			
		|||
        "detect_code": ["1040"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "OC_MBUINO": {
 | 
			
		||||
        "inherits": ["LPC11U24"],
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +88,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "extra_labels": ["NXP", "LPC11UXX"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U24_301": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +110,7 @@
 | 
			
		|||
        "inherits": ["LPC11U34_421"],
 | 
			
		||||
        "macros": ["LPC11U34_421", "APPNEARME_MICRONFCBOARD"],
 | 
			
		||||
        "extra_labels_add": ["APPNEARME_MICRONFCBOARD"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U35_401": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +123,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U35_501": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +136,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U35_501_IBDAP": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +161,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U35_Y5_MBUG": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -211,7 +205,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC11U68": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +220,7 @@
 | 
			
		|||
        "detect_code": ["1168"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC1347": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +229,7 @@
 | 
			
		|||
        "extra_labels": ["NXP", "LPC13XX"],
 | 
			
		||||
        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC1549": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +244,7 @@
 | 
			
		|||
        "detect_code": ["1549"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC1768": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -260,7 +254,7 @@
 | 
			
		|||
        "progen": {"target": "mbed-lpc1768"},
 | 
			
		||||
        "detect_code": ["1010"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARCH_PRO": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -271,7 +265,7 @@
 | 
			
		|||
        "inherits": ["LPCTarget"],
 | 
			
		||||
        "progen": {"target": "arch-pro"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "UBLOX_C027": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -282,7 +276,7 @@
 | 
			
		|||
        "inherits": ["LPCTarget"],
 | 
			
		||||
        "progen": {"target": "ublox-c027"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_RED", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "XBED_LPC1768": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -300,8 +294,7 @@
 | 
			
		|||
        "progen": {"target": "lpc2368"},
 | 
			
		||||
        "extra_labels": ["NXP", "LPC23XX"],
 | 
			
		||||
        "supported_toolchains": ["GCC_ARM", "GCC_CR"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC2460": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -309,8 +302,7 @@
 | 
			
		|||
        "progen": {"target": "lpc2460"},
 | 
			
		||||
        "extra_labels": ["NXP", "LPC2460"],
 | 
			
		||||
        "supported_toolchains": ["GCC_ARM"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC810": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -339,7 +331,7 @@
 | 
			
		|||
        "detect_code": ["1050"],
 | 
			
		||||
        "device_has": ["ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC824": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -354,7 +346,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "SSCI824": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -368,7 +360,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC4088": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -382,11 +374,11 @@
 | 
			
		|||
        },
 | 
			
		||||
        "progen": {"target": "lpc4088"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC4088_DM": {
 | 
			
		||||
        "inherits": ["LPC4088"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC4330_M4": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -410,7 +402,7 @@
 | 
			
		|||
        "extra_labels": ["NXP", "LPC43XX", "LPC4337"],
 | 
			
		||||
        "supported_toolchains": ["ARM"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "DEBUG_AWARENESS", "ERROR_RED", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "LPC1800": {
 | 
			
		||||
        "inherits": ["LPCTarget"],
 | 
			
		||||
| 
						 | 
				
			
			@ -431,7 +423,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ELEKTOR_COCORICO": {
 | 
			
		||||
        "core": "Cortex-M0+",
 | 
			
		||||
| 
						 | 
				
			
			@ -459,7 +451,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "KL25Z": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -471,7 +463,7 @@
 | 
			
		|||
        "progen": {"target": "frdm-kl25z"},
 | 
			
		||||
        "detect_code": ["0200"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "KL26Z": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -492,7 +484,7 @@
 | 
			
		|||
        "inherits": ["Target"],
 | 
			
		||||
        "progen": {"target": "frdm-kl43z"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "KL46Z": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -504,7 +496,7 @@
 | 
			
		|||
        "progen": {"target": "frdm-kl46z"},
 | 
			
		||||
        "detect_code": ["0220"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "K20D50M": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -515,7 +507,7 @@
 | 
			
		|||
        "progen": {"target": "frdm-k20d50m"},
 | 
			
		||||
        "detect_code": ["0230"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "TEENSY3_1": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -531,7 +523,7 @@
 | 
			
		|||
        "progen": {"target": "teensy-31"},
 | 
			
		||||
        "detect_code": ["0230"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "K22F": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -544,7 +536,7 @@
 | 
			
		|||
        "progen": {"target": "frdm-k22f"},
 | 
			
		||||
        "detect_code": ["0231"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "KL27Z": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -559,7 +551,7 @@
 | 
			
		|||
        "progen_target": {"target": "frdm-kl27z"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "standard",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "K64F": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -573,7 +565,7 @@
 | 
			
		|||
        "detect_code": ["0240"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES", "STORAGE"],
 | 
			
		||||
        "features": ["IPV4", "STORAGE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "MTS_GAMBIT": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -608,7 +600,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f030r8"},
 | 
			
		||||
        "detect_code": ["0725"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F031K6": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -621,7 +613,7 @@
 | 
			
		|||
        "detect_code": ["0791"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F042K6": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -634,7 +626,7 @@
 | 
			
		|||
        "detect_code": ["0785"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F070RB": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -646,7 +638,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f070rb"},
 | 
			
		||||
        "detect_code": ["0755"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F072RB": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -658,7 +650,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f072rb"},
 | 
			
		||||
        "detect_code": ["0730"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F091RC": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -670,7 +662,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f091rc"},
 | 
			
		||||
        "detect_code": ["0750"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F103RB": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -682,7 +674,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f103rb"},
 | 
			
		||||
        "detect_code": ["0700"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F207ZG": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -694,7 +686,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f207zg"},
 | 
			
		||||
        "detect_code": ["0835"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F302R8": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -706,7 +698,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f302r8"},
 | 
			
		||||
        "detect_code": ["0705"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F303K8": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -718,7 +710,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f303k8"},
 | 
			
		||||
        "detect_code": ["0775"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F303RE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -730,7 +722,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f303re"},
 | 
			
		||||
        "detect_code": ["0745"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F334R8": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -742,7 +734,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f334r8"},
 | 
			
		||||
        "detect_code": ["0735"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F401RE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -754,7 +746,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f401re"},
 | 
			
		||||
        "detect_code": ["0720"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F410RB": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -766,7 +758,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f410rb"},
 | 
			
		||||
        "detect_code": ["0740"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F411RE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -778,7 +770,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f411re"},
 | 
			
		||||
        "detect_code": ["0740"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "ELMO_F411RE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -790,7 +782,7 @@
 | 
			
		|||
        "detect_code": ["----"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F429ZI": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -801,7 +793,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f429zi"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "detect_code": ["0796"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F446RE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -813,7 +805,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f446re"},
 | 
			
		||||
        "detect_code": ["0777"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F446ZE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -825,7 +817,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f446ze"},
 | 
			
		||||
        "detect_code": ["0778"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    "B96B_F446VE": {
 | 
			
		||||
| 
						 | 
				
			
			@ -837,7 +829,7 @@
 | 
			
		|||
        "inherits": ["Target"],
 | 
			
		||||
        "detect_code": ["0840"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_ASYNCH_DMA", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F746ZG": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -855,7 +847,7 @@
 | 
			
		|||
        "detect_code": ["0816"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "features": ["IPV4"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_F767ZI": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -866,7 +858,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-f767zi"},
 | 
			
		||||
        "detect_code": ["0818"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release":true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_L011K4": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -879,7 +871,7 @@
 | 
			
		|||
        "progen": {"target":"nucleo-l011k4"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    "NUCLEO_L031K6": {
 | 
			
		||||
| 
						 | 
				
			
			@ -893,7 +885,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-l031k6"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_L053R8": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -905,7 +897,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-l053r8"},
 | 
			
		||||
        "detect_code": ["0715"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_L073RZ": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -917,7 +909,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-l073rz"},
 | 
			
		||||
        "detect_code": ["0760"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_L152RE": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -929,7 +921,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-l152re"},
 | 
			
		||||
        "detect_code": ["0710"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_L432KC": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -941,7 +933,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-l432kc"},
 | 
			
		||||
        "detect_code": ["0770"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "CAN", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "NUCLEO_L476RG": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO", "MORPHO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -953,7 +945,7 @@
 | 
			
		|||
        "progen": {"target": "nucleo-l476rg"},
 | 
			
		||||
        "detect_code": ["0765"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "STM32F3XX": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -978,7 +970,7 @@
 | 
			
		|||
        "inherits": ["Target"],
 | 
			
		||||
        "progen": {"target": "arch-max"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_F051R8": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1013,7 +1005,7 @@
 | 
			
		|||
        "progen": {"target": "disco-f334c8"},
 | 
			
		||||
        "detect_code": ["0810"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_F407VG": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1031,7 +1023,7 @@
 | 
			
		|||
        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
 | 
			
		||||
        "progen": {"target": "disco-f429zi"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_F469NI": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1043,7 +1035,7 @@
 | 
			
		|||
        "progen": {"target": "disco-f469ni"},
 | 
			
		||||
        "detect_code": ["0788"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_L053C8": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1053,7 +1045,7 @@
 | 
			
		|||
        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
 | 
			
		||||
        "progen": {"target": "disco-l053c8"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_F746NG": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1064,7 +1056,7 @@
 | 
			
		|||
        "progen": {"target": "disco-f746ng"},
 | 
			
		||||
        "detect_code": ["0815"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_L476VG": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1075,7 +1067,7 @@
 | 
			
		|||
        "progen": {"target": "disco-l476vg"},
 | 
			
		||||
        "detect_code": ["0820"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "MTS_MDOT_F405RG": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1086,7 +1078,7 @@
 | 
			
		|||
        "macros": ["HSE_VALUE=26000000", "OS_CLOCK=48000000"],
 | 
			
		||||
        "progen": {"target": "mts-mdot-f405rg"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "MTS_MDOT_F411RE": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1100,7 +1092,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "progen": {"target": "mts-mdot-f411re"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "MTS_DRAGONFLY_F411RE": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1114,7 +1106,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "progen": {"target": "mts-dragonfly-f411re"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "MOTE_L152RC": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1126,7 +1118,7 @@
 | 
			
		|||
        "detect_code": ["4100"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "DISCO_F401VC": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1299,7 +1291,7 @@
 | 
			
		|||
        "extra_labels_add": ["NRF51822", "NRF51822_MKIT"],
 | 
			
		||||
        "macros_add": ["TARGET_NRF51822_MKIT"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NRF51822_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1318,7 +1310,7 @@
 | 
			
		|||
        "inherits": ["MCU_NRF51_16K"],
 | 
			
		||||
        "progen": {"target": "arch-ble"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARCH_BLE_BOOT": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1354,7 +1346,7 @@
 | 
			
		|||
        "inherits": ["MCU_NRF51_16K"],
 | 
			
		||||
        "progen": {"target": "seed-tinyble"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "SEEED_TINY_BLE_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1371,7 +1363,7 @@
 | 
			
		|||
        "progen": {"target": "hrm1017"},
 | 
			
		||||
        "macros_add": ["TARGET_NRF_LFCLK_RC"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "HRM1017_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1388,7 +1380,7 @@
 | 
			
		|||
        "inherits": ["MCU_NRF51_16K"],
 | 
			
		||||
        "progen": {"target": "rblab-nrf51822"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "RBLAB_NRF51822_BOOT": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1405,7 +1397,7 @@
 | 
			
		|||
    "RBLAB_BLENANO": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "RBLAB_BLENANO_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1424,7 +1416,7 @@
 | 
			
		|||
    "WALLBOT_BLE": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "WALLBOT_BLE_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1442,7 +1434,7 @@
 | 
			
		|||
        "progen": {"target": "dfcm-nnn40"},
 | 
			
		||||
        "macros_add": ["TARGET_NRF_LFCLK_RC"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "DEBUG_AWARENESS", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "DELTA_DFCM_NNN40_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_32K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1460,8 +1452,7 @@
 | 
			
		|||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
        "inherits": ["MCU_NRF51_32K"],
 | 
			
		||||
        "progen": {"target": "nrf51-dk"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"]
 | 
			
		||||
    },
 | 
			
		||||
    "NRF51_DK_BOOT": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1479,7 +1470,7 @@
 | 
			
		|||
        "inherits": ["MCU_NRF51_32K"],
 | 
			
		||||
        "progen": {"target": "nrf51-dongle"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NRF51_DONGLE_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_32K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1495,7 +1486,7 @@
 | 
			
		|||
        "inherits": ["MCU_NRF51_16K_S110"],
 | 
			
		||||
        "macros_add": ["TARGET_NRF_LFCLK_RC"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NRF51_MICROBIT_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT_S110"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1512,7 +1503,7 @@
 | 
			
		|||
        "extra_labels_add": ["NRF51_MICROBIT"],
 | 
			
		||||
        "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "NRF51_MICROBIT_B_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_16K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1528,7 +1519,7 @@
 | 
			
		|||
        "inherits": ["MCU_NRF51_32K"],
 | 
			
		||||
        "macros_add": ["TARGET_NRF_32MHZ_XTAL"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "TY51822R3_BOOT": {
 | 
			
		||||
        "inherits": ["MCU_NRF51_32K_BOOT"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1552,7 +1543,7 @@
 | 
			
		|||
        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M0"],
 | 
			
		||||
        "macros": ["CMSDK_CM0"],
 | 
			
		||||
        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARM_MPS2_M0P": {
 | 
			
		||||
        "inherits": ["ARM_MPS2_Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1561,7 +1552,7 @@
 | 
			
		|||
        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M0P"],
 | 
			
		||||
        "macros": ["CMSDK_CM0plus"],
 | 
			
		||||
        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARM_MPS2_M1": {
 | 
			
		||||
        "inherits": ["ARM_MPS2_Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1578,7 +1569,7 @@
 | 
			
		|||
        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M3"],
 | 
			
		||||
        "macros": ["CMSDK_CM3"],
 | 
			
		||||
        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARM_MPS2_M4": {
 | 
			
		||||
        "inherits": ["ARM_MPS2_Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1587,7 +1578,7 @@
 | 
			
		|||
        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M4"],
 | 
			
		||||
        "macros": ["CMSDK_CM4"],
 | 
			
		||||
        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARM_MPS2_M7": {
 | 
			
		||||
        "inherits": ["ARM_MPS2_Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1596,7 +1587,7 @@
 | 
			
		|||
        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M7"],
 | 
			
		||||
        "macros": ["CMSDK_CM7"],
 | 
			
		||||
        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARM_IOTSS_Target": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1610,7 +1601,7 @@
 | 
			
		|||
        "extra_labels": ["ARM_SSG", "IOTSS", "IOTSS_BEID"],
 | 
			
		||||
        "macros": ["CMSDK_BEID"],
 | 
			
		||||
        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "ARM_BEETLE_SOC": {
 | 
			
		||||
        "inherits": ["ARM_IOTSS_Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1627,7 +1618,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "CLCD", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SPI"],
 | 
			
		||||
	"features": ["BLE"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "RZ_A1H": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1644,7 +1635,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "features": ["IPV4"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "VK_RZ_A1H": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1670,7 +1661,7 @@
 | 
			
		|||
        "supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
 | 
			
		||||
        "progen": {"target": "maxwsnenv"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "MAX32600MBED": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1680,7 +1671,7 @@
 | 
			
		|||
        "supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
 | 
			
		||||
        "progen": {"target": "max32600mbed"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "EFM32GG_STK3700": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1691,7 +1682,7 @@
 | 
			
		|||
        "progen": {"target": "efm32gg-stk"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "forced_reset_timeout": 2,
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "EFM32LG_STK3600": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1702,7 +1693,7 @@
 | 
			
		|||
        "progen": {"target": "efm32lg-stk"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "forced_reset_timeout": 2,
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "EFM32WG_STK3800": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1713,7 +1704,7 @@
 | 
			
		|||
        "progen": {"target": "efm32wg-stk"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "forced_reset_timeout": 2,
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "EFM32ZG_STK3200": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1728,7 +1719,7 @@
 | 
			
		|||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "forced_reset_timeout": 2,
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "EFM32HG_STK3400": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1743,7 +1734,7 @@
 | 
			
		|||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "default_build": "small",
 | 
			
		||||
        "forced_reset_timeout": 2,
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "EFM32PG_STK3401": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1754,7 +1745,7 @@
 | 
			
		|||
        "progen": {"target": "efm32pg-stk"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
 | 
			
		||||
        "forced_reset_timeout": 2,
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "WIZWIKI_W7500": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1764,7 +1755,7 @@
 | 
			
		|||
        "inherits": ["Target"],
 | 
			
		||||
        "progen": {"target": "wizwiki-w7500"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "WIZWIKI_W7500P": {
 | 
			
		||||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1774,7 +1765,7 @@
 | 
			
		|||
        "inherits": ["Target"],
 | 
			
		||||
        "progen": {"target": "wizwiki-w7500p"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "WIZWIKI_W7500ECO": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1783,7 +1774,7 @@
 | 
			
		|||
        "extra_labels": ["WIZNET", "W7500x", "WIZwiki_W7500ECO"],
 | 
			
		||||
        "supported_toolchains": ["uARM", "ARM"],
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "SAMR21G18A": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1793,7 +1784,7 @@
 | 
			
		|||
        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
 | 
			
		||||
        "progen": {"target": "samr21g18a"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "SAMD21J18A": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1803,7 +1794,7 @@
 | 
			
		|||
        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
 | 
			
		||||
        "progen": {"target": "samd21j18a"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "SAMD21G18A": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1813,7 +1804,7 @@
 | 
			
		|||
        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
 | 
			
		||||
        "progen": {"target": "samd21g18a"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
 | 
			
		||||
        "release": true
 | 
			
		||||
        "release_versions": ["2"]
 | 
			
		||||
    },
 | 
			
		||||
    "SAML21J18A": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1888,7 +1879,8 @@
 | 
			
		|||
        "supported_form_factors": ["ARDUINO"],
 | 
			
		||||
        "inherits": ["MCU_NRF51_32K_UNIFIED"],
 | 
			
		||||
        "progen": {"target": "nrf51-dk"},
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE"]
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE"],
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "MCU_NRF52": {
 | 
			
		||||
        "inherits": ["Target"],
 | 
			
		||||
| 
						 | 
				
			
			@ -1948,7 +1940,8 @@
 | 
			
		|||
            "NRF52_PAN_62",
 | 
			
		||||
            "NRF52_PAN_63"
 | 
			
		||||
        ],
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE"]
 | 
			
		||||
        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE"],
 | 
			
		||||
        "release_versions": ["2", "5"]
 | 
			
		||||
    },
 | 
			
		||||
    "BLUEPILL_F103C8": {
 | 
			
		||||
        "core": "Cortex-M3",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,11 +23,11 @@ from copy import copy
 | 
			
		|||
from types import ListType
 | 
			
		||||
from shutil import rmtree
 | 
			
		||||
from os.path import join, exists, basename, abspath, normpath
 | 
			
		||||
from os import getcwd, walk
 | 
			
		||||
from os import getcwd, walk, linesep
 | 
			
		||||
from time import time
 | 
			
		||||
import fnmatch
 | 
			
		||||
 | 
			
		||||
from tools.utils import mkdir, run_cmd, run_cmd_ext, NotSupportedException, ToolException
 | 
			
		||||
from tools.utils import mkdir, run_cmd, run_cmd_ext, NotSupportedException, ToolException, InvalidReleaseTargetException
 | 
			
		||||
from tools.paths import MBED_TARGETS_PATH, MBED_LIBRARIES, MBED_API, MBED_HAL, MBED_COMMON
 | 
			
		||||
from tools.targets import TARGET_NAMES, TARGET_MAP
 | 
			
		||||
from tools.libraries import Library
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +36,8 @@ from jinja2 import FileSystemLoader
 | 
			
		|||
from jinja2.environment import Environment
 | 
			
		||||
from tools.config import Config
 | 
			
		||||
 | 
			
		||||
RELEASE_VERSIONS = ['2', '5']
 | 
			
		||||
 | 
			
		||||
def prep_report(report, target_name, toolchain_name, id_name):
 | 
			
		||||
    # Setup report keys
 | 
			
		||||
    if not target_name in report:
 | 
			
		||||
| 
						 | 
				
			
			@ -112,6 +114,105 @@ def get_config(src_paths, target, toolchain_name):
 | 
			
		|||
    features = toolchain.config.get_features()
 | 
			
		||||
    return cfg, macros, features
 | 
			
		||||
 | 
			
		||||
def is_official_target(target_name, version):
 | 
			
		||||
    """ Returns True, None if a target is part of the official release for the
 | 
			
		||||
    given version. Return False, 'reason' if a target is not part of the
 | 
			
		||||
    official release for the given version.
 | 
			
		||||
 | 
			
		||||
    target_name: Name if the target (ex. 'K64F')
 | 
			
		||||
    version: The release version string. Should be a string contained within RELEASE_VERSIONS
 | 
			
		||||
    """
 | 
			
		||||
    
 | 
			
		||||
    result = True
 | 
			
		||||
    reason = None
 | 
			
		||||
    target = TARGET_MAP[target_name]
 | 
			
		||||
    
 | 
			
		||||
    if hasattr(target, 'release_versions') and version in target.release_versions:
 | 
			
		||||
        if version == '2':
 | 
			
		||||
            # For version 2, either ARM or uARM toolchain support is required
 | 
			
		||||
            required_toolchains = set(['ARM', 'uARM'])
 | 
			
		||||
            
 | 
			
		||||
            if not len(required_toolchains.intersection(set(target.supported_toolchains))) > 0:
 | 
			
		||||
                result = False           
 | 
			
		||||
                reason = ("Target '%s' must support " % target.name) + \
 | 
			
		||||
                    ("one of the folowing toolchains to be included in the mbed 2.0 ") + \
 | 
			
		||||
                    (("official release: %s" + linesep) % ", ".join(required_toolchains)) + \
 | 
			
		||||
                    ("Currently it is only configured to support the ") + \
 | 
			
		||||
                    ("following toolchains: %s" % ", ".join(target.supported_toolchains))
 | 
			
		||||
                    
 | 
			
		||||
        elif version == '5':
 | 
			
		||||
            # For version 5, ARM, GCC_ARM, and IAR toolchain support is required
 | 
			
		||||
            required_toolchains = set(['ARM', 'GCC_ARM', 'IAR'])
 | 
			
		||||
            required_toolchains_sorted = list(required_toolchains)
 | 
			
		||||
            required_toolchains_sorted.sort()
 | 
			
		||||
            supported_toolchains = set(target.supported_toolchains)
 | 
			
		||||
            supported_toolchains_sorted = list(supported_toolchains)
 | 
			
		||||
            supported_toolchains_sorted.sort()
 | 
			
		||||
            
 | 
			
		||||
            if not required_toolchains.issubset(supported_toolchains):
 | 
			
		||||
                result = False
 | 
			
		||||
                reason = ("Target '%s' must support " % target.name) + \
 | 
			
		||||
                    ("ALL of the folowing toolchains to be included in the mbed OS 5.0 ") + \
 | 
			
		||||
                    (("official release: %s" + linesep) % ", ".join(required_toolchains_sorted)) + \
 | 
			
		||||
                    ("Currently it is only configured to support the ") + \
 | 
			
		||||
                    ("following toolchains: %s" % ", ".join(supported_toolchains_sorted))
 | 
			
		||||
        else:
 | 
			
		||||
            result = False
 | 
			
		||||
            reason = ("Target '%s' has set an invalid release version of '%s'" % version) + \
 | 
			
		||||
                ("Please choose from the following release versions: %s" + ', '.join(RELEASE_VERSIONS))
 | 
			
		||||
 | 
			
		||||
    else:
 | 
			
		||||
        result = False
 | 
			
		||||
        if not hasattr(target, 'release_versions'):
 | 
			
		||||
            reason = "Target '%s' does not have the 'release_versions' key set" % target.name
 | 
			
		||||
        elif not version in target.release_versions:
 | 
			
		||||
            reason = "Target '%s' does not contain the version '%s' in its 'release_versions' key" % (target.name, version)
 | 
			
		||||
    
 | 
			
		||||
    return result, reason
 | 
			
		||||
 | 
			
		||||
def transform_release_toolchains(toolchains, version):
 | 
			
		||||
    """ Given a list of toolchains and a release version, return a list of
 | 
			
		||||
    only the supported toolchains for that release
 | 
			
		||||
 | 
			
		||||
    toolchains: The list of toolchains
 | 
			
		||||
    version: The release version string. Should be a string contained within RELEASE_VERSIONS
 | 
			
		||||
    """
 | 
			
		||||
    toolchains_set = set(toolchains)
 | 
			
		||||
 | 
			
		||||
    if version == '5':
 | 
			
		||||
        return ['ARM', 'GCC_ARM', 'IAR']
 | 
			
		||||
    else:
 | 
			
		||||
        return toolchains
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_mbed_official_release(version):
 | 
			
		||||
    """ Given a release version string, return a tuple that contains a target
 | 
			
		||||
    and the supported toolchains for that release.
 | 
			
		||||
    Ex. Given '2', return (('LPC1768', ('ARM', 'GCC_ARM')), ('K64F', ('ARM', 'GCC_ARM')), ...)
 | 
			
		||||
 | 
			
		||||
    version: The version string. Should be a string contained within RELEASE_VERSIONS
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    MBED_OFFICIAL_RELEASE = (
 | 
			
		||||
        tuple(
 | 
			
		||||
            tuple(
 | 
			
		||||
                [
 | 
			
		||||
                    TARGET_MAP[target].name,
 | 
			
		||||
                    tuple(transform_release_toolchains(TARGET_MAP[target].supported_toolchains, version))
 | 
			
		||||
                ]
 | 
			
		||||
            ) for target in TARGET_NAMES if (hasattr(TARGET_MAP[target], 'release_versions') and version in TARGET_MAP[target].release_versions)
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
    
 | 
			
		||||
    for target in MBED_OFFICIAL_RELEASE:
 | 
			
		||||
        is_official, reason = is_official_target(target[0], version)
 | 
			
		||||
        
 | 
			
		||||
        if not is_official:
 | 
			
		||||
            raise InvalidReleaseTargetException(reason)
 | 
			
		||||
            
 | 
			
		||||
    return MBED_OFFICIAL_RELEASE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def prepare_toolchain(src_paths, target, toolchain_name,
 | 
			
		||||
        macros=None, options=None, clean=False, jobs=1,
 | 
			
		||||
        notify=None, silent=False, verbose=False, extra_verbose=False, config=None):
 | 
			
		||||
| 
						 | 
				
			
			@ -646,24 +747,57 @@ def build_mbed_libs(target, toolchain_name, options=None, verbose=False, clean=F
 | 
			
		|||
        raise e
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_unique_supported_toolchains():
 | 
			
		||||
    """ Get list of all unique toolchains supported by targets """
 | 
			
		||||
def get_unique_supported_toolchains(release_targets=None):
 | 
			
		||||
    """ Get list of all unique toolchains supported by targets
 | 
			
		||||
    If release_targets is not specified, then it queries all known targets
 | 
			
		||||
    release_targets: tuple structure returned from get_mbed_official_release()
 | 
			
		||||
    """
 | 
			
		||||
    unique_supported_toolchains = []
 | 
			
		||||
    for target in TARGET_NAMES:
 | 
			
		||||
        for toolchain in TARGET_MAP[target].supported_toolchains:
 | 
			
		||||
            if toolchain not in unique_supported_toolchains:
 | 
			
		||||
                unique_supported_toolchains.append(toolchain)
 | 
			
		||||
 | 
			
		||||
    if not release_targets:
 | 
			
		||||
        for target in TARGET_NAMES:
 | 
			
		||||
            for toolchain in TARGET_MAP[target].supported_toolchains:
 | 
			
		||||
                if toolchain not in unique_supported_toolchains:
 | 
			
		||||
                    unique_supported_toolchains.append(toolchain)
 | 
			
		||||
    else:
 | 
			
		||||
        for target in release_targets:
 | 
			
		||||
            for toolchain in target[1]:
 | 
			
		||||
                if toolchain not in unique_supported_toolchains:
 | 
			
		||||
                    unique_supported_toolchains.append(toolchain)
 | 
			
		||||
 | 
			
		||||
    return unique_supported_toolchains
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def mcu_toolchain_matrix(verbose_html=False, platform_filter=None):
 | 
			
		||||
def mcu_toolchain_matrix(verbose_html=False, platform_filter=None, release_version='5'):
 | 
			
		||||
    """  Shows target map using prettytable """
 | 
			
		||||
    unique_supported_toolchains = get_unique_supported_toolchains()
 | 
			
		||||
    from prettytable import PrettyTable # Only use it in this function so building works without extra modules
 | 
			
		||||
 | 
			
		||||
    if isinstance(release_version, basestring):
 | 
			
		||||
        # Force release_version to lowercase if it is a string
 | 
			
		||||
        release_version = release_version.lower()
 | 
			
		||||
    else:
 | 
			
		||||
        # Otherwise default to printing all known targets and toolchains
 | 
			
		||||
        release_version = 'all'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    version_release_targets = {}
 | 
			
		||||
    version_release_target_names = {}
 | 
			
		||||
 | 
			
		||||
    for version in RELEASE_VERSIONS:
 | 
			
		||||
        version_release_targets[version] = get_mbed_official_release(version)
 | 
			
		||||
        version_release_target_names[version] = [x[0] for x in version_release_targets[version]]
 | 
			
		||||
 | 
			
		||||
    if release_version in RELEASE_VERSIONS:
 | 
			
		||||
        release_targets = version_release_targets[release_version]
 | 
			
		||||
    else:
 | 
			
		||||
        release_targets = None
 | 
			
		||||
 | 
			
		||||
    unique_supported_toolchains = get_unique_supported_toolchains(release_targets)
 | 
			
		||||
    prepend_columns = ["Target"] + ["mbed OS %s" % x for x in RELEASE_VERSIONS]
 | 
			
		||||
 | 
			
		||||
    # All tests status table print
 | 
			
		||||
    columns = ["Target"] + unique_supported_toolchains
 | 
			
		||||
    pt = PrettyTable(["Target"] + unique_supported_toolchains)
 | 
			
		||||
    columns = prepend_columns + unique_supported_toolchains
 | 
			
		||||
    pt = PrettyTable(columns)
 | 
			
		||||
    # Align table
 | 
			
		||||
    for col in columns:
 | 
			
		||||
        pt.align[col] = "c"
 | 
			
		||||
| 
						 | 
				
			
			@ -671,7 +805,15 @@ def mcu_toolchain_matrix(verbose_html=False, platform_filter=None):
 | 
			
		|||
 | 
			
		||||
    perm_counter = 0
 | 
			
		||||
    target_counter = 0
 | 
			
		||||
    for target in sorted(TARGET_NAMES):
 | 
			
		||||
 | 
			
		||||
    target_names = []
 | 
			
		||||
 | 
			
		||||
    if release_targets:
 | 
			
		||||
        target_names = [x[0] for x in release_targets]
 | 
			
		||||
    else:
 | 
			
		||||
        target_names = TARGET_NAMES
 | 
			
		||||
 | 
			
		||||
    for target in sorted(target_names):
 | 
			
		||||
        if platform_filter is not None:
 | 
			
		||||
            # FIlter out platforms using regex
 | 
			
		||||
            if re.search(platform_filter, target) is None:
 | 
			
		||||
| 
						 | 
				
			
			@ -679,6 +821,14 @@ def mcu_toolchain_matrix(verbose_html=False, platform_filter=None):
 | 
			
		|||
        target_counter += 1
 | 
			
		||||
 | 
			
		||||
        row = [target]  # First column is platform name
 | 
			
		||||
 | 
			
		||||
        for version in RELEASE_VERSIONS:
 | 
			
		||||
            if target in version_release_target_names[version]:
 | 
			
		||||
                text = "Supported"
 | 
			
		||||
            else:
 | 
			
		||||
                text = "-"
 | 
			
		||||
            row.append(text)
 | 
			
		||||
 | 
			
		||||
        for unique_toolchain in unique_supported_toolchains:
 | 
			
		||||
            if unique_toolchain in TARGET_MAP[target].supported_toolchains:
 | 
			
		||||
                text = "Supported"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@ sys.path.insert(0, ROOT)
 | 
			
		|||
 | 
			
		||||
from tools.build_api import build_mbed_libs
 | 
			
		||||
from tools.build_api import write_build_report
 | 
			
		||||
from tools.build_api import get_mbed_official_release
 | 
			
		||||
from tools.targets import TARGET_MAP, TARGET_NAMES
 | 
			
		||||
from tools.test_exporters import ReportExporter, ResultExporterType
 | 
			
		||||
from tools.test_api import SingleTestRunner
 | 
			
		||||
| 
						 | 
				
			
			@ -35,10 +36,7 @@ from tools.test_api import singletest_in_cli_mode
 | 
			
		|||
from tools.paths import TEST_DIR, MBED_LIBRARIES
 | 
			
		||||
from tools.tests import TEST_MAP
 | 
			
		||||
 | 
			
		||||
OFFICIAL_MBED_LIBRARY_BUILD = (
 | 
			
		||||
    tuple(tuple([TARGET_MAP[target].name, tuple(TARGET_MAP[target].supported_toolchains)]) for target in TARGET_NAMES if TARGET_MAP[target].release)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
OFFICIAL_MBED_LIBRARY_BUILD = get_mbed_official_release('2')
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    parser = OptionParser()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -167,6 +167,9 @@ class ToolException(Exception):
 | 
			
		|||
class NotSupportedException(Exception):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
class InvalidReleaseTargetException(Exception):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
def split_path(path):
 | 
			
		||||
    base, file = split(path)
 | 
			
		||||
    name, ext = splitext(file)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue