[TI] Resolve linker reenable ci (#28869)
* Update Example Applications with proper non-ota linker command files
* Re-enable CI For TI platforms
* Restyled by gn
* Resolve CI Lighting app check
---------
Co-authored-by: Restyled.io <commits@restyled.io>
diff --git a/.github/workflows/examples-cc13x2x7_26x2x7.yaml b/.github/workflows/examples-cc13x2x7_26x2x7.yaml
index 608465b..91f1107 100644
--- a/.github/workflows/examples-cc13x2x7_26x2x7.yaml
+++ b/.github/workflows/examples-cc13x2x7_26x2x7.yaml
@@ -33,10 +33,7 @@
BUILD_TYPE: gn_cc26x2x7
runs-on: ubuntu-latest
- # This CI is disabled because running out of flash and a solution was not found in time, see https://github.com/project-chip/connectedhomeip/pull/26186
- # An issue was opened at https://github.com/project-chip/connectedhomeip/issues/26957
- # TODO : Enable this once we have a way to run without out of flash failure or remove platform if it cannot support the SDK
- if: github.actor != 'restyled-io[bot]' && false
+ if: github.actor != 'restyled-io[bot]'
container:
image: ghcr.io/project-chip/chip-build-ti:1
@@ -61,9 +58,10 @@
./scripts/build/build_examples.py \
--target ti-cc13x2x7_26x2x7-lock-mtd \
--target ti-cc13x2x7_26x2x7-pump-mtd \
- --target ti-cc13x2x7_26x2x7-lighting \
+ --target ti-cc13x2x7_26x2x7-lighting-mtd \
--target ti-cc13x2x7_26x2x7-pump-controller-mtd \
- --target ti-cc13x4_26x4-lighting \
+ --target ti-cc13x4_26x4-lighting-ftd \
+ --target ti-cc13x4_26x4-lighting-mtd \
--target ti-cc13x4_26x4-lock-ftd \
--target ti-cc13x4_26x4-lock-mtd \
--target ti-cc13x4_26x4-pump-mtd \
@@ -79,13 +77,13 @@
cc13x2_26x2 LP_CC2652R7 lock-mtd \
out/artifacts/ti-cc13x2x7_26x2x7-lock-mtd/chip-LP_CC2652R7-lock-example.out \
/tmp/bloat_reports/
- - name: Get Pump App size stats
+ - name: Get Pump MTD size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
cc13x2_26x2 LP_CC2652R7 pump-app \
out/artifacts/ti-cc13x2x7_26x2x7-pump-mtd/chip-LP_CC2652R7-pump-example.out \
/tmp/bloat_reports/
- - name: Get Pump Controller App size stats
+ - name: Get Pump Controller MTD size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
cc13x2_26x2 LP_CC2652R7 pump-controller-app \
@@ -109,17 +107,17 @@
cc13x4_26x4 LP_EM_CC1354P10_6 pump-app \
out/artifacts/ti-cc13x4_26x4-pump-mtd/chip-LP_EM_CC1354P10_6-pump-example.out \
/tmp/bloat_reports/
- - name: Get Pump Controller App size stats
+ - name: Get Pump Controller MTD size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
cc13x4_26x4 LP_EM_CC1354P10_6 pump-controller-app \
out/artifacts/ti-cc13x4_26x4-pump-controller-mtd/chip-LP_EM_CC1354P10_6-pump-controller-example.out \
/tmp/bloat_reports/
- - name: Get Lighting App size stats
+ - name: Get Lighting FTD size stats
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
cc13x4_26x4 LP_EM_CC1354P10_6 lighting-app \
- out/artifacts/ti-cc13x4_26x4-lighting/chip-LP_EM_CC1354P10_6-lighting-example.out \
+ out/artifacts/ti-cc13x4_26x4-lighting-mtd/chip-LP_EM_CC1354P10_6-lighting-example.out \
/tmp/bloat_reports/
- name: Uploading Size Reports
uses: ./.github/actions/upload-size-reports
diff --git a/examples/all-clusters-app/cc13x4_26x4/args.gni b/examples/all-clusters-app/cc13x4_26x4/args.gni
index c54b13b..5d97a9c 100644
--- a/examples/all-clusters-app/cc13x4_26x4/args.gni
+++ b/examples/all-clusters-app/cc13x4_26x4/args.gni
@@ -30,6 +30,7 @@
chip_enable_ota_requestor = false
openthread_external_platform = "${chip_root}/third_party/openthread/platforms/cc13x4_26x4:libopenthread-cc13x4_cc26x4"
+chip_openthread_ftd = true
# Disable CHIP Logging
#chip_progress_logging = false
diff --git a/examples/lighting-app/cc13x2x7_26x2x7/BUILD.gn b/examples/lighting-app/cc13x2x7_26x2x7/BUILD.gn
index aec1e66..86c9229 100644
--- a/examples/lighting-app/cc13x2x7_26x2x7/BUILD.gn
+++ b/examples/lighting-app/cc13x2x7_26x2x7/BUILD.gn
@@ -34,8 +34,6 @@
}
ti_sysconfig("sysconfig") {
- sources = [ "${project_dir}/chip.syscfg" ]
-
outputs = [
"ti_radio_config.c",
"ti_radio_config.h",
@@ -45,20 +43,18 @@
"ti_ble_config.h",
"ti_dmm_application_policy.c",
"ti_dmm_application_policy.h",
-
- # disabled until upstream generation is aligned
- #"tiop_config.h",
- #"tiop_config.c",
-
- # not traditional source files
- #"ti_utils_build_linker.cmd.genlibs",
- #"syscfg_c.rov.xs",
- #"ti_utils_runtime_model.gv",
- #"ti_utils_runtime_Makefile",
- #"ti_ble_app_config.opt",
- #"ti_build_config.opt",
]
+ if (chip_enable_ota_requestor) {
+ sources = [ "${project_dir}/chip_ota.syscfg" ]
+ } else {
+ sources = [ "${project_dir}/chip.syscfg" ]
+ outputs += [
+ "ti_devices_config.c",
+ "ti_devices_config.h",
+ ]
+ }
+
public_configs = [ ":sdk_dmm_config" ]
cflags = [
diff --git a/examples/lighting-app/cc13x2x7_26x2x7/args.gni b/examples/lighting-app/cc13x2x7_26x2x7/args.gni
index 9e64039..56695a5 100644
--- a/examples/lighting-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/lighting-app/cc13x2x7_26x2x7/args.gni
@@ -36,7 +36,7 @@
chip_progress_logging = false
#chip_detail_logging = false
-#chip_automation_logging = false
+chip_automation_logging = false
# BLE options
chip_config_network_layer_ble = true
diff --git a/examples/lighting-app/cc13x2x7_26x2x7/chip.syscfg b/examples/lighting-app/cc13x2x7_26x2x7/chip.syscfg
index 995ad22..d190703 100644
--- a/examples/lighting-app/cc13x2x7_26x2x7/chip.syscfg
+++ b/examples/lighting-app/cc13x2x7_26x2x7/chip.syscfg
@@ -84,8 +84,7 @@
CCFG[setting] = ccfgSettings[setting];
}
-// Disable CCFG generation, this is added by the BIM project
-CCFG.enableCodeGeneration = false;
+CCFG.enableCodeGeneration = true;
/* NVS */
NVS1.$name = "CONFIG_NVSINTERNAL";
diff --git a/examples/lighting-app/cc13x2x7_26x2x7/chip_ota.syscfg b/examples/lighting-app/cc13x2x7_26x2x7/chip_ota.syscfg
new file mode 100644
index 0000000..995ad22
--- /dev/null
+++ b/examples/lighting-app/cc13x2x7_26x2x7/chip_ota.syscfg
@@ -0,0 +1,238 @@
+/*
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+
+/* Modules */
+var AESCCM = scripting.addModule("/ti/drivers/AESCCM");
+var AESECB = scripting.addModule("/ti/drivers/AESECB");
+var Button = scripting.addModule("/ti/drivers/apps/Button");
+var LED = scripting.addModule("/ti/drivers/apps/LED");
+var NVS = scripting.addModule("/ti/drivers/NVS");
+var RF = scripting.addModule("/ti/drivers/RF");
+var RFDesign = scripting.addModule("ti/devices/radioconfig/rfdesign");
+var RFCustom = scripting.addModule("/ti/devices/radioconfig/custom");
+var TRNG = scripting.addModule("/ti/drivers/TRNG");
+var SHA2 = scripting.addModule("/ti/drivers/SHA2");
+var UART2 = scripting.addModule("/ti/drivers/UART2");
+var ble = scripting.addModule("/ti/ble5stack/ble");
+var dmm = scripting.addModule("/ti/dmm/dmm");
+var AESCTRDRBG = scripting.addModule("/ti/drivers/AESCTRDRBG");
+var ECDH = scripting.addModule("/ti/drivers/ECDH");
+
+/* Instances */
+var AESCCM1 = AESCCM.addInstance();
+var AESECB1 = AESECB.addInstance();
+var AESECB2 = AESECB.addInstance();
+var Button1 = Button.addInstance();
+var Button2 = Button.addInstance();
+var NVS1 = NVS.addInstance();
+var NVS2 = NVS.addInstance();
+var SHA21 = SHA2.addInstance();
+var LED1 = LED.addInstance();
+var LED2 = LED.addInstance();
+var TRNG1 = TRNG.addInstance();
+var TRNG2 = TRNG.addInstance();
+var TRNG3 = TRNG.addInstance();
+var UART2 = UART2.addInstance();
+var AESCTRDRBG1 = AESCTRDRBG.addInstance();
+var ECDH1 = ECDH.addInstance();
+
+AESCTRDRBG1.$name = "CONFIG_AESCTRDRBG_0";
+
+AESCCM1.$name = "CONFIG_AESCCM0";
+
+AESECB1.$name = "CONFIG_AESECB0";
+AESECB2.$name = "CONFIG_AESECB_1";
+
+ECDH1.$name = "CONFIG_ECDH0";
+
+/* Left Button */
+Button1.$name = "CONFIG_BTN_LEFT";
+Button1.$hardware = system.deviceData.board.components["BTN-1"];
+Button1.gpioPin.$name = "CONFIG_GPIO_BTN1";
+Button1.gpioPin.pull = "Pull Up";
+Button1.gpioPin.interruptTrigger = "Falling Edge";
+
+/* Left Button */
+Button2.$name = "CONFIG_BTN_RIGHT";
+Button2.$hardware = system.deviceData.board.components["BTN-2"];
+Button2.gpioPin.$name = "CONFIG_GPIO_BTN2";
+Button2.gpioPin.pull = "Pull Up";
+Button2.gpioPin.interruptTrigger = "Falling Edge";
+
+/* ======== CCFG ======== */
+var CCFG = scripting.addModule("/ti/devices/CCFG");
+const ccfgSettings = system.getScript("/ti/common/lprf_ccfg_settings.js").ccfgSettings;
+for(var setting in ccfgSettings)
+{
+ CCFG[setting] = ccfgSettings[setting];
+}
+
+// Disable CCFG generation, this is added by the BIM project
+CCFG.enableCodeGeneration = false;
+
+/* NVS */
+NVS1.$name = "CONFIG_NVSINTERNAL";
+NVS1.internalFlash.regionBase = 0xAA000;
+NVS1.internalFlash.regionSize = 0x4000;
+
+NVS2.$name = "CONFIG_NVSEXTERNAL";
+NVS2.nvsType = "External"; // NVS Region Type
+NVS2.$hardware = system.deviceData.board.components.MX25R8035F;
+
+/* RF */
+/* if an antenna component exists, assign it to the rf instance */
+if (system.deviceData.board && system.deviceData.board.components.RF) {
+ RF.$hardware = system.deviceData.board.components.RF;
+}
+
+const rfDesignSettings = system.getScript("/ti/common/lprf_rf_design_settings.js").rfDesignSettings;
+for(var setting in rfDesignSettings)
+{
+ RFDesign[setting] = rfDesignSettings[setting];
+}
+
+/* Handling for RF frontend characterization */
+if(RFDesign.rfDesign.match(/LP_CC2652PSIP/))
+{
+ RFCustom.ieee = ["ieee154p10"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154p10.codeExportConfig
+}
+else
+{
+ RFCustom.ieee = ["ieee154"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154.codeExportConfig
+}
+
+var cmdList = [
+ "cmdIeeeTx",
+ "cmdIeeeRx",
+ "cmdIeeeCsma",
+ "cmdIeeeEdScan",
+ "cmdIeeeRxAck",
+ "cmdTxTest"
+];
+
+rfCodeExportConfig.useConst = true;
+rfCodeExportConfig.useMulti = true;
+rfCodeExportConfig.symGenMethod = "Custom";
+
+const deviceId = system.deviceData.deviceId;
+
+// Add high PA options if present
+if(deviceId.match(/CC(265[12]R|2674R|1352R1|1354R)/))
+{
+ cmdList.push("cmdRadioSetup");
+ rfCodeExportConfig.cmdRadioSetup = "RF_cmdIeeeRadioSetup";
+}
+else if(deviceId.match(/CC(265[12]P|2674P|1352P)/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ rfCodeExportConfig.paExport = "combined";
+}
+else if(deviceId.match(/CC(265[34]|1354)P/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ // currently not characterized for high PA
+}
+else
+{
+ throw new Error("Could not match platform to any known platform types");
+}
+
+rfCodeExportConfig.cmdList_ieee_15_4 = cmdList;
+
+/* Red LED */
+LED1.$name = "CONFIG_LED_RED";
+LED1.$hardware = system.deviceData.board.components.LED_RED;
+LED1.gpioPin.$name = "CONFIG_GPIO_RLED";
+LED1.gpioPin.mode = "Output";
+LED1.gpioPin.callbackFunction = "";
+
+/* Green LED */
+LED2.$name = "CONFIG_LED_GREEN";
+LED2.$hardware = system.deviceData.board.components.LED_GREEN;
+LED2.gpioPin.$name = "CONFIG_GPIO_GLED";
+LED2.gpioPin.mode = "Output";
+LED2.gpioPin.callbackFunction = "";
+
+/* Debug UART */
+UART2.$hardware = system.deviceData.board.components.XDS110UART;
+UART2.$name = "CONFIG_UART2_DEBUG";
+
+/* TRNG */
+TRNG1.$name = "CONFIG_TRNG_0";
+TRNG2.$name = "CONFIG_TRNG_THREAD";
+TRNG3.$name = "CONFIG_TRNG_APP";
+
+/* BLE */
+ble.addressMode = "ADDRMODE_RP_WITH_PUBLIC_ID";
+ble.maxConnNum = 1;
+ble.numOfAdvSets = 1;
+ble.lockProject = true;
+ble.oneLibSizeOpt = true;
+ble.maxPDUSize = 255;
+ble.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param2";
+ble.connUpdateParamsPeripheral.$name = "ti_ble5stack_general_ble_conn_update_params0";
+ble.connUpdateParamsPeripheral.reqMinConnInt = 30;
+ble.connUpdateParamsPeripheral.reqMaxConnInt = 50;
+
+
+ble.advSet1.$name = "ti_ble5stack_broadcaster_advertisement_set0";
+ble.advSet1.advParam1.$name = "ti_ble5stack_broadcaster_advertisement_params0";
+
+/* DMM */
+dmm.project = "ti_thread_thermostat_remote_display";
+dmm.stackRoles = ["blePeripheral","threadFTD"];
+dmm.lockStackRoles = true;
+dmm.numApplicationStates = 10;
+dmm.applicationState0 = "ANY";
+dmm.applicationState1 = "DMMPOLICY_BLE_IDLE";
+dmm.applicationState2 = "DMMPOLICY_BLE_ADV";
+dmm.applicationState3 = "DMMPOLICY_BLE_CONNECTING";
+dmm.applicationState4 = "DMMPOLICY_BLE_HIGH_BANDWIDTH";
+dmm.applicationState5 = "DMMPOLICY_BLE_CONNECTED";
+dmm.applicationState6 = "DMMPOLICY_BLE_OAD";
+dmm.applicationState7 = "DMMPOLICY_THREAD_IDLE";
+dmm.applicationState8 = "DMMPOLICY_THREAD_LINK_EST";
+dmm.applicationState9 = "DMMPOLICY_THREAD_DATA";
+dmm.policyArray.create(4);
+dmm.policyArray[0].$name = "ti_dmm_policy_dmm_policy0";
+dmm.policyArray[0].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble0";
+dmm.policyArray[0].blePeripheral.applicationStates = ["applicationState6"];
+dmm.policyArray[0].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread0";
+dmm.policyArray[0].threadFTD.pause = "DMMPOLICY_PAUSED";
+dmm.policyArray[1].$name = "ti_dmm_policy_dmm_policy1";
+dmm.policyArray[1].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble1";
+dmm.policyArray[1].blePeripheral.applicationStates = ["applicationState3","applicationState4"];
+dmm.policyArray[1].blePeripheral.weight = 25;
+dmm.policyArray[1].blePeripheral.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_BLE_CONNECTION"];
+dmm.policyArray[1].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread1";
+dmm.policyArray[2].$name = "ti_dmm_policy_dmm_policy2";
+dmm.policyArray[2].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble2";
+dmm.policyArray[2].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread2";
+dmm.policyArray[2].threadFTD.weight = 30;
+dmm.policyArray[2].threadFTD.applicationStates = ["applicationState8"];
+dmm.policyArray[2].threadFTD.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];
+dmm.policyArray[3].$name = "ti_dmm_policy_dmm_policy3";
+dmm.policyArray[3].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble3";
+dmm.policyArray[3].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread3";
+dmm.policyArray[3].threadFTD.weight = 1;
diff --git a/examples/lock-app/cc13x2x7_26x2x7/BUILD.gn b/examples/lock-app/cc13x2x7_26x2x7/BUILD.gn
index 0bd2dfe..1bbb257 100644
--- a/examples/lock-app/cc13x2x7_26x2x7/BUILD.gn
+++ b/examples/lock-app/cc13x2x7_26x2x7/BUILD.gn
@@ -34,8 +34,6 @@
}
ti_sysconfig("sysconfig") {
- sources = [ "${project_dir}/chip.syscfg" ]
-
outputs = [
"ti_radio_config.c",
"ti_radio_config.h",
@@ -45,20 +43,18 @@
"ti_ble_config.h",
"ti_dmm_application_policy.c",
"ti_dmm_application_policy.h",
-
- # disabled until upstream generation is aligned
- #"tiop_config.h",
- #"tiop_config.c",
-
- # not traditional source files
- #"ti_utils_build_linker.cmd.genlibs",
- #"syscfg_c.rov.xs",
- #"ti_utils_runtime_model.gv",
- #"ti_utils_runtime_Makefile",
- #"ti_ble_app_config.opt",
- #"ti_build_config.opt",
]
+ if (chip_enable_ota_requestor) {
+ sources = [ "${project_dir}/chip_ota.syscfg" ]
+ } else {
+ sources = [ "${project_dir}/chip.syscfg" ]
+ outputs += [
+ "ti_devices_config.c",
+ "ti_devices_config.h",
+ ]
+ }
+
public_configs = [ ":sdk_dmm_config" ]
cflags = [
diff --git a/examples/lock-app/cc13x2x7_26x2x7/args.gni b/examples/lock-app/cc13x2x7_26x2x7/args.gni
index 52ad321..8c7a4eb 100644
--- a/examples/lock-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/lock-app/cc13x2x7_26x2x7/args.gni
@@ -36,7 +36,7 @@
chip_progress_logging = false
#chip_detail_logging = false
-chip_automation_logging = false
+#chip_automation_logging = false
# BLE options
chip_config_network_layer_ble = true
diff --git a/examples/lock-app/cc13x2x7_26x2x7/chip.syscfg b/examples/lock-app/cc13x2x7_26x2x7/chip.syscfg
index 995ad22..d190703 100644
--- a/examples/lock-app/cc13x2x7_26x2x7/chip.syscfg
+++ b/examples/lock-app/cc13x2x7_26x2x7/chip.syscfg
@@ -84,8 +84,7 @@
CCFG[setting] = ccfgSettings[setting];
}
-// Disable CCFG generation, this is added by the BIM project
-CCFG.enableCodeGeneration = false;
+CCFG.enableCodeGeneration = true;
/* NVS */
NVS1.$name = "CONFIG_NVSINTERNAL";
diff --git a/examples/lock-app/cc13x2x7_26x2x7/chip_ota.syscfg b/examples/lock-app/cc13x2x7_26x2x7/chip_ota.syscfg
new file mode 100644
index 0000000..995ad22
--- /dev/null
+++ b/examples/lock-app/cc13x2x7_26x2x7/chip_ota.syscfg
@@ -0,0 +1,238 @@
+/*
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+
+/* Modules */
+var AESCCM = scripting.addModule("/ti/drivers/AESCCM");
+var AESECB = scripting.addModule("/ti/drivers/AESECB");
+var Button = scripting.addModule("/ti/drivers/apps/Button");
+var LED = scripting.addModule("/ti/drivers/apps/LED");
+var NVS = scripting.addModule("/ti/drivers/NVS");
+var RF = scripting.addModule("/ti/drivers/RF");
+var RFDesign = scripting.addModule("ti/devices/radioconfig/rfdesign");
+var RFCustom = scripting.addModule("/ti/devices/radioconfig/custom");
+var TRNG = scripting.addModule("/ti/drivers/TRNG");
+var SHA2 = scripting.addModule("/ti/drivers/SHA2");
+var UART2 = scripting.addModule("/ti/drivers/UART2");
+var ble = scripting.addModule("/ti/ble5stack/ble");
+var dmm = scripting.addModule("/ti/dmm/dmm");
+var AESCTRDRBG = scripting.addModule("/ti/drivers/AESCTRDRBG");
+var ECDH = scripting.addModule("/ti/drivers/ECDH");
+
+/* Instances */
+var AESCCM1 = AESCCM.addInstance();
+var AESECB1 = AESECB.addInstance();
+var AESECB2 = AESECB.addInstance();
+var Button1 = Button.addInstance();
+var Button2 = Button.addInstance();
+var NVS1 = NVS.addInstance();
+var NVS2 = NVS.addInstance();
+var SHA21 = SHA2.addInstance();
+var LED1 = LED.addInstance();
+var LED2 = LED.addInstance();
+var TRNG1 = TRNG.addInstance();
+var TRNG2 = TRNG.addInstance();
+var TRNG3 = TRNG.addInstance();
+var UART2 = UART2.addInstance();
+var AESCTRDRBG1 = AESCTRDRBG.addInstance();
+var ECDH1 = ECDH.addInstance();
+
+AESCTRDRBG1.$name = "CONFIG_AESCTRDRBG_0";
+
+AESCCM1.$name = "CONFIG_AESCCM0";
+
+AESECB1.$name = "CONFIG_AESECB0";
+AESECB2.$name = "CONFIG_AESECB_1";
+
+ECDH1.$name = "CONFIG_ECDH0";
+
+/* Left Button */
+Button1.$name = "CONFIG_BTN_LEFT";
+Button1.$hardware = system.deviceData.board.components["BTN-1"];
+Button1.gpioPin.$name = "CONFIG_GPIO_BTN1";
+Button1.gpioPin.pull = "Pull Up";
+Button1.gpioPin.interruptTrigger = "Falling Edge";
+
+/* Left Button */
+Button2.$name = "CONFIG_BTN_RIGHT";
+Button2.$hardware = system.deviceData.board.components["BTN-2"];
+Button2.gpioPin.$name = "CONFIG_GPIO_BTN2";
+Button2.gpioPin.pull = "Pull Up";
+Button2.gpioPin.interruptTrigger = "Falling Edge";
+
+/* ======== CCFG ======== */
+var CCFG = scripting.addModule("/ti/devices/CCFG");
+const ccfgSettings = system.getScript("/ti/common/lprf_ccfg_settings.js").ccfgSettings;
+for(var setting in ccfgSettings)
+{
+ CCFG[setting] = ccfgSettings[setting];
+}
+
+// Disable CCFG generation, this is added by the BIM project
+CCFG.enableCodeGeneration = false;
+
+/* NVS */
+NVS1.$name = "CONFIG_NVSINTERNAL";
+NVS1.internalFlash.regionBase = 0xAA000;
+NVS1.internalFlash.regionSize = 0x4000;
+
+NVS2.$name = "CONFIG_NVSEXTERNAL";
+NVS2.nvsType = "External"; // NVS Region Type
+NVS2.$hardware = system.deviceData.board.components.MX25R8035F;
+
+/* RF */
+/* if an antenna component exists, assign it to the rf instance */
+if (system.deviceData.board && system.deviceData.board.components.RF) {
+ RF.$hardware = system.deviceData.board.components.RF;
+}
+
+const rfDesignSettings = system.getScript("/ti/common/lprf_rf_design_settings.js").rfDesignSettings;
+for(var setting in rfDesignSettings)
+{
+ RFDesign[setting] = rfDesignSettings[setting];
+}
+
+/* Handling for RF frontend characterization */
+if(RFDesign.rfDesign.match(/LP_CC2652PSIP/))
+{
+ RFCustom.ieee = ["ieee154p10"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154p10.codeExportConfig
+}
+else
+{
+ RFCustom.ieee = ["ieee154"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154.codeExportConfig
+}
+
+var cmdList = [
+ "cmdIeeeTx",
+ "cmdIeeeRx",
+ "cmdIeeeCsma",
+ "cmdIeeeEdScan",
+ "cmdIeeeRxAck",
+ "cmdTxTest"
+];
+
+rfCodeExportConfig.useConst = true;
+rfCodeExportConfig.useMulti = true;
+rfCodeExportConfig.symGenMethod = "Custom";
+
+const deviceId = system.deviceData.deviceId;
+
+// Add high PA options if present
+if(deviceId.match(/CC(265[12]R|2674R|1352R1|1354R)/))
+{
+ cmdList.push("cmdRadioSetup");
+ rfCodeExportConfig.cmdRadioSetup = "RF_cmdIeeeRadioSetup";
+}
+else if(deviceId.match(/CC(265[12]P|2674P|1352P)/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ rfCodeExportConfig.paExport = "combined";
+}
+else if(deviceId.match(/CC(265[34]|1354)P/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ // currently not characterized for high PA
+}
+else
+{
+ throw new Error("Could not match platform to any known platform types");
+}
+
+rfCodeExportConfig.cmdList_ieee_15_4 = cmdList;
+
+/* Red LED */
+LED1.$name = "CONFIG_LED_RED";
+LED1.$hardware = system.deviceData.board.components.LED_RED;
+LED1.gpioPin.$name = "CONFIG_GPIO_RLED";
+LED1.gpioPin.mode = "Output";
+LED1.gpioPin.callbackFunction = "";
+
+/* Green LED */
+LED2.$name = "CONFIG_LED_GREEN";
+LED2.$hardware = system.deviceData.board.components.LED_GREEN;
+LED2.gpioPin.$name = "CONFIG_GPIO_GLED";
+LED2.gpioPin.mode = "Output";
+LED2.gpioPin.callbackFunction = "";
+
+/* Debug UART */
+UART2.$hardware = system.deviceData.board.components.XDS110UART;
+UART2.$name = "CONFIG_UART2_DEBUG";
+
+/* TRNG */
+TRNG1.$name = "CONFIG_TRNG_0";
+TRNG2.$name = "CONFIG_TRNG_THREAD";
+TRNG3.$name = "CONFIG_TRNG_APP";
+
+/* BLE */
+ble.addressMode = "ADDRMODE_RP_WITH_PUBLIC_ID";
+ble.maxConnNum = 1;
+ble.numOfAdvSets = 1;
+ble.lockProject = true;
+ble.oneLibSizeOpt = true;
+ble.maxPDUSize = 255;
+ble.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param2";
+ble.connUpdateParamsPeripheral.$name = "ti_ble5stack_general_ble_conn_update_params0";
+ble.connUpdateParamsPeripheral.reqMinConnInt = 30;
+ble.connUpdateParamsPeripheral.reqMaxConnInt = 50;
+
+
+ble.advSet1.$name = "ti_ble5stack_broadcaster_advertisement_set0";
+ble.advSet1.advParam1.$name = "ti_ble5stack_broadcaster_advertisement_params0";
+
+/* DMM */
+dmm.project = "ti_thread_thermostat_remote_display";
+dmm.stackRoles = ["blePeripheral","threadFTD"];
+dmm.lockStackRoles = true;
+dmm.numApplicationStates = 10;
+dmm.applicationState0 = "ANY";
+dmm.applicationState1 = "DMMPOLICY_BLE_IDLE";
+dmm.applicationState2 = "DMMPOLICY_BLE_ADV";
+dmm.applicationState3 = "DMMPOLICY_BLE_CONNECTING";
+dmm.applicationState4 = "DMMPOLICY_BLE_HIGH_BANDWIDTH";
+dmm.applicationState5 = "DMMPOLICY_BLE_CONNECTED";
+dmm.applicationState6 = "DMMPOLICY_BLE_OAD";
+dmm.applicationState7 = "DMMPOLICY_THREAD_IDLE";
+dmm.applicationState8 = "DMMPOLICY_THREAD_LINK_EST";
+dmm.applicationState9 = "DMMPOLICY_THREAD_DATA";
+dmm.policyArray.create(4);
+dmm.policyArray[0].$name = "ti_dmm_policy_dmm_policy0";
+dmm.policyArray[0].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble0";
+dmm.policyArray[0].blePeripheral.applicationStates = ["applicationState6"];
+dmm.policyArray[0].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread0";
+dmm.policyArray[0].threadFTD.pause = "DMMPOLICY_PAUSED";
+dmm.policyArray[1].$name = "ti_dmm_policy_dmm_policy1";
+dmm.policyArray[1].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble1";
+dmm.policyArray[1].blePeripheral.applicationStates = ["applicationState3","applicationState4"];
+dmm.policyArray[1].blePeripheral.weight = 25;
+dmm.policyArray[1].blePeripheral.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_BLE_CONNECTION"];
+dmm.policyArray[1].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread1";
+dmm.policyArray[2].$name = "ti_dmm_policy_dmm_policy2";
+dmm.policyArray[2].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble2";
+dmm.policyArray[2].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread2";
+dmm.policyArray[2].threadFTD.weight = 30;
+dmm.policyArray[2].threadFTD.applicationStates = ["applicationState8"];
+dmm.policyArray[2].threadFTD.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];
+dmm.policyArray[3].$name = "ti_dmm_policy_dmm_policy3";
+dmm.policyArray[3].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble3";
+dmm.policyArray[3].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread3";
+dmm.policyArray[3].threadFTD.weight = 1;
diff --git a/examples/lock-app/cc13x4_26x4/args.gni b/examples/lock-app/cc13x4_26x4/args.gni
index c34d0cf..1d6fca5 100644
--- a/examples/lock-app/cc13x4_26x4/args.gni
+++ b/examples/lock-app/cc13x4_26x4/args.gni
@@ -29,7 +29,7 @@
chip_enable_ota_requestor = false
-chip_openthread_ftd = false
+chip_openthread_ftd = true
openthread_external_platform = "${chip_root}/third_party/openthread/platforms/cc13x4_26x4:libopenthread-cc13x4_cc26x4"
# Disable CHIP Logging
diff --git a/examples/pump-app/cc13x2x7_26x2x7/BUILD.gn b/examples/pump-app/cc13x2x7_26x2x7/BUILD.gn
index 5a9aed0..525133b 100644
--- a/examples/pump-app/cc13x2x7_26x2x7/BUILD.gn
+++ b/examples/pump-app/cc13x2x7_26x2x7/BUILD.gn
@@ -33,8 +33,6 @@
}
ti_sysconfig("sysconfig") {
- sources = [ "${project_dir}/chip.syscfg" ]
-
outputs = [
"ti_radio_config.c",
"ti_radio_config.h",
@@ -44,20 +42,18 @@
"ti_ble_config.h",
"ti_dmm_application_policy.c",
"ti_dmm_application_policy.h",
-
- # disabled until upstream generation is aligned
- #"tiop_config.h",
- #"tiop_config.c",
-
- # not traditional source files
- #"ti_utils_build_linker.cmd.genlibs",
- #"syscfg_c.rov.xs",
- #"ti_utils_runtime_model.gv",
- #"ti_utils_runtime_Makefile",
- #"ti_ble_app_config.opt",
- #"ti_build_config.opt",
]
+ if (chip_enable_ota_requestor) {
+ sources = [ "${project_dir}/chip_ota.syscfg" ]
+ } else {
+ sources = [ "${project_dir}/chip.syscfg" ]
+ outputs += [
+ "ti_devices_config.c",
+ "ti_devices_config.h",
+ ]
+ }
+
public_configs = [ ":sdk_dmm_config" ]
cflags = [
diff --git a/examples/pump-app/cc13x2x7_26x2x7/chip.syscfg b/examples/pump-app/cc13x2x7_26x2x7/chip.syscfg
index 995ad22..d190703 100644
--- a/examples/pump-app/cc13x2x7_26x2x7/chip.syscfg
+++ b/examples/pump-app/cc13x2x7_26x2x7/chip.syscfg
@@ -84,8 +84,7 @@
CCFG[setting] = ccfgSettings[setting];
}
-// Disable CCFG generation, this is added by the BIM project
-CCFG.enableCodeGeneration = false;
+CCFG.enableCodeGeneration = true;
/* NVS */
NVS1.$name = "CONFIG_NVSINTERNAL";
diff --git a/examples/pump-app/cc13x2x7_26x2x7/chip_ota.syscfg b/examples/pump-app/cc13x2x7_26x2x7/chip_ota.syscfg
new file mode 100644
index 0000000..995ad22
--- /dev/null
+++ b/examples/pump-app/cc13x2x7_26x2x7/chip_ota.syscfg
@@ -0,0 +1,238 @@
+/*
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+
+/* Modules */
+var AESCCM = scripting.addModule("/ti/drivers/AESCCM");
+var AESECB = scripting.addModule("/ti/drivers/AESECB");
+var Button = scripting.addModule("/ti/drivers/apps/Button");
+var LED = scripting.addModule("/ti/drivers/apps/LED");
+var NVS = scripting.addModule("/ti/drivers/NVS");
+var RF = scripting.addModule("/ti/drivers/RF");
+var RFDesign = scripting.addModule("ti/devices/radioconfig/rfdesign");
+var RFCustom = scripting.addModule("/ti/devices/radioconfig/custom");
+var TRNG = scripting.addModule("/ti/drivers/TRNG");
+var SHA2 = scripting.addModule("/ti/drivers/SHA2");
+var UART2 = scripting.addModule("/ti/drivers/UART2");
+var ble = scripting.addModule("/ti/ble5stack/ble");
+var dmm = scripting.addModule("/ti/dmm/dmm");
+var AESCTRDRBG = scripting.addModule("/ti/drivers/AESCTRDRBG");
+var ECDH = scripting.addModule("/ti/drivers/ECDH");
+
+/* Instances */
+var AESCCM1 = AESCCM.addInstance();
+var AESECB1 = AESECB.addInstance();
+var AESECB2 = AESECB.addInstance();
+var Button1 = Button.addInstance();
+var Button2 = Button.addInstance();
+var NVS1 = NVS.addInstance();
+var NVS2 = NVS.addInstance();
+var SHA21 = SHA2.addInstance();
+var LED1 = LED.addInstance();
+var LED2 = LED.addInstance();
+var TRNG1 = TRNG.addInstance();
+var TRNG2 = TRNG.addInstance();
+var TRNG3 = TRNG.addInstance();
+var UART2 = UART2.addInstance();
+var AESCTRDRBG1 = AESCTRDRBG.addInstance();
+var ECDH1 = ECDH.addInstance();
+
+AESCTRDRBG1.$name = "CONFIG_AESCTRDRBG_0";
+
+AESCCM1.$name = "CONFIG_AESCCM0";
+
+AESECB1.$name = "CONFIG_AESECB0";
+AESECB2.$name = "CONFIG_AESECB_1";
+
+ECDH1.$name = "CONFIG_ECDH0";
+
+/* Left Button */
+Button1.$name = "CONFIG_BTN_LEFT";
+Button1.$hardware = system.deviceData.board.components["BTN-1"];
+Button1.gpioPin.$name = "CONFIG_GPIO_BTN1";
+Button1.gpioPin.pull = "Pull Up";
+Button1.gpioPin.interruptTrigger = "Falling Edge";
+
+/* Left Button */
+Button2.$name = "CONFIG_BTN_RIGHT";
+Button2.$hardware = system.deviceData.board.components["BTN-2"];
+Button2.gpioPin.$name = "CONFIG_GPIO_BTN2";
+Button2.gpioPin.pull = "Pull Up";
+Button2.gpioPin.interruptTrigger = "Falling Edge";
+
+/* ======== CCFG ======== */
+var CCFG = scripting.addModule("/ti/devices/CCFG");
+const ccfgSettings = system.getScript("/ti/common/lprf_ccfg_settings.js").ccfgSettings;
+for(var setting in ccfgSettings)
+{
+ CCFG[setting] = ccfgSettings[setting];
+}
+
+// Disable CCFG generation, this is added by the BIM project
+CCFG.enableCodeGeneration = false;
+
+/* NVS */
+NVS1.$name = "CONFIG_NVSINTERNAL";
+NVS1.internalFlash.regionBase = 0xAA000;
+NVS1.internalFlash.regionSize = 0x4000;
+
+NVS2.$name = "CONFIG_NVSEXTERNAL";
+NVS2.nvsType = "External"; // NVS Region Type
+NVS2.$hardware = system.deviceData.board.components.MX25R8035F;
+
+/* RF */
+/* if an antenna component exists, assign it to the rf instance */
+if (system.deviceData.board && system.deviceData.board.components.RF) {
+ RF.$hardware = system.deviceData.board.components.RF;
+}
+
+const rfDesignSettings = system.getScript("/ti/common/lprf_rf_design_settings.js").rfDesignSettings;
+for(var setting in rfDesignSettings)
+{
+ RFDesign[setting] = rfDesignSettings[setting];
+}
+
+/* Handling for RF frontend characterization */
+if(RFDesign.rfDesign.match(/LP_CC2652PSIP/))
+{
+ RFCustom.ieee = ["ieee154p10"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154p10.codeExportConfig
+}
+else
+{
+ RFCustom.ieee = ["ieee154"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154.codeExportConfig
+}
+
+var cmdList = [
+ "cmdIeeeTx",
+ "cmdIeeeRx",
+ "cmdIeeeCsma",
+ "cmdIeeeEdScan",
+ "cmdIeeeRxAck",
+ "cmdTxTest"
+];
+
+rfCodeExportConfig.useConst = true;
+rfCodeExportConfig.useMulti = true;
+rfCodeExportConfig.symGenMethod = "Custom";
+
+const deviceId = system.deviceData.deviceId;
+
+// Add high PA options if present
+if(deviceId.match(/CC(265[12]R|2674R|1352R1|1354R)/))
+{
+ cmdList.push("cmdRadioSetup");
+ rfCodeExportConfig.cmdRadioSetup = "RF_cmdIeeeRadioSetup";
+}
+else if(deviceId.match(/CC(265[12]P|2674P|1352P)/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ rfCodeExportConfig.paExport = "combined";
+}
+else if(deviceId.match(/CC(265[34]|1354)P/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ // currently not characterized for high PA
+}
+else
+{
+ throw new Error("Could not match platform to any known platform types");
+}
+
+rfCodeExportConfig.cmdList_ieee_15_4 = cmdList;
+
+/* Red LED */
+LED1.$name = "CONFIG_LED_RED";
+LED1.$hardware = system.deviceData.board.components.LED_RED;
+LED1.gpioPin.$name = "CONFIG_GPIO_RLED";
+LED1.gpioPin.mode = "Output";
+LED1.gpioPin.callbackFunction = "";
+
+/* Green LED */
+LED2.$name = "CONFIG_LED_GREEN";
+LED2.$hardware = system.deviceData.board.components.LED_GREEN;
+LED2.gpioPin.$name = "CONFIG_GPIO_GLED";
+LED2.gpioPin.mode = "Output";
+LED2.gpioPin.callbackFunction = "";
+
+/* Debug UART */
+UART2.$hardware = system.deviceData.board.components.XDS110UART;
+UART2.$name = "CONFIG_UART2_DEBUG";
+
+/* TRNG */
+TRNG1.$name = "CONFIG_TRNG_0";
+TRNG2.$name = "CONFIG_TRNG_THREAD";
+TRNG3.$name = "CONFIG_TRNG_APP";
+
+/* BLE */
+ble.addressMode = "ADDRMODE_RP_WITH_PUBLIC_ID";
+ble.maxConnNum = 1;
+ble.numOfAdvSets = 1;
+ble.lockProject = true;
+ble.oneLibSizeOpt = true;
+ble.maxPDUSize = 255;
+ble.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param2";
+ble.connUpdateParamsPeripheral.$name = "ti_ble5stack_general_ble_conn_update_params0";
+ble.connUpdateParamsPeripheral.reqMinConnInt = 30;
+ble.connUpdateParamsPeripheral.reqMaxConnInt = 50;
+
+
+ble.advSet1.$name = "ti_ble5stack_broadcaster_advertisement_set0";
+ble.advSet1.advParam1.$name = "ti_ble5stack_broadcaster_advertisement_params0";
+
+/* DMM */
+dmm.project = "ti_thread_thermostat_remote_display";
+dmm.stackRoles = ["blePeripheral","threadFTD"];
+dmm.lockStackRoles = true;
+dmm.numApplicationStates = 10;
+dmm.applicationState0 = "ANY";
+dmm.applicationState1 = "DMMPOLICY_BLE_IDLE";
+dmm.applicationState2 = "DMMPOLICY_BLE_ADV";
+dmm.applicationState3 = "DMMPOLICY_BLE_CONNECTING";
+dmm.applicationState4 = "DMMPOLICY_BLE_HIGH_BANDWIDTH";
+dmm.applicationState5 = "DMMPOLICY_BLE_CONNECTED";
+dmm.applicationState6 = "DMMPOLICY_BLE_OAD";
+dmm.applicationState7 = "DMMPOLICY_THREAD_IDLE";
+dmm.applicationState8 = "DMMPOLICY_THREAD_LINK_EST";
+dmm.applicationState9 = "DMMPOLICY_THREAD_DATA";
+dmm.policyArray.create(4);
+dmm.policyArray[0].$name = "ti_dmm_policy_dmm_policy0";
+dmm.policyArray[0].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble0";
+dmm.policyArray[0].blePeripheral.applicationStates = ["applicationState6"];
+dmm.policyArray[0].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread0";
+dmm.policyArray[0].threadFTD.pause = "DMMPOLICY_PAUSED";
+dmm.policyArray[1].$name = "ti_dmm_policy_dmm_policy1";
+dmm.policyArray[1].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble1";
+dmm.policyArray[1].blePeripheral.applicationStates = ["applicationState3","applicationState4"];
+dmm.policyArray[1].blePeripheral.weight = 25;
+dmm.policyArray[1].blePeripheral.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_BLE_CONNECTION"];
+dmm.policyArray[1].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread1";
+dmm.policyArray[2].$name = "ti_dmm_policy_dmm_policy2";
+dmm.policyArray[2].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble2";
+dmm.policyArray[2].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread2";
+dmm.policyArray[2].threadFTD.weight = 30;
+dmm.policyArray[2].threadFTD.applicationStates = ["applicationState8"];
+dmm.policyArray[2].threadFTD.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];
+dmm.policyArray[3].$name = "ti_dmm_policy_dmm_policy3";
+dmm.policyArray[3].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble3";
+dmm.policyArray[3].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread3";
+dmm.policyArray[3].threadFTD.weight = 1;
diff --git a/examples/pump-app/cc13x4_26x4/args.gni b/examples/pump-app/cc13x4_26x4/args.gni
index 93f1bd1..6ce8fc0 100644
--- a/examples/pump-app/cc13x4_26x4/args.gni
+++ b/examples/pump-app/cc13x4_26x4/args.gni
@@ -30,6 +30,7 @@
chip_enable_ota_requestor = false
openthread_external_platform = "${chip_root}/third_party/openthread/platforms/cc13x4_26x4:libopenthread-cc13x4_cc26x4"
+chip_openthread_ftd = true
# Disable CHIP Logging
#chip_progress_logging = false
diff --git a/examples/pump-controller-app/cc13x2x7_26x2x7/BUILD.gn b/examples/pump-controller-app/cc13x2x7_26x2x7/BUILD.gn
index 0155ff6..8d0d2d4 100644
--- a/examples/pump-controller-app/cc13x2x7_26x2x7/BUILD.gn
+++ b/examples/pump-controller-app/cc13x2x7_26x2x7/BUILD.gn
@@ -34,8 +34,6 @@
}
ti_sysconfig("sysconfig") {
- sources = [ "${project_dir}/chip.syscfg" ]
-
outputs = [
"ti_radio_config.c",
"ti_radio_config.h",
@@ -45,20 +43,18 @@
"ti_ble_config.h",
"ti_dmm_application_policy.c",
"ti_dmm_application_policy.h",
-
- # disabled until upstream generation is aligned
- #"tiop_config.h",
- #"tiop_config.c",
-
- # not traditional source files
- #"ti_utils_build_linker.cmd.genlibs",
- #"syscfg_c.rov.xs",
- #"ti_utils_runtime_model.gv",
- #"ti_utils_runtime_Makefile",
- #"ti_ble_app_config.opt",
- #"ti_build_config.opt",
]
+ if (chip_enable_ota_requestor) {
+ sources = [ "${project_dir}/chip_ota.syscfg" ]
+ } else {
+ sources = [ "${project_dir}/chip.syscfg" ]
+ outputs += [
+ "ti_devices_config.c",
+ "ti_devices_config.h",
+ ]
+ }
+
public_configs = [ ":sdk_dmm_config" ]
cflags = [
diff --git a/examples/pump-controller-app/cc13x2x7_26x2x7/chip.syscfg b/examples/pump-controller-app/cc13x2x7_26x2x7/chip.syscfg
index 995ad22..d190703 100644
--- a/examples/pump-controller-app/cc13x2x7_26x2x7/chip.syscfg
+++ b/examples/pump-controller-app/cc13x2x7_26x2x7/chip.syscfg
@@ -84,8 +84,7 @@
CCFG[setting] = ccfgSettings[setting];
}
-// Disable CCFG generation, this is added by the BIM project
-CCFG.enableCodeGeneration = false;
+CCFG.enableCodeGeneration = true;
/* NVS */
NVS1.$name = "CONFIG_NVSINTERNAL";
diff --git a/examples/pump-controller-app/cc13x2x7_26x2x7/chip_ota.syscfg b/examples/pump-controller-app/cc13x2x7_26x2x7/chip_ota.syscfg
new file mode 100644
index 0000000..995ad22
--- /dev/null
+++ b/examples/pump-controller-app/cc13x2x7_26x2x7/chip_ota.syscfg
@@ -0,0 +1,238 @@
+/*
+ *
+ * Copyright (c) 2020 Project CHIP Authors
+ * Copyright (c) 2020 Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+
+/* Modules */
+var AESCCM = scripting.addModule("/ti/drivers/AESCCM");
+var AESECB = scripting.addModule("/ti/drivers/AESECB");
+var Button = scripting.addModule("/ti/drivers/apps/Button");
+var LED = scripting.addModule("/ti/drivers/apps/LED");
+var NVS = scripting.addModule("/ti/drivers/NVS");
+var RF = scripting.addModule("/ti/drivers/RF");
+var RFDesign = scripting.addModule("ti/devices/radioconfig/rfdesign");
+var RFCustom = scripting.addModule("/ti/devices/radioconfig/custom");
+var TRNG = scripting.addModule("/ti/drivers/TRNG");
+var SHA2 = scripting.addModule("/ti/drivers/SHA2");
+var UART2 = scripting.addModule("/ti/drivers/UART2");
+var ble = scripting.addModule("/ti/ble5stack/ble");
+var dmm = scripting.addModule("/ti/dmm/dmm");
+var AESCTRDRBG = scripting.addModule("/ti/drivers/AESCTRDRBG");
+var ECDH = scripting.addModule("/ti/drivers/ECDH");
+
+/* Instances */
+var AESCCM1 = AESCCM.addInstance();
+var AESECB1 = AESECB.addInstance();
+var AESECB2 = AESECB.addInstance();
+var Button1 = Button.addInstance();
+var Button2 = Button.addInstance();
+var NVS1 = NVS.addInstance();
+var NVS2 = NVS.addInstance();
+var SHA21 = SHA2.addInstance();
+var LED1 = LED.addInstance();
+var LED2 = LED.addInstance();
+var TRNG1 = TRNG.addInstance();
+var TRNG2 = TRNG.addInstance();
+var TRNG3 = TRNG.addInstance();
+var UART2 = UART2.addInstance();
+var AESCTRDRBG1 = AESCTRDRBG.addInstance();
+var ECDH1 = ECDH.addInstance();
+
+AESCTRDRBG1.$name = "CONFIG_AESCTRDRBG_0";
+
+AESCCM1.$name = "CONFIG_AESCCM0";
+
+AESECB1.$name = "CONFIG_AESECB0";
+AESECB2.$name = "CONFIG_AESECB_1";
+
+ECDH1.$name = "CONFIG_ECDH0";
+
+/* Left Button */
+Button1.$name = "CONFIG_BTN_LEFT";
+Button1.$hardware = system.deviceData.board.components["BTN-1"];
+Button1.gpioPin.$name = "CONFIG_GPIO_BTN1";
+Button1.gpioPin.pull = "Pull Up";
+Button1.gpioPin.interruptTrigger = "Falling Edge";
+
+/* Left Button */
+Button2.$name = "CONFIG_BTN_RIGHT";
+Button2.$hardware = system.deviceData.board.components["BTN-2"];
+Button2.gpioPin.$name = "CONFIG_GPIO_BTN2";
+Button2.gpioPin.pull = "Pull Up";
+Button2.gpioPin.interruptTrigger = "Falling Edge";
+
+/* ======== CCFG ======== */
+var CCFG = scripting.addModule("/ti/devices/CCFG");
+const ccfgSettings = system.getScript("/ti/common/lprf_ccfg_settings.js").ccfgSettings;
+for(var setting in ccfgSettings)
+{
+ CCFG[setting] = ccfgSettings[setting];
+}
+
+// Disable CCFG generation, this is added by the BIM project
+CCFG.enableCodeGeneration = false;
+
+/* NVS */
+NVS1.$name = "CONFIG_NVSINTERNAL";
+NVS1.internalFlash.regionBase = 0xAA000;
+NVS1.internalFlash.regionSize = 0x4000;
+
+NVS2.$name = "CONFIG_NVSEXTERNAL";
+NVS2.nvsType = "External"; // NVS Region Type
+NVS2.$hardware = system.deviceData.board.components.MX25R8035F;
+
+/* RF */
+/* if an antenna component exists, assign it to the rf instance */
+if (system.deviceData.board && system.deviceData.board.components.RF) {
+ RF.$hardware = system.deviceData.board.components.RF;
+}
+
+const rfDesignSettings = system.getScript("/ti/common/lprf_rf_design_settings.js").rfDesignSettings;
+for(var setting in rfDesignSettings)
+{
+ RFDesign[setting] = rfDesignSettings[setting];
+}
+
+/* Handling for RF frontend characterization */
+if(RFDesign.rfDesign.match(/LP_CC2652PSIP/))
+{
+ RFCustom.ieee = ["ieee154p10"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154p10.codeExportConfig
+}
+else
+{
+ RFCustom.ieee = ["ieee154"];
+ var rfCodeExportConfig = RFCustom.radioConfigieee154.codeExportConfig
+}
+
+var cmdList = [
+ "cmdIeeeTx",
+ "cmdIeeeRx",
+ "cmdIeeeCsma",
+ "cmdIeeeEdScan",
+ "cmdIeeeRxAck",
+ "cmdTxTest"
+];
+
+rfCodeExportConfig.useConst = true;
+rfCodeExportConfig.useMulti = true;
+rfCodeExportConfig.symGenMethod = "Custom";
+
+const deviceId = system.deviceData.deviceId;
+
+// Add high PA options if present
+if(deviceId.match(/CC(265[12]R|2674R|1352R1|1354R)/))
+{
+ cmdList.push("cmdRadioSetup");
+ rfCodeExportConfig.cmdRadioSetup = "RF_cmdIeeeRadioSetup";
+}
+else if(deviceId.match(/CC(265[12]P|2674P|1352P)/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ rfCodeExportConfig.paExport = "combined";
+}
+else if(deviceId.match(/CC(265[34]|1354)P/))
+{
+ cmdList.push("cmdRadioSetupPa");
+ rfCodeExportConfig.cmdRadioSetupPa = "RF_cmdIeeeRadioSetup";
+ // currently not characterized for high PA
+}
+else
+{
+ throw new Error("Could not match platform to any known platform types");
+}
+
+rfCodeExportConfig.cmdList_ieee_15_4 = cmdList;
+
+/* Red LED */
+LED1.$name = "CONFIG_LED_RED";
+LED1.$hardware = system.deviceData.board.components.LED_RED;
+LED1.gpioPin.$name = "CONFIG_GPIO_RLED";
+LED1.gpioPin.mode = "Output";
+LED1.gpioPin.callbackFunction = "";
+
+/* Green LED */
+LED2.$name = "CONFIG_LED_GREEN";
+LED2.$hardware = system.deviceData.board.components.LED_GREEN;
+LED2.gpioPin.$name = "CONFIG_GPIO_GLED";
+LED2.gpioPin.mode = "Output";
+LED2.gpioPin.callbackFunction = "";
+
+/* Debug UART */
+UART2.$hardware = system.deviceData.board.components.XDS110UART;
+UART2.$name = "CONFIG_UART2_DEBUG";
+
+/* TRNG */
+TRNG1.$name = "CONFIG_TRNG_0";
+TRNG2.$name = "CONFIG_TRNG_THREAD";
+TRNG3.$name = "CONFIG_TRNG_APP";
+
+/* BLE */
+ble.addressMode = "ADDRMODE_RP_WITH_PUBLIC_ID";
+ble.maxConnNum = 1;
+ble.numOfAdvSets = 1;
+ble.lockProject = true;
+ble.oneLibSizeOpt = true;
+ble.maxPDUSize = 255;
+ble.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param2";
+ble.connUpdateParamsPeripheral.$name = "ti_ble5stack_general_ble_conn_update_params0";
+ble.connUpdateParamsPeripheral.reqMinConnInt = 30;
+ble.connUpdateParamsPeripheral.reqMaxConnInt = 50;
+
+
+ble.advSet1.$name = "ti_ble5stack_broadcaster_advertisement_set0";
+ble.advSet1.advParam1.$name = "ti_ble5stack_broadcaster_advertisement_params0";
+
+/* DMM */
+dmm.project = "ti_thread_thermostat_remote_display";
+dmm.stackRoles = ["blePeripheral","threadFTD"];
+dmm.lockStackRoles = true;
+dmm.numApplicationStates = 10;
+dmm.applicationState0 = "ANY";
+dmm.applicationState1 = "DMMPOLICY_BLE_IDLE";
+dmm.applicationState2 = "DMMPOLICY_BLE_ADV";
+dmm.applicationState3 = "DMMPOLICY_BLE_CONNECTING";
+dmm.applicationState4 = "DMMPOLICY_BLE_HIGH_BANDWIDTH";
+dmm.applicationState5 = "DMMPOLICY_BLE_CONNECTED";
+dmm.applicationState6 = "DMMPOLICY_BLE_OAD";
+dmm.applicationState7 = "DMMPOLICY_THREAD_IDLE";
+dmm.applicationState8 = "DMMPOLICY_THREAD_LINK_EST";
+dmm.applicationState9 = "DMMPOLICY_THREAD_DATA";
+dmm.policyArray.create(4);
+dmm.policyArray[0].$name = "ti_dmm_policy_dmm_policy0";
+dmm.policyArray[0].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble0";
+dmm.policyArray[0].blePeripheral.applicationStates = ["applicationState6"];
+dmm.policyArray[0].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread0";
+dmm.policyArray[0].threadFTD.pause = "DMMPOLICY_PAUSED";
+dmm.policyArray[1].$name = "ti_dmm_policy_dmm_policy1";
+dmm.policyArray[1].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble1";
+dmm.policyArray[1].blePeripheral.applicationStates = ["applicationState3","applicationState4"];
+dmm.policyArray[1].blePeripheral.weight = 25;
+dmm.policyArray[1].blePeripheral.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_BLE_CONNECTION"];
+dmm.policyArray[1].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread1";
+dmm.policyArray[2].$name = "ti_dmm_policy_dmm_policy2";
+dmm.policyArray[2].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble2";
+dmm.policyArray[2].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread2";
+dmm.policyArray[2].threadFTD.weight = 30;
+dmm.policyArray[2].threadFTD.applicationStates = ["applicationState8"];
+dmm.policyArray[2].threadFTD.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];
+dmm.policyArray[3].$name = "ti_dmm_policy_dmm_policy3";
+dmm.policyArray[3].blePeripheral.$name = "ti_dmm_policy_stack_dmm_stack_ble3";
+dmm.policyArray[3].threadFTD.$name = "ti_dmm_policy_stack_dmm_stack_thread3";
+dmm.policyArray[3].threadFTD.weight = 1;
diff --git a/examples/pump-controller-app/cc13x4_26x4/args.gni b/examples/pump-controller-app/cc13x4_26x4/args.gni
index 680e5ea..012565c 100644
--- a/examples/pump-controller-app/cc13x4_26x4/args.gni
+++ b/examples/pump-controller-app/cc13x4_26x4/args.gni
@@ -30,6 +30,7 @@
chip_enable_ota_requestor = false
openthread_external_platform = "${chip_root}/third_party/openthread/platforms/cc13x4_26x4:libopenthread-cc13x4_cc26x4"
+chip_openthread_ftd = true
# Disable CHIP Logging
#chip_progress_logging = false
diff --git a/src/platform/cc13xx_26xx/cc13x2_26x2/cc13x2x7_cc26x2x7_freertos.lds b/src/platform/cc13xx_26xx/cc13x2_26x2/cc13x2x7_cc26x2x7_freertos.lds
index c5d4aa8..e174101 100644
--- a/src/platform/cc13xx_26xx/cc13x2_26x2/cc13x2x7_cc26x2x7_freertos.lds
+++ b/src/platform/cc13xx_26xx/cc13x2_26x2/cc13x2x7_cc26x2x7_freertos.lds
@@ -1,345 +1,273 @@
-/*
- * Copyright (c) 2020, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * ======== CC26X2R1_LAUNCHXL_FREERTOS.lds ========
- * Default Linker script for the Texas Instruments CC26X2R1
- */
-
-
- FLASH_ROM_BUILD = 2;
- FLASH_BASE = 0x00000000 ;
- GPRAM_BASE = 0x11000000 ;
- RAM_BASE = 0x20000000 ;
- ROM_BASE = 0x10000000 ;
-
- FLASH_SIZE = 0x00058000 ;
- GPRAM_SIZE = 0x00002000 ;
- RAM_SIZE = 0x00014000 ;
- ROM_SIZE = 0x00040000 ;
-
- RTOS_RAM_SIZE = 0x0000012C;
- RESERVED_RAM_SIZE_ROM_1 = 0x00000B08;
- RESERVED_RAM_SIZE_ROM_2 = 0x00000EB3;
-
- PAGE_SIZE = 0x2000;
-RTOS_RAM_SIZE = 0x0000012C;
-RESERVED_RAM_SIZE_ROM_2 = 0x00000EB3;
-
-
- RESERVED_RAM_SIZE_AT_START = (RTOS_RAM_SIZE + RESERVED_RAM_SIZE_ROM_2);
- RESERVED_RAM_SIZE_AT_END = 0;
-
-
- RAM_START = (RAM_BASE + RESERVED_RAM_SIZE_AT_START);
-
-
- RAM_END = (RAM_BASE + RAM_SIZE - RESERVED_RAM_SIZE_AT_END - 1);
-
-
-/* For ROM 2 devices, the following section needs to be allocated and reserved */
- RTOS_RAM_START = RAM_BASE;
- RTOS_RAM_END = (RAM_BASE + RTOS_RAM_SIZE - 1);
-
- FLASH_START = FLASH_BASE;
- WORD_SIZE = 4;
-
- FLASH_MEM_ALIGN = WORD_SIZE;
-
- PAGE_MASK = 0xFFFFE000;
-
- NUM_RESERVED_FLASH_PAGES = 1;
- RESERVED_FLASH_SIZE = (NUM_RESERVED_FLASH_PAGES * PAGE_SIZE);
-
- FLASH_END = (FLASH_BASE + FLASH_SIZE - RESERVED_FLASH_SIZE - 1);
-
- FLASH_LAST_PAGE_START = (FLASH_SIZE - PAGE_SIZE);
-
-/*
-__STACK_TOP = __stack + __STACK_SIZE;
-
-
-__UNUSED_SRAM_start__ = RAM_BASE;
-__UNUSED_SRAM_end__ = RAM_BASE + RAM_SIZE;
-
-__UNUSED_FLASH_start__ = FLASH_BASE;
-__UNUSED_FLASH_end__ = FLASH_BASE + FLASH_SIZE;
-*/
-
-
-MEMORY
-{
- FLASH (RX) : ORIGIN = FLASH_START, LENGTH = (FLASH_END - FLASH_START + 1)
- /*
- * Customer Configuration Area and Bootloader Backdoor configuration in
- * flash, 40 bytes
- */
- /* FLASH_CCFG (RX) : ORIGIN = FLASH_LAST_PAGE_START, LENGTH = PAGE_SIZE */
- FLASH_CCFG (RX) : ORIGIN = 0x00057fa8, LENGTH = 0x00000058
-
-
- RTOS_SRAM (RWX) : ORIGIN = RTOS_RAM_START, LENGTH = (RTOS_RAM_END - RTOS_RAM_START + 1)
- SRAM (RWX) : ORIGIN = 0x20000000 + RESERVED_RAM_SIZE_ROM_2 + RTOS_RAM_SIZE, LENGTH = (RAM_END - RAM_START + 1)
- /* GPRAM (RWX) : ORIGIN = 0x11000000, LENGTH = 0x00002000 */
-}
-
-REGION_ALIAS("REGION_TEXT", FLASH);
-REGION_ALIAS("REGION_BSS", SRAM);
-REGION_ALIAS("REGION_DATA", SRAM);
-REGION_ALIAS("REGION_STACK", SRAM);
-REGION_ALIAS("REGION_HEAP", SRAM);
-REGION_ALIAS("REGION_ARM_EXIDX", FLASH);
-REGION_ALIAS("REGION_ARM_EXTAB", FLASH);
-
-SECTIONS {
-
- PROVIDE (_intvecs_base_address =
- DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x0);
-
- .resetVecs (_intvecs_base_address) : AT (_intvecs_base_address) {
- KEEP (*(.resetVecs))
- } > REGION_TEXT
-
- PROVIDE (_vtable_base_address =
- DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000 + RESERVED_RAM_SIZE_ROM_2 + RTOS_RAM_SIZE);
-
- .ramVecs (_vtable_base_address) (NOLOAD) : {
- KEEP (*(.ramVecs))
- } > REGION_DATA
-
- /* if a ROM-only symbol is present, then ROM is being used.
- * Reserve memory for surgically placed module states.
- */
- _rom_data_start = 0x20000100;
- _rom_data_size = DEFINED(ROM_DATA_SIZE) ? 12 : DEFINED(ROM_DATA_SIZE_NO_OAD) ? 0x108 : 0;
-
- .rom_data_reserve (_rom_data_start): {
- . += _rom_data_size;
- } > REGION_DATA
-
- /*
- * UDMACC26XX_CONFIG_BASE below must match UDMACC26XX_CONFIG_BASE defined
- * by ti/drivers/dma/UDMACC26XX.h
- * The user is allowed to change UDMACC26XX_CONFIG_BASE to move it away from
- * the default address 0x2000_1800, but remember it must be 1024 bytes aligned.
- */
- UDMACC26XX_CONFIG_BASE = 0x20001800;
-
- /*
- * Define absolute addresses for the DMA channels.
- * DMA channels must always be allocated at a fixed offset from the DMA base address.
- * --------- DO NOT MODIFY -----------
- */
- DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x10);
- DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x20);
- DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x30);
- DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x40);
- DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x50);
- DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x60);
- DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x70);
- DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x90);
- DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x100);
- DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x110);
-
- DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x210);
- DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x220);
- DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x230);
- DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x240);
- DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x250);
- DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x260);
- DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x270);
- DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x290);
- DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x300);
- DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x310);
-
- /*
- * Allocate UART0, UART1, SPI0, SPI1, ADC, and GPTimer0 DMA descriptors at absolute addresses.
- * --------- DO NOT MODIFY -----------
- */
- UDMACC26XX_uart0RxControlTableEntry_is_placed = 0;
- .dmaUart0RxControlTableEntry DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0RxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart0TxControlTableEntry_is_placed = 0;
- .dmaUart0TxControlTableEntry DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0TxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi0RxControlTableEntry_is_placed = 0;
- .dmaSpi0RxControlTableEntry DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0RxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi0TxControlTableEntry_is_placed = 0;
- .dmaSpi0TxControlTableEntry DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0TxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart1RxControlTableEntry_is_placed = 0;
- .dmaUart1RxControlTableEntry DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1RxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart1TxControlTableEntry_is_placed = 0;
- .dmaUart1TxControlTableEntry DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1TxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaADCPriControlTableEntry_is_placed = 0;
- .dmaADCPriControlTableEntry DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaADCPriControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaGPT0APriControlTableEntry_is_placed = 0;
- .dmaGPT0APriControlTableEntry DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaGPT0APriControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi1RxControlTableEntry_is_placed = 0;
- .dmaSpi1RxControlTableEntry DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1RxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi1TxControlTableEntry_is_placed = 0;
- .dmaSpi1TxControlTableEntry DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1TxControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart0RxAltControlTableEntry_is_placed = 0;
- .dmaUart0RxAltControlTableEntry DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0RxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart0TxAltControlTableEntry_is_placed = 0;
- .dmaUart0TxAltControlTableEntry DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0TxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi0RxAltControlTableEntry_is_placed = 0;
- .dmaSpi0RxAltControlTableEntry DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0RxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi0TxAltControlTableEntry_is_placed = 0;
- .dmaSpi0TxAltControlTableEntry DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0TxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart1RxAltControlTableEntry_is_placed = 0;
- .dmaUart1RxAltControlTableEntry DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1RxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_uart1TxAltControlTableEntry_is_placed = 0;
- .dmaUart1TxAltControlTableEntry DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1TxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaADCAltControlTableEntry_is_placed = 0;
- .dmaADCAltControlTableEntry DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaADCAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaGPT0AAltControlTableEntry_is_placed = 0;
- .dmaGPT0AAltControlTableEntry DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaGPT0AAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi1RxAltControlTableEntry_is_placed = 0;
- .dmaSpi1RxAltControlTableEntry DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1RxAltControlTableEntry)} > REGION_DATA
-
- UDMACC26XX_dmaSpi1TxAltControlTableEntry_is_placed = 0;
- .dmaSpi1TxAltControlTableEntry DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1TxAltControlTableEntry)} > REGION_DATA
-
-
-
- /* if a ROM-only symbol is present, then ROM is being used.
- * Reserve memory for surgically placed config constants.
- */
- _rom_rodata_start = 0x2000;
- _rom_rodata_size = DEFINED(ROM_RODATA_SIZE) ? 0 : DEFINED(ROM_RODATA_SIZE_NO_OAD) ? 0x330 : 0;
-
- .rom_rodata_reserve (_rom_rodata_start): {
- . += _rom_rodata_size;
- } > REGION_TEXT AT> REGION_TEXT
-
- .text : {
- CREATE_OBJECT_SYMBOLS
- *(.text)
- *(.text.*)
- . = ALIGN(0x4);
- KEEP (*(.ctors))
- . = ALIGN(0x4);
- KEEP (*(.dtors))
- . = ALIGN(0x4);
- __init_array_start = .;
- KEEP (*(.init_array*))
- __init_array_end = .;
- *(.init)
- *(.fini*)
- } > REGION_TEXT AT> REGION_TEXT
-
- PROVIDE (__etext = .);
- PROVIDE (_etext = .);
- PROVIDE (etext = .);
-
- .rodata : {
- *(.rodata)
- *(.rodata.*)
- *(.rodata_*)
- } > REGION_TEXT AT> REGION_TEXT
-
- .data : ALIGN(4) {
- __data_load__ = LOADADDR (.data);
- __data_start__ = .;
- *(.data)
- *(.data.*)
- . = ALIGN (4);
- __data_end__ = .;
- } > REGION_DATA AT> REGION_TEXT
-
- .ARM.exidx : {
- __exidx_start = .;
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- __exidx_end = .;
- } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX
-
- .ARM.extab : {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB
-
-
-
- .nvs (0x52000) (NOLOAD) : AT (0x52000) ALIGN(0x2000) {
- *(.nvs)
- } > REGION_TEXT
-
- .ccfg : {
- KEEP (*(.ccfg))
- } > FLASH_CCFG AT> FLASH_CCFG
-
- .bss : {
- __bss_start__ = .;
- *(.shbss)
- *(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN (4);
- __bss_end__ = .;
- } > REGION_BSS AT> REGION_BSS
-
- .heap : {
- __heap_start__ = .;
- end = __heap_start__;
- _end = end;
- __end = end;
- KEEP(*(.heap))
- __heap_end__ = .;
- __HeapLimit = __heap_end__;
- } > REGION_HEAP AT> REGION_HEAP
-
- .stack (NOLOAD) : ALIGN(0x8) {
- _stack = .;
- __stack = .;
- KEEP(*(.stack)).
- += 0x800;
- _stack_end = .;
- __stack_end = .;
- } > REGION_STACK AT> REGION_STACK
-
-}
-
-ENTRY(resetISR)
+/*
+ *
+ * Copyright (c) 2022 Project CHIP Authors
+ * Copyright (c) 2020 Texas Instruments Incorporated
+ *
+ * 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.
+ */
+
+/**
+ * @file
+ * Linkerscript for Matter executable with space reserved for the TI BIM.
+ */
+
+STACKSIZE = 0x800;
+RESERVED_RAM_SIZE_BLE_ROM = 0x00000FDF;
+
+
+MEMORY
+{
+ /* last page removed for BIM, CCFG is supplied by that project */
+ FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x000affa8
+ FLASH_CCFG (RX) : ORIGIN = 0x000affa8, LENGTH = 0x00000058
+ /*FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x000ae000 */
+ /* BLE ROM reserves RAM at the beginning of the ram image, size RESERVED_RAM_SIZE_BLE_ROM */
+ /* SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00024000 */
+ SRAM (RWX) : ORIGIN = 0x20000FDF, LENGTH = 0x00023021
+ GPRAM (RWX) : ORIGIN = 0x11000000, LENGTH = 0x00002000
+ /* Explicitly placed off target for the storage of logging data.
+ * The data placed here is NOT loaded onto the target device.
+ * This is part of 1 GB of external memory from 0x60000000 - 0x9FFFFFFF.
+ * ARM memory map can be found here:
+ * https://developer.arm.com/documentation/ddi0337/e/memory-map/about-the-memory-map
+ */
+ LOG_DATA (R) : ORIGIN = 0x90000000, LENGTH = 0x40000
+}
+
+REGION_ALIAS("REGION_TEXT", FLASH);
+REGION_ALIAS("REGION_BSS", SRAM);
+REGION_ALIAS("REGION_DATA", SRAM);
+REGION_ALIAS("REGION_STACK", SRAM);
+REGION_ALIAS("REGION_HEAP", SRAM);
+REGION_ALIAS("REGION_LOG", LOG_DATA);
+REGION_ALIAS("REGION_ARM_EXIDX", FLASH);
+REGION_ALIAS("REGION_ARM_EXTAB", FLASH);
+
+SECTIONS {
+ /* interrupt vectors shifted to accomodate BIM header */
+ PROVIDE (_intvecs_base_address =
+ DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x00);
+
+ .resetVecs (_intvecs_base_address) : AT (_intvecs_base_address) {
+ KEEP (*(.resetVecs))
+ } > REGION_TEXT
+
+ PROVIDE (_vtable_base_address =
+ DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000 + RESERVED_RAM_SIZE_BLE_ROM);
+
+ .ramVecs (_vtable_base_address) (NOLOAD) : {
+ KEEP (*(.ramVecs))
+ } > REGION_DATA
+
+ /*
+ * UDMACC26XX_CONFIG_BASE below must match UDMACC26XX_CONFIG_BASE defined
+ * by ti/drivers/dma/UDMACC26XX.h
+ * The user is allowed to change UDMACC26XX_CONFIG_BASE to move it away from
+ * the default address 0x2000_1800, but remember it must be 1024 bytes aligned.
+ */
+ UDMACC26XX_CONFIG_BASE = 0x20001800;
+
+ /*
+ * Define absolute addresses for the DMA channels.
+ * DMA channels must always be allocated at a fixed offset from the DMA base address.
+ * --------- DO NOT MODIFY -----------
+ */
+ DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x10);
+ DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x20);
+ DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x30);
+ DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x40);
+ DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x50);
+ DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x60);
+ DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x70);
+ DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x90);
+ DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x100);
+ DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x110);
+
+ DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x210);
+ DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x220);
+ DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x230);
+ DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x240);
+ DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x250);
+ DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x260);
+ DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x270);
+ DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x290);
+ DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x300);
+ DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x310);
+
+ /*
+ * Allocate UART0, UART1, SPI0, SPI1, ADC, and GPTimer0 DMA descriptors at absolute addresses.
+ * --------- DO NOT MODIFY -----------
+ */
+ UDMACC26XX_uart0RxControlTableEntry_is_placed = 0;
+ .dmaUart0RxControlTableEntry DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0RxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart0TxControlTableEntry_is_placed = 0;
+ .dmaUart0TxControlTableEntry DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0TxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi0RxControlTableEntry_is_placed = 0;
+ .dmaSpi0RxControlTableEntry DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0RxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi0TxControlTableEntry_is_placed = 0;
+ .dmaSpi0TxControlTableEntry DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0TxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart1RxControlTableEntry_is_placed = 0;
+ .dmaUart1RxControlTableEntry DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1RxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart1TxControlTableEntry_is_placed = 0;
+ .dmaUart1TxControlTableEntry DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1TxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaADCPriControlTableEntry_is_placed = 0;
+ .dmaADCPriControlTableEntry DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaADCPriControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaGPT0APriControlTableEntry_is_placed = 0;
+ .dmaGPT0APriControlTableEntry DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaGPT0APriControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi1RxControlTableEntry_is_placed = 0;
+ .dmaSpi1RxControlTableEntry DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1RxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi1TxControlTableEntry_is_placed = 0;
+ .dmaSpi1TxControlTableEntry DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1TxControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart0RxAltControlTableEntry_is_placed = 0;
+ .dmaUart0RxAltControlTableEntry DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0RxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart0TxAltControlTableEntry_is_placed = 0;
+ .dmaUart0TxAltControlTableEntry DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0TxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi0RxAltControlTableEntry_is_placed = 0;
+ .dmaSpi0RxAltControlTableEntry DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0RxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi0TxAltControlTableEntry_is_placed = 0;
+ .dmaSpi0TxAltControlTableEntry DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0TxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart1RxAltControlTableEntry_is_placed = 0;
+ .dmaUart1RxAltControlTableEntry DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1RxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_uart1TxAltControlTableEntry_is_placed = 0;
+ .dmaUart1TxAltControlTableEntry DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1TxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaADCAltControlTableEntry_is_placed = 0;
+ .dmaADCAltControlTableEntry DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaADCAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaGPT0AAltControlTableEntry_is_placed = 0;
+ .dmaGPT0AAltControlTableEntry DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaGPT0AAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi1RxAltControlTableEntry_is_placed = 0;
+ .dmaSpi1RxAltControlTableEntry DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1RxAltControlTableEntry)} > REGION_DATA
+
+ UDMACC26XX_dmaSpi1TxAltControlTableEntry_is_placed = 0;
+ .dmaSpi1TxAltControlTableEntry DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1TxAltControlTableEntry)} > REGION_DATA
+
+
+
+ /* if a ROM-only symbol is present, then ROM is being used.
+ * Reserve memory for surgically placed config constants.
+ */
+ _rom_rodata_start = 0x2000;
+ _rom_rodata_size = DEFINED(ROM_RODATA_SIZE) ? 0 : DEFINED(ROM_RODATA_SIZE_NO_OAD) ? 0x330 : 0;
+
+ .rom_rodata_reserve (_rom_rodata_start): {
+ . += _rom_rodata_size;
+ } > REGION_TEXT AT> REGION_TEXT
+
+ .text : {
+ CREATE_OBJECT_SYMBOLS
+ *(.text)
+ *(.text.*)
+ . = ALIGN(0x4);
+ KEEP (*(.ctors))
+ . = ALIGN(0x4);
+ KEEP (*(.dtors))
+ . = ALIGN(0x4);
+ __init_array_start = .;
+ KEEP (*(.init_array*))
+ __init_array_end = .;
+ *(.init)
+ *(.fini*)
+ } > REGION_TEXT AT> REGION_TEXT
+
+ PROVIDE (__etext = .);
+ PROVIDE (_etext = .);
+ PROVIDE (etext = .);
+
+ .rodata : {
+ *(.rodata)
+ *(.rodata.*)
+ *(.rodata_*)
+ } > REGION_TEXT AT> REGION_TEXT
+
+ .data : ALIGN(4) {
+ __data_load__ = LOADADDR (.data);
+ __data_start__ = .;
+ *(.data)
+ *(.data.*)
+ . = ALIGN (4);
+ __data_end__ = .;
+ } > REGION_DATA AT> REGION_TEXT
+
+ .ARM.exidx : {
+ __exidx_start = .;
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ __exidx_end = .;
+ } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX
+
+ .ARM.extab : {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB
+
+ /* End of executable code/data, NVS is not part of the OTA image */
+ PROVIDE (_flash_end_address = .);
+
+ .nvs (0xAA000) (NOLOAD) : AT (0xAA000) ALIGN(0x2000) {
+ *(.nvs)
+ } > REGION_TEXT
+
+ .ccfg : {
+ KEEP (*(.ccfg))
+ } > FLASH_CCFG AT> FLASH_CCFG
+
+ .bss : {
+ __bss_start__ = .;
+ *(.shbss)
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN (4);
+ __bss_end__ = .;
+ } > REGION_BSS AT> REGION_BSS
+
+ .heap : {
+ __heap_start__ = .;
+ end = __heap_start__;
+ _end = end;
+ __end = end;
+ KEEP(*(.heap))
+ __heap_end__ = .;
+ __HeapLimit = __heap_end__;
+ } > REGION_HEAP AT> REGION_HEAP
+
+ .stack (NOLOAD) : ALIGN(0x8) {
+ _stack = .;
+ __stack = .;
+ KEEP(*(.stack))
+ . += STACKSIZE;
+ _stack_end = .;
+ __stack_end = .;
+ } > REGION_STACK AT> REGION_STACK
+
+ .log_data (COPY) : {
+ KEEP (*(.log_data))
+ } > REGION_LOG
+}
+
+ENTRY(resetISR)