diff --git a/tools/export/cmsis/__init__.py b/tools/export/cmsis/__init__.py
index e0403aedf2..af6f36b700 100644
--- a/tools/export/cmsis/__init__.py
+++ b/tools/export/cmsis/__init__.py
@@ -36,16 +36,21 @@ class DeviceCMSIS():
target_info = self.check_supported(target)
if not target_info:
raise TargetNotSupportedException("Target not supported in CMSIS pack")
- self.url = target_info['pdsc_file']
- self.pdsc_url, self.pdsc_id, _ = split_path(self.url)
- self.pack_url, self.pack_id, _ = split_path(target_info['pack_file'])
+ self.pack_url = target_info['from_pack']['url']
+ self.pack_id = "{}.{}.{}".format(
+ target_info['from_pack']['vendor'],
+ target_info['from_pack']['pack'],
+ target_info['from_pack']['version']
+ )
self.dname = target_info["_cpu_name"]
self.core = target_info["_core"]
- self.dfpu = target_info['processor']['fpu']
- self.debug, self.dvendor = self.vendor_debug(target_info['vendor'])
+ try:
+ self.dfpu = target_info['processor']['Symmetric']['fpu']
+ except KeyError:
+ self.dfpu = target_info['processor']['Asymmetric']['fpu']
+ self.debug, self.dvendor = self.vendor_debug(target_info['from_pack']['vendor'])
self.dendian = target_info['processor'].get('endianness','Little-endian')
self.debug_svd = target_info.get('debug', '')
- self.compile_header = target_info['compile']['header']
self.target_info = target_info
@staticmethod
diff --git a/tools/export/uvision/__init__.py b/tools/export/uvision/__init__.py
index 4a2a114ed2..bcccb79a64 100644
--- a/tools/export/uvision/__init__.py
+++ b/tools/export/uvision/__init__.py
@@ -26,7 +26,6 @@ class DeviceUvision(DeviceCMSIS):
self.svd = ''
if self.debug_svd:
self.svd = dev_format.format(self.dname, self.debug_svd)
- self.reg_file = dev_format.format(self.dname, self.compile_header)
self.debug_interface = self.uv_debug()
self.flash_dll = self.generate_flash_dll()
@@ -73,14 +72,10 @@ class DeviceUvision(DeviceCMSIS):
'''
fl_count = 0
- def get_mem_no_x(mem_str):
- mem_reg = "\dx(\w+)"
- m = re.search(mem_reg, mem_str)
- return m.group(1) if m else None
-
RAMS = [
- (get_mem_no_x(info["start"]), get_mem_no_x(info["size"]))
- for mem, info in self.target_info["memory"].items() if "RAM" in mem
+ (info["start"], info["size"])
+ for mem, info in self.target_info["memories"].items()
+ if "RAM" in mem
]
format_str = (
"UL2CM3(-S0 -C0 -P0 -FD{ramstart}"
@@ -92,24 +87,25 @@ class DeviceUvision(DeviceCMSIS):
if len(RAMS) >= 1:
ramstart = RAMS[0][0]
extra_flags = []
- for name, info in self.target_info["algorithm"].items():
- if not name or not info:
+ for info in self.target_info["algorithms"]:
+ if not info:
continue
- if int(info["default"]) == 0:
+ if not info["default"]:
continue
+ name = info['file_name']
name_reg = "\w*/([\w_]+)\.flm"
m = re.search(name_reg, name.lower())
fl_name = m.group(1) if m else None
name_flag = "-FF" + str(fl_count) + fl_name
- start = get_mem_no_x(info["start"])
- size = get_mem_no_x(info["size"])
+ start = '{:x}'.format(info["start"])
+ size = '{:x}'.format(info["size"])
rom_start_flag = "-FS" + str(fl_count) + str(start)
rom_size_flag = "-FL" + str(fl_count) + str(size)
if info["ramstart"] is not None and info["ramsize"] is not None:
- ramstart = get_mem_no_x(info["ramstart"])
- ramsize = get_mem_no_x(info["ramsize"])
+ ramstart = '{:x}'.format(info["ramstart"])
+ ramsize = '{:x}'.format(info["ramsize"])
path_flag = "-FP{}($$Device:{}${})".format(
str(fl_count), self.dname, name
diff --git a/tools/export/uvision/uvision.tmpl b/tools/export/uvision/uvision.tmpl
index 946f59d766..767ace3489 100644
--- a/tools/export/uvision/uvision.tmpl
+++ b/tools/export/uvision/uvision.tmpl
@@ -25,7 +25,7 @@
{{device.flash_dll}}
0
- {{device.reg_file}}
+