mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #3695 from c1728p9/fix_invalid_device_names
Enforce device_name is valid in targets.jsonpull/3734/head
commit
34de26dc3a
|
|
@ -5,6 +5,7 @@ script:
|
||||||
- make -C events/equeue test clean
|
- make -C events/equeue test clean
|
||||||
- PYTHONPATH=. python tools/test/config_test/config_test.py
|
- PYTHONPATH=. python tools/test/config_test/config_test.py
|
||||||
- PYTHONPATH=. python tools/test/build_api/build_api_test.py
|
- PYTHONPATH=. python tools/test/build_api/build_api_test.py
|
||||||
|
- PYTHONPATH=. python tools/test/targets/target_test.py
|
||||||
- python tools/test/pylint.py
|
- python tools/test/pylint.py
|
||||||
- py.test tools/test/toolchains/api.py
|
- py.test tools/test/toolchains/api.py
|
||||||
- python tools/test/memap/memap_test.py
|
- python tools/test/memap/memap_test.py
|
||||||
|
|
|
||||||
|
|
@ -226,7 +226,7 @@
|
||||||
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE"],
|
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE"],
|
||||||
"default_lib": "small",
|
"default_lib": "small",
|
||||||
"release_versions": ["2"],
|
"release_versions": ["2"],
|
||||||
"device_name": "lpc1549"
|
"device_name": "LPC1549JBD64"
|
||||||
},
|
},
|
||||||
"LPC1768": {
|
"LPC1768": {
|
||||||
"inherits": ["LPCTarget"],
|
"inherits": ["LPCTarget"],
|
||||||
|
|
@ -632,7 +632,7 @@
|
||||||
"detect_code": ["0217"],
|
"detect_code": ["0217"],
|
||||||
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
|
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"],
|
||||||
"device_name" : "MK66FN256xxx15"
|
"device_name" : "MK82FN256xxx15"
|
||||||
},
|
},
|
||||||
"NUCLEO_F030R8": {
|
"NUCLEO_F030R8": {
|
||||||
"supported_form_factors": ["ARDUINO", "MORPHO"],
|
"supported_form_factors": ["ARDUINO", "MORPHO"],
|
||||||
|
|
@ -1073,7 +1073,7 @@
|
||||||
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2","USBHOST_OTHER"],
|
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2","USBHOST_OTHER"],
|
||||||
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES", "TRNG"],
|
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES", "TRNG"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"],
|
||||||
"device_name": "stm32l476rg"
|
"device_name": "STM32L476RG"
|
||||||
},
|
},
|
||||||
"NUCLEO_L486RG": {
|
"NUCLEO_L486RG": {
|
||||||
"supported_form_factors": ["ARDUINO", "MORPHO"],
|
"supported_form_factors": ["ARDUINO", "MORPHO"],
|
||||||
|
|
@ -1086,7 +1086,7 @@
|
||||||
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2","USBHOST_OTHER"],
|
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2","USBHOST_OTHER"],
|
||||||
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES", "TRNG"],
|
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES", "TRNG"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"],
|
||||||
"device_name": "stm32l486rg"
|
"device_name": "STM32L486RG"
|
||||||
},
|
},
|
||||||
"STM32F3XX": {
|
"STM32F3XX": {
|
||||||
"inherits": ["Target"],
|
"inherits": ["Target"],
|
||||||
|
|
@ -1240,7 +1240,7 @@
|
||||||
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2", "USBHOST_OTHER"],
|
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2", "USBHOST_OTHER"],
|
||||||
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES", "TRNG"],
|
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES", "TRNG"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"],
|
||||||
"device_name": "stm32l476vg"
|
"device_name": "STM32L476VG"
|
||||||
},
|
},
|
||||||
"MTS_MDOT_F405RG": {
|
"MTS_MDOT_F405RG": {
|
||||||
"inherits": ["Target"],
|
"inherits": ["Target"],
|
||||||
|
|
@ -1828,8 +1828,7 @@
|
||||||
"macros": ["CMSDK_BEETLE", "WSF_MS_PER_TICK=20", "WSF_TOKEN_ENABLED=FALSE", "WSF_TRACE_ENABLED=TRUE", "WSF_ASSERT_ENABLED=FALSE", "WSF_PRINTF_MAX_LEN=128", "ASIC", "CONFIG_HOST_REV=0x20", "CONFIG_ALLOW_DEEP_SLEEP=FALSE", "HCI_VS_TARGET", "CONFIG_ALLOW_SETTING_WRITE=TRUE", "WSF_MAX_HANDLERS=20", "NO_LEDS"],
|
"macros": ["CMSDK_BEETLE", "WSF_MS_PER_TICK=20", "WSF_TOKEN_ENABLED=FALSE", "WSF_TRACE_ENABLED=TRUE", "WSF_ASSERT_ENABLED=FALSE", "WSF_PRINTF_MAX_LEN=128", "ASIC", "CONFIG_HOST_REV=0x20", "CONFIG_ALLOW_DEEP_SLEEP=FALSE", "HCI_VS_TARGET", "CONFIG_ALLOW_SETTING_WRITE=TRUE", "WSF_MAX_HANDLERS=20", "NO_LEDS"],
|
||||||
"device_has": ["ANALOGIN", "CLCD", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SLEEP", "SPI"],
|
"device_has": ["ANALOGIN", "CLCD", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SLEEP", "SPI"],
|
||||||
"features": ["BLE"],
|
"features": ["BLE"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"]
|
||||||
"device_name": "beetle"
|
|
||||||
},
|
},
|
||||||
"RZ_A1H": {
|
"RZ_A1H": {
|
||||||
"supported_form_factors": ["ARDUINO"],
|
"supported_form_factors": ["ARDUINO"],
|
||||||
|
|
@ -1840,8 +1839,7 @@
|
||||||
"inherits": ["Target"],
|
"inherits": ["Target"],
|
||||||
"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"],
|
"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": ["LWIP"],
|
"features": ["LWIP"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"]
|
||||||
"device_name": "r7s721001"
|
|
||||||
},
|
},
|
||||||
"VK_RZ_A1H": {
|
"VK_RZ_A1H": {
|
||||||
"inherits": ["Target"],
|
"inherits": ["Target"],
|
||||||
|
|
@ -1853,8 +1851,7 @@
|
||||||
"device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
|
"device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
|
||||||
"features": ["LWIP"],
|
"features": ["LWIP"],
|
||||||
"default_lib": "std",
|
"default_lib": "std",
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"]
|
||||||
"device_name": "r7s721000"
|
|
||||||
},
|
},
|
||||||
"MAXWSNENV": {
|
"MAXWSNENV": {
|
||||||
"inherits": ["Target"],
|
"inherits": ["Target"],
|
||||||
|
|
@ -1873,8 +1870,7 @@
|
||||||
"extra_labels": ["Maxim", "MAX32600"],
|
"extra_labels": ["Maxim", "MAX32600"],
|
||||||
"supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
|
"supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
|
||||||
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
|
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"]
|
||||||
"device_name": "max326000x85"
|
|
||||||
},
|
},
|
||||||
"MAX32620HSP": {
|
"MAX32620HSP": {
|
||||||
"inherits": ["Target"],
|
"inherits": ["Target"],
|
||||||
|
|
@ -2253,7 +2249,6 @@
|
||||||
"macros": ["EFR32MG1P233F256GM48", "TRANSACTION_QUEUE_SIZE_SPI=4"],
|
"macros": ["EFR32MG1P233F256GM48", "TRANSACTION_QUEUE_SIZE_SPI=4"],
|
||||||
"supported_toolchains": ["GCC_ARM", "ARM", "uARM", "IAR"],
|
"supported_toolchains": ["GCC_ARM", "ARM", "uARM", "IAR"],
|
||||||
"release_versions": ["2", "5"],
|
"release_versions": ["2", "5"],
|
||||||
"device_name": "EFR32MG1P233F256GM48",
|
|
||||||
"public": false
|
"public": false
|
||||||
},
|
},
|
||||||
"EFR32MG1_BRD4150": {
|
"EFR32MG1_BRD4150": {
|
||||||
|
|
@ -2601,7 +2596,6 @@
|
||||||
"macros": ["CM3", "CPU_NCS36510", "TARGET_NCS36510", "LOAD_ADDRESS=0x3000"],
|
"macros": ["CM3", "CPU_NCS36510", "TARGET_NCS36510", "LOAD_ADDRESS=0x3000"],
|
||||||
"supported_toolchains": ["GCC_ARM", "ARM", "IAR"],
|
"supported_toolchains": ["GCC_ARM", "ARM", "IAR"],
|
||||||
"device_has": ["ANALOGIN", "SERIAL", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "LOWPOWERTIMER", "TRNG"],
|
"device_has": ["ANALOGIN", "SERIAL", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "LOWPOWERTIMER", "TRNG"],
|
||||||
"device_name": "NCS36510",
|
|
||||||
"release_versions": ["2", "5"]
|
"release_versions": ["2", "5"]
|
||||||
},
|
},
|
||||||
"NUMAKER_PFM_M453": {
|
"NUMAKER_PFM_M453": {
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,19 @@ class IAR(Exporter):
|
||||||
with open(def_loc, 'r') as f:
|
with open(def_loc, 'r') as f:
|
||||||
IAR_DEFS = json.load(f)
|
IAR_DEFS = json.load(f)
|
||||||
|
|
||||||
#supported targets have a device name and corresponding definition in
|
def _iar_support(tgt, iar_targets):
|
||||||
#iar_definitions.json
|
if "IAR" not in tgt.supported_toolchains:
|
||||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
return False
|
||||||
if hasattr(obj, 'device_name') and
|
if hasattr(tgt, 'device_name') and tgt.device_name in iar_targets:
|
||||||
obj.device_name in IAR_DEFS.keys() and "IAR" in obj.supported_toolchains]
|
return True
|
||||||
|
if tgt.name in iar_targets:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
#supported targets have a name or device_name which maps to a definition
|
||||||
|
#in iar_definitions.json
|
||||||
|
TARGETS = [target for target, obj in TARGET_MAP.iteritems() if
|
||||||
|
_iar_support(obj, IAR_DEFS.keys())]
|
||||||
|
|
||||||
def iar_groups(self, grouped_src):
|
def iar_groups(self, grouped_src):
|
||||||
"""Return a namedtuple of group info
|
"""Return a namedtuple of group info
|
||||||
|
|
@ -56,7 +64,9 @@ class IAR(Exporter):
|
||||||
|
|
||||||
def iar_device(self):
|
def iar_device(self):
|
||||||
"""Retrieve info from iar_definitions.json"""
|
"""Retrieve info from iar_definitions.json"""
|
||||||
device_name = TARGET_MAP[self.target].device_name
|
tgt = TARGET_MAP[self.target]
|
||||||
|
device_name = (tgt.device_name if hasattr(tgt, "device_name") else
|
||||||
|
tgt.name)
|
||||||
device_info = self.IAR_DEFS[device_name]
|
device_info = self.IAR_DEFS[device_name]
|
||||||
iar_defaults ={
|
iar_defaults ={
|
||||||
"OGChipSelectEditMenu": "",
|
"OGChipSelectEditMenu": "",
|
||||||
|
|
|
||||||
|
|
@ -133,14 +133,14 @@
|
||||||
"STM32F091RC": {
|
"STM32F091RC": {
|
||||||
"OGChipSelectEditMenu": "STM32F091RC\tST STM32F091RC"
|
"OGChipSelectEditMenu": "STM32F091RC\tST STM32F091RC"
|
||||||
},
|
},
|
||||||
"r7s721001": {
|
"RZ_A1H": {
|
||||||
"OGChipSelectEditMenu": "R7S721001\tRenesas R7S721001",
|
"OGChipSelectEditMenu": "R7S721001\tRenesas R7S721001",
|
||||||
"CoreVariant": 37,
|
"CoreVariant": 37,
|
||||||
"GFPUCoreSlave": 37,
|
"GFPUCoreSlave": 37,
|
||||||
"GBECoreSlave": 37,
|
"GBECoreSlave": 37,
|
||||||
"NEON":1
|
"NEON":1
|
||||||
},
|
},
|
||||||
"r7s721000": {
|
"VK_RZ_A1H": {
|
||||||
"OGChipSelectEditMenu": "R7S721000\tRenesas R7S721000",
|
"OGChipSelectEditMenu": "R7S721000\tRenesas R7S721000",
|
||||||
"CoreVariant": 37,
|
"CoreVariant": 37,
|
||||||
"GFPUCoreSlave": 37,
|
"GFPUCoreSlave": 37,
|
||||||
|
|
@ -153,7 +153,7 @@
|
||||||
"STM32F031K6": {
|
"STM32F031K6": {
|
||||||
"OGChipSelectEditMenu": "STM32F031x6\tST STM32F031x6"
|
"OGChipSelectEditMenu": "STM32F031x6\tST STM32F031x6"
|
||||||
},
|
},
|
||||||
"max326000x85": {
|
"MAX32600MBED": {
|
||||||
"OGChipSelectEditMenu": "MAX32600x85\tMaxim MAX32600x85"
|
"OGChipSelectEditMenu": "MAX32600x85\tMaxim MAX32600x85"
|
||||||
},
|
},
|
||||||
"STM32F407VG": {
|
"STM32F407VG": {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
mbed
|
||||||
|
Copyright (c) 2017-2017 ARM Limited
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from os.path import join, abspath, dirname
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
# Be sure that the tools directory is in the search path
|
||||||
|
ROOT = abspath(join(dirname(__file__), "..", "..", ".."))
|
||||||
|
sys.path.insert(0, ROOT)
|
||||||
|
|
||||||
|
from tools.targets import TARGETS
|
||||||
|
from tools.arm_pack_manager import Cache
|
||||||
|
|
||||||
|
class TestTargets(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_device_name(self):
|
||||||
|
"""Assert device name is in a pack"""
|
||||||
|
cache = Cache(True, True)
|
||||||
|
named_targets = (target for target in TARGETS if
|
||||||
|
hasattr(target, "device_name"))
|
||||||
|
for target in named_targets:
|
||||||
|
self.assertTrue(target.device_name in cache.index,
|
||||||
|
"Target %s contains invalid device_name %s" %
|
||||||
|
(target.name, target.device_name))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
Loading…
Reference in New Issue