This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MCU-PLUS-SDK-AM243X: Unable to debug on M4 Hello World project

Part Number: MCU-PLUS-SDK-AM243X
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hi,

I have imported the hello world M4 project. It builds fine and debugs fine when no changes are made to the code.
Here is the original code from the SDK that debugs:

#include <stdio.h>
#include <kernel/dpl/DebugP.h>
#include "ti_drivers_config.h"
#include "ti_drivers_open_close.h"
#include "ti_board_open_close.h"

void hello_world_main(void *args)
{
    /* Open drivers to open the UART driver for console */
    Drivers_open();
    Board_driversOpen();

    DebugP_log("Hello World!\r\n");

    Board_driversClose();
    Drivers_close();
}

When debugging, I am able to debug on the M4 core with no issues. But, when I add code to the hello_world.cpp, while building the project is fine, I am not able to debug this code. Here is the code I am trying to debug. Even whenf flashing the project to the M4 core, I only see the "hello world" output; not my additional output from the code.The only changes that were made are in hello_world.cpp:

#include <stdio.h>
#include <string.h>
#include <kernel/dpl/DebugP.h>
#include "ti_drivers_config.h"
#include "ti_drivers_open_close.h"
#include "ti_board_open_close.h"

typedef unsigned int uint;

/// Sample class that sets a string
class Foo
{
public:
    Foo(void);

    static const uint uStrLen = 20U;
    char mystr[uStrLen + 1U];
}; // class Foo

Foo::Foo(void)
{
    strncpy(mystr, "Testing\r\n", uStrLen);
    mystr[uStrLen] = '\0';
}

/// Declare static class instance
Foo foo;

void hello_world_main(void *args)
{
    /* Open drivers to open the UART driver for console */
    Drivers_open();
    Board_driversOpen();

    DebugP_log("Hello World!\r\n");
    DebugP_log(foo.mystr);

    Board_driversClose();
    Drivers_close();
}


When I try to debug this code on the M4 core, I get these error messages:
BLAZAR_Cortex_M4F_0: GEL Output: CPU reset (soft reset) has been issued through GEL.
BLAZAR_Cortex_M4F_0: File Loader: Verification failed: Values at address 0x00014C40 do not match Please verify target memory and memory map.
BLAZAR_Cortex_M4F_0: GEL: File: C:\dev\ccs\hello_world_cpp_am243x-evm_m4fss0-0_nortos_ti-arm-clang\Debug\hello_world_cpp_am243x-evm_m4fss0-0_nortos_ti-arm-clang.out: a data verification error occurred, file load failed.


