diff --git a/targets/targets.json b/targets/targets.json index 0d7e0a913a..db7b12da51 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -2364,6 +2364,32 @@ "inherits": ["Target"], "core": "Cortex-M3", "extra_labels": ["ONSEMI"], + "config": { + "mac-addr-low": { + "help": "Lower 32 bits of the MAC extended address", + "value": "0x12345678" + }, + "mac-addr-high": { + "help": "Higher 32 bits of the MAC extended address", + "value": "0xACDE4800" + }, + "32KHz-clk-trim": { + "help": "32KHz clock trim", + "value": "0x3A" + }, + "32MHz-clk-trim": { + "help": "32MHz clock trim", + "value": "0x16" + }, + "rssi-trim": { + "help": "RSSI trim", + "value": "0x3D" + }, + "txtune-trim": { + "help": "TX tune trim", + "value": "0x12" + } + }, "post_binary_hook": {"function": "NCS36510TargetCode.ncs36510_addfib"}, "macros": ["CM3", "CPU_NCS36510", "TARGET_NCS36510", "LOAD_ADDRESS=0x3000"], "supported_toolchains": ["GCC_ARM", "ARM", "IAR"], diff --git a/tools/add_fib.py b/tools/add_fib.py index 173ca0544b..f884a118c5 100644 --- a/tools/add_fib.py +++ b/tools/add_fib.py @@ -15,8 +15,7 @@ from __future__ import print_function import itertools import binascii import intelhex -import json - +from tools.config import Config FIB_BASE = 0x2000 FLASH_BASE = 0x3000 @@ -155,21 +154,30 @@ def add_fib_at_start(arginput): for i in range(fib_start + dummy_fib_size + fib_size, trim_area_start): output_hex_file[i] = 0xFF - # add trim data from json - with open('./mbed-os/targets/TARGET_ONSEMI/TARGET_NCS36510/ncs36510_user_trim.json') as json_data: - trimdata = json.load(json_data) - mac_addr_low = int(trimdata["mac-addr-low"], 16) - mac_addr_high = int(trimdata["mac-addr-high"], 16) - clk_32k_trim = int(trimdata["32KHz-clk-trim"], 16) - clk_32m_trim = int(trimdata["32MHz-clk-trim"], 16) - rssi_trim = int(trimdata["rssi-trim"], 16) - txtune = int(trimdata["txtune-trim"], 16) + # Read in configuration data from the config parameter in targets.json + configData = Config('NCS36510') + paramData = configData.get_target_config_data() + for v in paramData.values(): + if (v.name == "target.mac-addr-high"): + mac_addr_high = int(v.value, 16) + elif (v.name == "target.mac-addr-low"): + mac_addr_low = int(v.value,16) + elif (v.name == "target.32KHz-clk-trim"): + clk_32k_trim = int(v.value,16) + elif (v.name == "target.32MHz-clk-trim"): + clk_32m_trim = int(v.value,16) + elif (v.name == "target.rssi-trim"): + rssi = int(v.value,16) + elif (v.name == "target.txtune-trim"): + txtune = int(v.value,16) + else: + print("Not a valid param") output_hex_file[trim_area_start + 0] = mac_addr_low & 0xFF output_hex_file[trim_area_start + 1] = (mac_addr_low >> 8) & 0xFF output_hex_file[trim_area_start + 2] = (mac_addr_low >> 16) & 0xFF output_hex_file[trim_area_start + 3] = (mac_addr_low >> 24) & 0xFF - + output_hex_file[trim_area_start + 4] = mac_addr_high & 0xFF output_hex_file[trim_area_start + 5] = (mac_addr_high >> 8) & 0xFF output_hex_file[trim_area_start + 6] = (mac_addr_high >> 16) & 0xFF @@ -185,16 +193,16 @@ def add_fib_at_start(arginput): output_hex_file[trim_area_start + 14] = (clk_32m_trim >> 16) & 0xFF output_hex_file[trim_area_start + 15] = (clk_32m_trim >> 24) & 0xFF - output_hex_file[trim_area_start + 16] = rssi_trim & 0xFF - output_hex_file[trim_area_start + 17] = (rssi_trim >> 8) & 0xFF - output_hex_file[trim_area_start + 18] = (rssi_trim >> 16) & 0xFF - output_hex_file[trim_area_start + 19] = (rssi_trim >> 24) & 0xFF + output_hex_file[trim_area_start + 16] = rssi & 0xFF + output_hex_file[trim_area_start + 17] = (rssi >> 8) & 0xFF + output_hex_file[trim_area_start + 18] = (rssi >> 16) & 0xFF + output_hex_file[trim_area_start + 19] = (rssi >> 24) & 0xFF output_hex_file[trim_area_start + 20] = txtune & 0xFF output_hex_file[trim_area_start + 21] = (txtune >> 8) & 0xFF output_hex_file[trim_area_start + 22] = (txtune >> 16) & 0xFF output_hex_file[trim_area_start + 23] = (txtune >> 24) & 0xFF - + # pad the rest of the area with 0xFF for i in range(trim_area_start + trim_size, user_code_start): output_hex_file[i] = 0xFF