Skip to content

Commit 34de26d

Browse files
authored
Merge pull request #3695 from c1728p9/fix_invalid_device_names
Enforce device_name is valid in targets.json
2 parents 59c2c4b + 32b9ada commit 34de26d

File tree

5 files changed

+72
-24
lines changed

5 files changed

+72
-24
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ script:
55
- make -C events/equeue test clean
66
- PYTHONPATH=. python tools/test/config_test/config_test.py
77
- PYTHONPATH=. python tools/test/build_api/build_api_test.py
8+
- PYTHONPATH=. python tools/test/targets/target_test.py
89
- python tools/test/pylint.py
910
- py.test tools/test/toolchains/api.py
1011
- python tools/test/memap/memap_test.py

targets/targets.json

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@
226226
"device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE"],
227227
"default_lib": "small",
228228
"release_versions": ["2"],
229-
"device_name": "lpc1549"
229+
"device_name": "LPC1549JBD64"
230230
},
231231
"LPC1768": {
232232
"inherits": ["LPCTarget"],
@@ -632,7 +632,7 @@
632632
"detect_code": ["0217"],
633633
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
634634
"release_versions": ["2", "5"],
635-
"device_name" : "MK66FN256xxx15"
635+
"device_name" : "MK82FN256xxx15"
636636
},
637637
"NUCLEO_F030R8": {
638638
"supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -1073,7 +1073,7 @@
10731073
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2","USBHOST_OTHER"],
10741074
"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"],
10751075
"release_versions": ["2", "5"],
1076-
"device_name": "stm32l476rg"
1076+
"device_name": "STM32L476RG"
10771077
},
10781078
"NUCLEO_L486RG": {
10791079
"supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -1086,7 +1086,7 @@
10861086
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2","USBHOST_OTHER"],
10871087
"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"],
10881088
"release_versions": ["2", "5"],
1089-
"device_name": "stm32l486rg"
1089+
"device_name": "STM32L486RG"
10901090
},
10911091
"STM32F3XX": {
10921092
"inherits": ["Target"],
@@ -1240,7 +1240,7 @@
12401240
"macros": ["TRANSACTION_QUEUE_SIZE_SPI=2", "USBHOST_OTHER"],
12411241
"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"],
12421242
"release_versions": ["2", "5"],
1243-
"device_name": "stm32l476vg"
1243+
"device_name": "STM32L476VG"
12441244
},
12451245
"MTS_MDOT_F405RG": {
12461246
"inherits": ["Target"],
@@ -1828,8 +1828,7 @@
18281828
"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"],
18291829
"device_has": ["ANALOGIN", "CLCD", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SLEEP", "SPI"],
18301830
"features": ["BLE"],
1831-
"release_versions": ["2", "5"],
1832-
"device_name": "beetle"
1831+
"release_versions": ["2", "5"]
18331832
},
18341833
"RZ_A1H": {
18351834
"supported_form_factors": ["ARDUINO"],
@@ -1840,8 +1839,7 @@
18401839
"inherits": ["Target"],
18411840
"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"],
18421841
"features": ["LWIP"],
1843-
"release_versions": ["2", "5"],
1844-
"device_name": "r7s721001"
1842+
"release_versions": ["2", "5"]
18451843
},
18461844
"VK_RZ_A1H": {
18471845
"inherits": ["Target"],
@@ -1853,8 +1851,7 @@
18531851
"device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
18541852
"features": ["LWIP"],
18551853
"default_lib": "std",
1856-
"release_versions": ["2", "5"],
1857-
"device_name": "r7s721000"
1854+
"release_versions": ["2", "5"]
18581855
},
18591856
"MAXWSNENV": {
18601857
"inherits": ["Target"],
@@ -1873,8 +1870,7 @@
18731870
"extra_labels": ["Maxim", "MAX32600"],
18741871
"supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
18751872
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
1876-
"release_versions": ["2", "5"],
1877-
"device_name": "max326000x85"
1873+
"release_versions": ["2", "5"]
18781874
},
18791875
"MAX32620HSP": {
18801876
"inherits": ["Target"],
@@ -2253,7 +2249,6 @@
22532249
"macros": ["EFR32MG1P233F256GM48", "TRANSACTION_QUEUE_SIZE_SPI=4"],
22542250
"supported_toolchains": ["GCC_ARM", "ARM", "uARM", "IAR"],
22552251
"release_versions": ["2", "5"],
2256-
"device_name": "EFR32MG1P233F256GM48",
22572252
"public": false
22582253
},
22592254
"EFR32MG1_BRD4150": {
@@ -2601,7 +2596,6 @@
26012596
"macros": ["CM3", "CPU_NCS36510", "TARGET_NCS36510", "LOAD_ADDRESS=0x3000"],
26022597
"supported_toolchains": ["GCC_ARM", "ARM", "IAR"],
26032598
"device_has": ["ANALOGIN", "SERIAL", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "LOWPOWERTIMER", "TRNG"],
2604-
"device_name": "NCS36510",
26052599
"release_versions": ["2", "5"]
26062600
},
26072601
"NUMAKER_PFM_M453": {

tools/export/iar/__init__.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,19 @@ class IAR(Exporter):
2525
with open(def_loc, 'r') as f:
2626
IAR_DEFS = json.load(f)
2727

28-
#supported targets have a device name and corresponding definition in
29-
#iar_definitions.json
30-
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
31-
if hasattr(obj, 'device_name') and
32-
obj.device_name in IAR_DEFS.keys() and "IAR" in obj.supported_toolchains]
28+
def _iar_support(tgt, iar_targets):
29+
if "IAR" not in tgt.supported_toolchains:
30+
return False
31+
if hasattr(tgt, 'device_name') and tgt.device_name in iar_targets:
32+
return True
33+
if tgt.name in iar_targets:
34+
return True
35+
return False
36+
37+
#supported targets have a name or device_name which maps to a definition
38+
#in iar_definitions.json
39+
TARGETS = [target for target, obj in TARGET_MAP.iteritems() if
40+
_iar_support(obj, IAR_DEFS.keys())]
3341

