[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)