Why can I not add/edit code on this project and then debug it? The issue seems to be with Code Composer Studio. How can we address and fix this issue so that I may edit this project and debug off of the M4 core? This same code runs and debugs on the R5 core.

  • While the code mention above fails to debug on the M4 Processor (and also fails to print out the compete output when flashed onto M4 only prints Hello World and not extra text) does work perfectly on the R5 core. The same code above that has issues on the M4 core works as expected on the R5 core and debugs fine. Why is this? Am I not able to run c++ code on the M4 core?

  • Hi Jacob,

    The subject matter is out of office this week. Responses to this thread will be delayed. Thanks for your patience.

    Meanwhile, Can you please tell which MCU+SDK version are you using?

    Regards,

    Tushar 

  • Please note there is a separate hello_world_cpp project for M4F core in the SDK. Can you please confirm are you using the right example project?

    The project build for R5F core will not work on M4F core. 

    Regards,

    Tushar

  • Yes,

    I used the correct Hello World example for the M4 and the correct Hello World example for R5.

    The hello_world.cpp files are "the same" for both projects. When adding the same lines of example code as shown in the issue, The M4 and R5 both build, but debugging on the M4 does not work whatsoever (I get error messages). Flashing to M4 does flash, but I do not get my added code's output. 
    The R5 on the other hand works fine with the same added code; flashing and debugging work fine on R5.

    The SDK is the current most up-to-date SDK version.

  • Hi Jacob,

    Thanks for the above confirmation. Please allow some time to check the above and revert back.

    Regards,

    Tushar

  • Hi Jacob,

    Can you please try once after disabling the verification for M4F core and update the results.

    Please refer sk-am62-data-verification-error-while-loading-the-program for details.

    Regards,

    Tushar

  • I will attempt this when I am able to do so. But, this suggestion seems to be for debugging only; that is only half of the issue.  This still would not solve the issue of why I would not get the expected output when flashed onto the EVM board for the M4 core.

    The M4 core will only print out Hello World (when flashed with the M4 project), while the R5 core will print out the expected "Hello World \n Testing" (when flashed with the R5 project). The code is identical in both projects' hello_world.cpp as described before.

  • I just tried using the No Verification and this did NOT solve the issue

  • Hi Jacob,

    Looking at the above error, it doesn't seems like the verification has disabled successfully.

    I can see you are still getting the data verification failed error which should not come if verification is disabled for M4F core.

    Please make sure you have selected the M4F core while disabling the data verification in Program Load and run options.

    Regards,

    Tushar

  • You are correct. When starting the debug, it reset the settings I had chosen. Here is now the example with No Verification. The M4 does now debug, but I DO NOT get my added codes string output into the console as shown in the image. Please try to replicate this issue and find a fix. The same code works in the R5 project and prints out "Testing" after the "Hello World" string. But, the same code DOES NOT print out "Testing" on the M4 project when debugging or flashing. I seems that it may crash or skip over this part of code on the M4 core only???

  • Hi Jacob,

    Thanks for the above confirmation that you are now able to load the program on M4F. I will try to replicated your issue on Monday.

    Please allow us some time to root cause the issue.

    Regards,

    Tushar

  • Ok, please let me know the progress of this issue. It seem to be an issue with initialization on the M4 core only. I would like to have c++ code (instead of straight c code) run on the M4 core, but it does not see. possible at the moment. It seem the R5 will run c++ code, but not the M4.

  • Is there a status or update on replicating this issue on the M4 core?

  • Hi Jacob,

    I am able to replicate your issue at my end.

    Yes, it seems that the constructor for Foo class is not invoked for the created object. I am still debugging the issue please allow some time.

    Regards,

    Tushar

  • Hi,

    Has there been any progress made on this issue? We are trying to write C++ code on the M4 and are still incapable of doing so. Do you have any insight on the current progress of this problem?

  • Are there any updates on this issue? We are currently stopped, as we cannot write c++ to the m4 core

  • Hello,

    The following patch should resolve the issue.

    diff --git a/examples/hello_world_cpp/am243x-evm/m4fss0-0_nortos/example.syscfg b/examples/hello_world_cpp/am243x-evm/m4fss0-0_nortos/example.syscfg
    index 37917c45..1b90fd37 100644
    --- a/examples/hello_world_cpp/am243x-evm/m4fss0-0_nortos/example.syscfg
    +++ b/examples/hello_world_cpp/am243x-evm/m4fss0-0_nortos/example.syscfg
    @@ -23,6 +23,7 @@ const section5                  = section.addInstance();
     const section6                  = section.addInstance();
     const section7                  = section.addInstance();
     const section8                  = section.addInstance();
    +const section9                  = section.addInstance();
     
     const addr_translate  = scripting.addModule("/kernel/dpl/addr_translate", {}, false);
     const addr_translate1 = addr_translate.addInstance();
    @@ -105,17 +106,11 @@ section4.output_section[1].palignment = true;
     section5.load_memory                  = "M4F_IRAM";
     section5.group                        = false;
     section5.$name                        = "Memory and Stack Segments";
    -section5.output_section.create(5);
    +section5.output_section.create(2);
     section5.output_section[0].$name      = ".sysmem";
     section5.output_section[0].palignment = true;
     section5.output_section[1].$name      = ".stack";
     section5.output_section[1].palignment = true;
    -section5.output_section[2].$name      = ".ARM.exidx";
    -section5.output_section[2].palignment = true;
    -section5.output_section[3].$name      = ".init_array";
    -section5.output_section[3].palignment = true;
    -section5.output_section[4].$name      = ".fini_array";
    -section5.output_section[4].palignment = true;
     
     section6.type                        = "NOLOAD";
     section6.load_memory                 = "USER_SHM_MEM";
    @@ -141,6 +136,17 @@ section8.output_section.create(1);
     section8.output_section[0].$name     = ".bss.ipc_vring_mem";
     section8.output_section[0].alignment = 0;
     
    +section9.load_memory                  = "M4F_DRAM";
    +section9.group                        = false;
    +section9.$name                        = "C++ Sections";
    +section9.output_section.create(3);
    +section9.output_section[0].$name      = ".ARM.exidx";
    +section9.output_section[0].palignment = true;
    +section9.output_section[1].$name      = ".init_array";
    +section9.output_section[1].palignment = true;
    +section9.output_section[2].$name      = ".fini_array";
    +section9.output_section[2].palignment = true;
    +
     addr_translate1.$name     = "CONFIG_ADDR_TRANSLATE_REGION0";
     addr_translate1.localAddr = 0x80000000;
     
    

    This patch moves the C++ related sections from the M4F_IRAM memory region to M4F_DRAM memory region.

    Regards,

    Prashant

  • So,

    Adding your changes to example.sysconfig resulted in these errors when trying to buiild:

    Building file: "../example.syscfg"
    Invoking: SysConfig
    "C:/ti/ccs1280/ccs/utils/sysconfig_1.21.0/sysconfig_cli.bat" --script "C:/dev/ccs/hello_world_cpp_am243x-evm_m4fss0-0_nortos_ti-arm-clang/example.syscfg" -o "syscfg" -s "C:/dev/mcusdk/.metadata/product.json" --context "m4fss0-0" --part ALV --package ALV --compiler ticlang
    Running script...
    Validating...
    info: /kernel/dpl/debug_log uartLog.baudRate: Actual Baudrate Possible: 115385 (0 % error)
    subdir_rules.mk:9: recipe for target 'build-1619419905' failed
    error: CONFIG_SECTION5(/memory_configurator/section) load_memory: This field can't be kept empty
    error: CONFIG_SECTION5(/memory_configurator/section) run_memory: This field can't be kept empty
    error: CONFIG_SECTION5(/memory_configurator/section) output_section: Add atleast 1 output section
    error: CONFIG_SECTION6(/memory_configurator/section) load_memory: This field can't be kept empty
    error: CONFIG_SECTION6(/memory_configurator/section) run_memory: This field can't be kept empty
    error: CONFIG_SECTION6(/memory_configurator/section) output_section: Add atleast 1 output section
    error: CONFIG_SECTION7(/memory_configurator/section) load_memory: This field can't be kept empty
    error: CONFIG_SECTION7(/memory_configurator/section) run_memory: This field can't be kept empty
    error: CONFIG_SECTION7(/memory_configurator/section) output_section: Add atleast 1 output section
    9 error(s), 0 warning(s)
    gmake: *** [build-1619419905] Error 1
    gmake: Target 'all' not remade because of errors.
    
    **** Build Finished ****

  • Adding your changes to example.sysconfig resulted in these errors when trying to buiild:

    In that case, can you manually allocate those sections to the M4F_DRAM memory region using the Memory Configurator in the Sysconfig.

    Otherwise, you may share the "example.syscfg" file for me to take a look & correct it if needed.

  • Sure,

    I have made sure that everything is up-to-date [SysConfig, MCU+SDK, etc.]

    I get this build error when building with the 'patch':

    Building file: "../example.syscfg"
    Invoking: SysConfig
    "C:/ti/sysconfig_1.22.0/sysconfig_cli.bat" --script "C:/dev/ccs/hello_world_cpp_am243x-evm_m4fss0-0_nortos_ti-arm-clang/example.syscfg" -o "syscfg" -s "C:/ti/mcu_plus_sdk_am243x_10_01_00_32/.metadata/product.json" --context "m4fss0-0" --part ALV --package ALV --compiler ticlang
    Warning: SysConfig has been updated to use standard TI part numbers. The device AM2434 has been automatically selected. If this is not the desired please open SysConfig to change it.
    Running script...
    subdir_rules.mk:9: recipe for target 'build-1619419905' failed
    TypeError: Cannot set properties of undefined (setting '$name')
        at scriptFunc (C:\dev\ccs\hello_world_cpp_am243x-evm_m4fss0-0_nortos_ti-arm-clang\example.syscfg:115:39)
        at cb (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\src\pinmux\services\scripting\runScript.ts:112:7)
        at withDeprecatedAccess (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\src\pinmux\services\deprecatedAccessGuard.ts:14:10)
        at runAsUserScript (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\src\pinmux\services\scripting\scriptingGuard.ts:61:10)
        at iteratee (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\src\pinmux\services\scripting\runScript.ts:110:5)
        at baseEach (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\node_modules\lodash\lodash.js:530:11)
        at Function.each (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\node_modules\lodash\lodash.js:9409:52)
        at iteratee (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\src\pinmux\services\scripting\runScript.ts:108:6)
        at baseEach (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\node_modules\lodash\lodash.js:530:11)
        at Function.va (C:\ti\sysconfig_1.22.0\dist\webpack:\sysconfig\node_modules\lodash\lodash.js:9409:52)
    gmake: *** [build-1619419905] Error 1
    gmake: Target 'all' not remade because of errors.


    Here is my example.sysconfig:

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "AM243x_ALV_beta" --package "ALV" --part "ALV" --context "m4fss0-0" --product "MCU_PLUS_SDK@07.03.00"
     * @versions {"data":"2021021813","timestamp":"2021021813","tool":"1.8.0+1824","templates":null}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const default_linker            = scripting.addModule("/memory_configurator/default_linker", {}, false);
    const default_linker1           = default_linker.addInstance();
    const general                   = scripting.addModule("/memory_configurator/general", {}, false);
    const general1                  = general.addInstance();
    const region                    = scripting.addModule("/memory_configurator/region", {}, false);
    const region1                   = region.addInstance();
    const section                   = scripting.addModule("/memory_configurator/section", {}, false);
    const section1                  = section.addInstance();
    const section2                  = section.addInstance();
    const section3                  = section.addInstance();
    const section4                  = section.addInstance();
    const section5                  = section.addInstance();
    const section6                  = section.addInstance();
    const section7                  = section.addInstance();
    const section8                  = section.addInstance();
    const section9                  = section.addInstance();
    
    const addr_translate  = scripting.addModule("/kernel/dpl/addr_translate", {}, false);
    const addr_translate1 = addr_translate.addInstance();
    const addr_translate2 = addr_translate.addInstance();
    const addr_translate3 = addr_translate.addInstance();
    const addr_translate4 = addr_translate.addInstance();
    const clock           = scripting.addModule("/kernel/dpl/clock");
    const debug_log       = scripting.addModule("/kernel/dpl/debug_log");
    const dpl_cfg = scripting.addModule("/kernel/dpl/dpl_cfg");
    const mpu_armv7       = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
    const mpu_armv71      = mpu_armv7.addInstance();
    const mpu_armv72      = mpu_armv7.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    default_linker1.$name = "memory_configurator_default_linker0";
    
    general1.$name        = "CONFIG_GENERAL0";
    general1.linker.$name = "TIARMCLANG0";
    
    region1.$name                               = "MEMORY_REGION_CONFIGURATION0";
    region1.memory_region.create(6);
    region1.memory_region[0].type               = "RAM0_M4F";
    region1.memory_region[0].$name              = "M4F_VECS";
    region1.memory_region[0].size               = 0x200;
    region1.memory_region[1].type               = "RAM0_M4F";
    region1.memory_region[1].$name              = "M4F_IRAM";
    region1.memory_region[1].size               = 0x2FE00;
    region1.memory_region[1].auto               = false;
    region1.memory_region[1].manualStartAddress = 0x200;
    region1.memory_region[2].type               = "DRAM_M4F";
    region1.memory_region[2].$name              = "M4F_DRAM";
    region1.memory_region[2].size               = 0x10000;
    region1.memory_region[2].auto               = false;
    region1.memory_region[3].$name              = "USER_SHM_MEM";
    region1.memory_region[3].auto               = false;
    region1.memory_region[3].manualStartAddress = 0x701D0000;
    region1.memory_region[3].size               = 0x180;
    region1.memory_region[4].auto               = false;
    region1.memory_region[4].manualStartAddress = 0x701D0180;
    region1.memory_region[4].size               = 0x3E80;
    region1.memory_region[4].$name              = "LOG_SHM_MEM";
    region1.memory_region[5].auto               = false;
    region1.memory_region[5].manualStartAddress = 0x701D4000;
    region1.memory_region[5].size               = 0xC000;
    region1.memory_region[5].$name              = "IPC_VRING_MEM";
    
    section1.load_memory                  = "M4F_VECS";
    section1.group                        = false;
    section1.$name                        = "Vector Table";
    section1.output_section.create(1);
    section1.output_section[0].$name      = ".vectors";
    section1.output_section[0].palignment = true;
    
    section2.load_memory                  = "M4F_IRAM";
    section2.group                        = false;
    section2.$name                        = "Text Segments";
    section2.output_section.create(1);
    section2.output_section[0].$name      = ".text";
    section2.output_section[0].palignment = true;
    
    section3.group                                   = false;
    section3.load_memory                             = "M4F_DRAM";
    section3.$name                                   = "Bss Segment";
    section3.output_section.create(1);
    section3.output_section[0].$name                 = ".bss";
    section3.output_section[0].output_sections_start = "__BSS_START";
    section3.output_section[0].output_sections_end   = "__BSS_END";
    
    section4.load_memory                  = "M4F_DRAM";
    section4.group                        = false;
    section4.$name                        = "Code and Read-Only Data";
    section4.output_section.create(2);
    section4.output_section[0].$name      = ".data";
    section4.output_section[0].palignment = true;
    section4.output_section[1].$name      = ".rodata";
    section4.output_section[1].palignment = true;
    
    section5.load_memory                  = "M4F_IRAM";
    section5.group                        = false;
    section5.$name                        = "Memory and Stack Segments";
    //section5.output_section.create(5);
    section5.output_section.create(2);
    section5.output_section[0].$name      = ".sysmem";
    section5.output_section[0].palignment = true;
    section5.output_section[1].$name      = ".stack";
    section5.output_section[1].palignment = true;
    section5.output_section[2].$name      = ".ARM.exidx";
    //section5.output_section[2].palignment = true;
    //section5.output_section[3].$name      = ".init_array";
    //section5.output_section[3].palignment = true;
    //section5.output_section[4].$name      = ".fini_array";
    //section5.output_section[4].palignment = true;
    section9.load_memory                  = "M4F_DRAM";
    section9.group                        = false;
    section9.$name                        = "C++ Sections";
    section9.output_section.create(3);
    section9.output_section[0].$name      = ".ARM.exidx";
    section9.output_section[0].palignment = true;
    section9.output_section[1].$name      = ".init_array";
    section9.output_section[1].palignment = true;
    section9.output_section[2].$name      = ".fini_array";
    section9.output_section[2].palignment = true;
    
    
    section6.type                        = "NOLOAD";
    section6.load_memory                 = "USER_SHM_MEM";
    section6.group                       = false;
    section6.$name                       = "User Shared Memory";
    section6.output_section.create(1);
    section6.output_section[0].$name     = ".bss.user_shared_mem";
    section6.output_section[0].alignment = 0;
    
    section7.load_memory                 = "LOG_SHM_MEM";
    section7.group                       = false;
    section7.type                        = "NOLOAD";
    section7.$name                       = "Log Shared Memory";
    section7.output_section.create(1);
    section7.output_section[0].$name     = ".bss.log_shared_mem";
    section7.output_section[0].alignment = 0;
    
    section8.load_memory                 = "IPC_VRING_MEM";
    section8.type                        = "NOLOAD";
    section8.group                       = false;
    section8.$name                       = "IPC Shared Memory";
    section8.output_section.create(1);
    section8.output_section[0].$name     = ".bss.ipc_vring_mem";
    section8.output_section[0].alignment = 0;
    
    addr_translate1.$name     = "CONFIG_ADDR_TRANSLATE_REGION0";
    addr_translate1.localAddr = 0x80000000;
    
    addr_translate2.$name      = "CONFIG_ADDR_TRANSLATE_REGION1";
    addr_translate2.systemAddr = 0x20000000;
    addr_translate2.localAddr  = 0xA0000000;
    
    addr_translate3.$name      = "CONFIG_ADDR_TRANSLATE_REGION2";
    addr_translate3.systemAddr = 0x40000000;
    addr_translate3.localAddr  = 0xC0000000;
    
    addr_translate4.$name      = "CONFIG_ADDR_TRANSLATE_REGION3";
    addr_translate4.systemAddr = 0x60000000;
    addr_translate4.localAddr  = 0x60000000;
    
    debug_log.enableUartLog            = true;
    debug_log.uartLog.$name            = "CONFIG_UART_CONSOLE";
    debug_log.uartLog.MCU_UART.$assign = "MCU_USART0";
    
    mpu_armv71.$name        = "CONFIG_MPU_REGION0";
    mpu_armv71.attributes   = "Device";
    mpu_armv71.allowExecute = false;
    
    mpu_armv72.$name = "CONFIG_MPU_REGION1";
    mpu_armv72.size  = 18;
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    debug_log.uartLog.MCU_UART.RXD.$suggestSolution = "A9";
    debug_log.uartLog.MCU_UART.TXD.$suggestSolution = "A8";
    


    Please note that this is on a normal M4 Hello_World_cpp project (no foo code). I tried the 'patch' on a normal example m4 hello world project before I tried adding it to my code.

    The patch does not seem to allow me to build an example M4 project.

  • Hello,

    You did not comment the following line:

    section5.output_section[2].$name      = ".ARM.exidx";

    PFA the updated syscfg file:

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "AM243x_ALV_beta" --package "ALV" --part "ALV" --context "m4fss0-0" --product "MCU_PLUS_SDK@07.03.00"
     * @versions {"data":"2021021813","timestamp":"2021021813","tool":"1.8.0+1824","templates":null}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const default_linker            = scripting.addModule("/memory_configurator/default_linker", {}, false);
    const default_linker1           = default_linker.addInstance();
    const general                   = scripting.addModule("/memory_configurator/general", {}, false);
    const general1                  = general.addInstance();
    const region                    = scripting.addModule("/memory_configurator/region", {}, false);
    const region1                   = region.addInstance();
    const section                   = scripting.addModule("/memory_configurator/section", {}, false);
    const section1                  = section.addInstance();
    const section2                  = section.addInstance();
    const section3                  = section.addInstance();
    const section4                  = section.addInstance();
    const section5                  = section.addInstance();
    const section6                  = section.addInstance();
    const section7                  = section.addInstance();
    const section8                  = section.addInstance();
    const section9                  = section.addInstance();
    
    const addr_translate  = scripting.addModule("/kernel/dpl/addr_translate", {}, false);
    const addr_translate1 = addr_translate.addInstance();
    const addr_translate2 = addr_translate.addInstance();
    const addr_translate3 = addr_translate.addInstance();
    const addr_translate4 = addr_translate.addInstance();
    const clock           = scripting.addModule("/kernel/dpl/clock");
    const debug_log       = scripting.addModule("/kernel/dpl/debug_log");
    const dpl_cfg = scripting.addModule("/kernel/dpl/dpl_cfg");
    const mpu_armv7       = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
    const mpu_armv71      = mpu_armv7.addInstance();
    const mpu_armv72      = mpu_armv7.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    default_linker1.$name = "memory_configurator_default_linker0";
    
    general1.$name        = "CONFIG_GENERAL0";
    general1.linker.$name = "TIARMCLANG0";
    
    region1.$name                               = "MEMORY_REGION_CONFIGURATION0";
    region1.memory_region.create(6);
    region1.memory_region[0].type               = "RAM0_M4F";
    region1.memory_region[0].$name              = "M4F_VECS";
    region1.memory_region[0].size               = 0x200;
    region1.memory_region[1].type               = "RAM0_M4F";
    region1.memory_region[1].$name              = "M4F_IRAM";
    region1.memory_region[1].size               = 0x2FE00;
    region1.memory_region[1].auto               = false;
    region1.memory_region[1].manualStartAddress = 0x200;
    region1.memory_region[2].type               = "DRAM_M4F";
    region1.memory_region[2].$name              = "M4F_DRAM";
    region1.memory_region[2].size               = 0x10000;
    region1.memory_region[2].auto               = false;
    region1.memory_region[3].$name              = "USER_SHM_MEM";
    region1.memory_region[3].auto               = false;
    region1.memory_region[3].manualStartAddress = 0x701D0000;
    region1.memory_region[3].size               = 0x180;
    region1.memory_region[4].auto               = false;
    region1.memory_region[4].manualStartAddress = 0x701D0180;
    region1.memory_region[4].size               = 0x3E80;
    region1.memory_region[4].$name              = "LOG_SHM_MEM";
    region1.memory_region[5].auto               = false;
    region1.memory_region[5].manualStartAddress = 0x701D4000;
    region1.memory_region[5].size               = 0xC000;
    region1.memory_region[5].$name              = "IPC_VRING_MEM";
    
    section1.load_memory                  = "M4F_VECS";
    section1.group                        = false;
    section1.$name                        = "Vector Table";
    section1.output_section.create(1);
    section1.output_section[0].$name      = ".vectors";
    section1.output_section[0].palignment = true;
    
    section2.load_memory                  = "M4F_IRAM";
    section2.group                        = false;
    section2.$name                        = "Text Segments";
    section2.output_section.create(1);
    section2.output_section[0].$name      = ".text";
    section2.output_section[0].palignment = true;
    
    section3.group                                   = false;
    section3.load_memory                             = "M4F_DRAM";
    section3.$name                                   = "Bss Segment";
    section3.output_section.create(1);
    section3.output_section[0].$name                 = ".bss";
    section3.output_section[0].output_sections_start = "__BSS_START";
    section3.output_section[0].output_sections_end   = "__BSS_END";
    
    section4.load_memory                  = "M4F_DRAM";
    section4.group                        = false;
    section4.$name                        = "Code and Read-Only Data";
    section4.output_section.create(2);
    section4.output_section[0].$name      = ".data";
    section4.output_section[0].palignment = true;
    section4.output_section[1].$name      = ".rodata";
    section4.output_section[1].palignment = true;
    
    section5.load_memory                  = "M4F_IRAM";
    section5.group                        = false;
    section5.$name                        = "Memory and Stack Segments";
    //section5.output_section.create(5);
    section5.output_section.create(2);
    section5.output_section[0].$name      = ".sysmem";
    section5.output_section[0].palignment = true;
    section5.output_section[1].$name      = ".stack";
    section5.output_section[1].palignment = true;
    //section5.output_section[2].$name      = ".ARM.exidx";
    //section5.output_section[2].palignment = true;
    //section5.output_section[3].$name      = ".init_array";
    //section5.output_section[3].palignment = true;
    //section5.output_section[4].$name      = ".fini_array";
    //section5.output_section[4].palignment = true;
    section9.load_memory                  = "M4F_DRAM";
    section9.group                        = false;
    section9.$name                        = "C++ Sections";
    section9.output_section.create(3);
    section9.output_section[0].$name      = ".ARM.exidx";
    section9.output_section[0].palignment = true;
    section9.output_section[1].$name      = ".init_array";
    section9.output_section[1].palignment = true;
    section9.output_section[2].$name      = ".fini_array";
    section9.output_section[2].palignment = true;
    
    
    section6.type                        = "NOLOAD";
    section6.load_memory                 = "USER_SHM_MEM";
    section6.group                       = false;
    section6.$name                       = "User Shared Memory";
    section6.output_section.create(1);
    section6.output_section[0].$name     = ".bss.user_shared_mem";
    section6.output_section[0].alignment = 0;
    
    section7.load_memory                 = "LOG_SHM_MEM";
    section7.group                       = false;
    section7.type                        = "NOLOAD";
    section7.$name                       = "Log Shared Memory";
    section7.output_section.create(1);
    section7.output_section[0].$name     = ".bss.log_shared_mem";
    section7.output_section[0].alignment = 0;
    
    section8.load_memory                 = "IPC_VRING_MEM";
    section8.type                        = "NOLOAD";
    section8.group                       = false;
    section8.$name                       = "IPC Shared Memory";
    section8.output_section.create(1);
    section8.output_section[0].$name     = ".bss.ipc_vring_mem";
    section8.output_section[0].alignment = 0;
    
    addr_translate1.$name     = "CONFIG_ADDR_TRANSLATE_REGION0";
    addr_translate1.localAddr = 0x80000000;
    
    addr_translate2.$name      = "CONFIG_ADDR_TRANSLATE_REGION1";
    addr_translate2.systemAddr = 0x20000000;
    addr_translate2.localAddr  = 0xA0000000;
    
    addr_translate3.$name      = "CONFIG_ADDR_TRANSLATE_REGION2";
    addr_translate3.systemAddr = 0x40000000;
    addr_translate3.localAddr  = 0xC0000000;
    
    addr_translate4.$name      = "CONFIG_ADDR_TRANSLATE_REGION3";
    addr_translate4.systemAddr = 0x60000000;
    addr_translate4.localAddr  = 0x60000000;
    
    debug_log.enableUartLog            = true;
    debug_log.uartLog.$name            = "CONFIG_UART_CONSOLE";
    debug_log.uartLog.MCU_UART.$assign = "MCU_USART0";
    
    mpu_armv71.$name        = "CONFIG_MPU_REGION0";
    mpu_armv71.attributes   = "Device";
    mpu_armv71.allowExecute = false;
    
    mpu_armv72.$name = "CONFIG_MPU_REGION1";
    mpu_armv72.size  = 18;
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    debug_log.uartLog.MCU_UART.RXD.$suggestSolution = "A9";
    debug_log.uartLog.MCU_UART.TXD.$suggestSolution = "A8";

    Please note this would only solve the constructor not called issue. You may still have to select "No Verification" in CCS for loading the example.

    Regards,

    Prashant