3442
def iar_groups(self, grouped_src):
3543
"""Return a namedtuple of group info
@@ -56,7 +64,9 @@ def iar_groups(self, grouped_src):
5664

5765
def iar_device(self):
5866
"""Retrieve info from iar_definitions.json"""
59-
device_name = TARGET_MAP[self.target].device_name
67+
tgt = TARGET_MAP[self.target]
68+
device_name = (tgt.device_name if hasattr(tgt, "device_name") else
69+
tgt.name)
6070
device_info = self.IAR_DEFS[device_name]
6171
iar_defaults ={
6272
"OGChipSelectEditMenu": "",

tools/export/iar/iar_definitions.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,14 @@
133133
"STM32F091RC": {
134134
"OGChipSelectEditMenu": "STM32F091RC\tST STM32F091RC"
135135
},
136-
"r7s721001": {
136+
"RZ_A1H": {
137137
"OGChipSelectEditMenu": "R7S721001\tRenesas R7S721001",
138138
"CoreVariant": 37,
139139
"GFPUCoreSlave": 37,
140140
"GBECoreSlave": 37,
141141
"NEON":1
142142
},
143-
"r7s721000": {
143+
"VK_RZ_A1H": {
144144
"OGChipSelectEditMenu": "R7S721000\tRenesas R7S721000",
145145
"CoreVariant": 37,
146146
"GFPUCoreSlave": 37,
@@ -153,7 +153,7 @@
153153
"STM32F031K6": {
154154
"OGChipSelectEditMenu": "STM32F031x6\tST STM32F031x6"
155155
},
156-
"max326000x85": {
156+
"MAX32600MBED": {
157157
"OGChipSelectEditMenu": "MAX32600x85\tMaxim MAX32600x85"
158158
},
159159
"STM32F407VG": {

tools/test/targets/target_test.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env python
2+
"""
3+
mbed
4+
Copyright (c) 2017-2017 ARM Limited
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
"""
18+
19+
import sys
20+
from os.path import join, abspath, dirname
21+
import unittest
22+
23+
# Be sure that the tools directory is in the search path
24+
ROOT = abspath(join(dirname(__file__), "..", "..", ".."))
25+
sys.path.insert(0, ROOT)
26+
27+
from tools.targets import TARGETS
28+
from tools.arm_pack_manager import Cache
29+
30+
class TestTargets(unittest.TestCase):
31+
32+
def test_device_name(self):
33+
"""Assert device name is in a pack"""
34+
cache = Cache(True, True)
35+
named_targets = (target for target in TARGETS if
36+
hasattr(target, "device_name"))
37+
for target in named_targets:
38+
self.assertTrue(target.device_name in cache.index,
39+
"Target %s contains invalid device_name %s" %
40+
(target.name, target.device_name))
41+
42+
if __name__ == '__main__':
43+
unittest.main()

0 commit comments

Comments
 (0)