AM2612: Problems were encountered when adding BISS settings in syscfg

Part Number: AM2612
Other Parts Discussed in Thread: SYSCONFIG

The software versions I am using are as follows: CCS12.8.0 / SYS/Config 1.24.2 / MOTOR CONTROL SDK for AM261x 10.2.0.07.
 
My current program has been configured with EtherCAT and uses PRU-ICSS0-MDIO. The program can run and communicate normally. When I attempt to add BISSC configuration in SYSCFG—by enabling CONFIG_BISSC0, configuring it to ICSSM1, setting BISSC_CH0_CLK to GPIO71, BISSC_CH0_TX to GPIO72, and BISSC_CH0_RX to GPIO74—I perform a direct compilation without modifying any code (neither SYS/Config itself nor the compilation process reports any errors).
 
After programming the firmware, I execute the following steps: connect target -> CPU_reset -> load OUT file. At this point, the code does not halt before the main() function but runs directly. If I click the pause button, I can see that the code stops at HwiP_user_prefetch_abort_handler_c().
 
I have tried this multiple times and obtained the same result. Conversely, if I remove the BISSC configuration in SYS/Config, everything works properly.
 
I would like to ask how to resolve this issue and which files or configurations I need to modify.
  • Hi

    Can you share the updated example.syscfg with BiSS-C added?
    Also, do you have more details on which function is causing abort?

    Regards

    Dhaval

  • Hi Dhaval Khandla,

         Sure. It seems that this webpage does not support uploading syscfg files. I have changed its file extension to txt and uploaded it. The file without BISS configuration is named example_withoutBiss.txt; please check it.

         In addition, I think the program has entered the exception interrupt before executing main(), so I have no idea which function jumps to HwiP_user_prefetch_abort_handler_c(). All I can see from the debug session is the call sequence as follows:(The function sequence I compiled is the collated debug call sequence, and its order from top to bottom is opposite to what is displayed in the actual debug panel)
    HwiP_user_prefetch_abort_handler + 0x1c() at HwiP_armv7r_handlers_nortos_asm.S: 180 0x700FF9E4
    -------> HwiP_user_prefetch_abort_handler_c() at HwiP_armv7r_handlers_nortos.c: 313 0x700FF86A
    --------> HwiP_user_prefetch_abort_handler_c() at HwiP_armv7r_handlers_nortos.c: 386 0x700FF878
    Regards.

     

    /**
     * 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 "AM261x_ZFG" --part "AM2612" --package "ZFG" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @v2CliArgs --device "AM2612" --package "NFBGA (ZFG)" --variant "500MHz" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @versions {"tool":"1.24.2+4234"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const eeprom      = scripting.addModule("/board/eeprom/eeprom", {}, false);
    const eeprom1     = eeprom.addInstance();
    const flash       = scripting.addModule("/board/flash/flash", {}, false);
    const flash1      = flash.addInstance();
    const led         = scripting.addModule("/board/led/led", {}, false);
    const led1        = led.addInstance();
    const led2        = led.addInstance();
    const adc         = scripting.addModule("/drivers/adc/adc", {}, false);
    const adc1        = adc.addInstance();
    const adc2        = adc.addInstance();
    const adc3        = adc.addInstance();
    const dac         = scripting.addModule("/drivers/dac/dac", {}, false);
    const dac1        = dac.addInstance();
    const ecap        = scripting.addModule("/drivers/ecap/ecap", {}, false);
    const ecap1       = ecap.addInstance();
    const epwm        = scripting.addModule("/drivers/epwm/epwm", {}, false);
    const epwm1       = epwm.addInstance();
    const epwm2       = epwm.addInstance();
    const epwm3       = epwm.addInstance();
    const epwm4       = epwm.addInstance();
    const epwm5       = epwm.addInstance();
    const epwm6       = epwm.addInstance();
    const gpio        = scripting.addModule("/drivers/gpio/gpio", {}, false);
    const gpio1       = gpio.addInstance();
    const gpio2       = gpio.addInstance();
    const gpio3       = gpio.addInstance();
    const gpio4       = gpio.addInstance();
    const gpio5       = gpio.addInstance();
    const gpio6       = gpio.addInstance();
    const gpio7       = gpio.addInstance();
    const gpio8       = gpio.addInstance();
    const gpio9       = gpio.addInstance();
    const gpio10      = gpio.addInstance();
    const gpio11      = gpio.addInstance();
    const gpio12      = gpio.addInstance();
    const gpio13      = gpio.addInstance();
    const gpio14      = gpio.addInstance();
    const gpio15      = gpio.addInstance();
    const gpio16      = gpio.addInstance();
    const gpio17      = gpio.addInstance();
    const gpio18      = gpio.addInstance();
    const gpio19      = gpio.addInstance();
    const i2c         = scripting.addModule("/drivers/i2c/i2c", {}, false);
    const i2c1        = i2c.addInstance();
    const mcspi       = scripting.addModule("/drivers/mcspi/mcspi", {}, false);
    const mcspi1      = mcspi.addInstance();
    const mcspi2      = mcspi.addInstance();
    const rti         = scripting.addModule("/drivers/rti/rti", {}, false);
    const rti1        = rti.addInstance();
    const sdfm        = scripting.addModule("/drivers/sdfm/sdfm", {}, false);
    const sdfm1       = sdfm.addInstance();
    const uart        = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart1       = uart.addInstance();
    const uart2       = uart.addInstance();
    const watchdog    = scripting.addModule("/drivers/watchdog/watchdog", {}, false);
    const watchdog1   = watchdog.addInstance();
    const ethercat    = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
    const ethercat1   = ethercat.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();
    const mpu_armv73  = mpu_armv7.addInstance();
    const mpu_armv74  = mpu_armv7.addInstance();
    const mpu_armv75  = mpu_armv7.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 section10   = section.addInstance();
    const section11   = section.addInstance();
    const section12   = section.addInstance();
    const section13   = section.addInstance();
    const section14   = section.addInstance();
    const tinyusb     = scripting.addModule("/usb/tinyusb/tinyusb", {}, false);
    const tinyusb1    = tinyusb.addInstance();
    const epwm_xbar   = scripting.addModule("/xbar/epwm_xbar/epwm_xbar", {}, false);
    const epwm_xbar1  = epwm_xbar.addInstance();
    const input_xbar  = scripting.addModule("/xbar/input_xbar/input_xbar", {}, false);
    const input_xbar1 = input_xbar.addInstance();
    const input_xbar2 = input_xbar.addInstance();
    const input_xbar3 = input_xbar.addInstance();
    const input_xbar4 = input_xbar.addInstance();
    const int_xbar    = scripting.addModule("/xbar/int_xbar/int_xbar", {}, false);
    const int_xbar1   = int_xbar.addInstance();
    const int_xbar2   = int_xbar.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    eeprom1.$name = "CONFIG_EEPROM0";
    
    flash1.$name                                    = "CONFIG_FLASH0";
    flash1.device                                   = "CUSTOM_FLASH";
    flash1.skipHwInit                               = true;
    flash1.fname                                    = "S25FL128SA";
    flash1.protocol                                 = "1s_1s_4s";
    flash1.flashSize                                = 16777216;
    flash1.flashManfId                              = "0x01";
    flash1.flashDeviceId                            = "0x2018";
    flash1.cmdBlockErase4B                          = "0xD8";
    flash1.cmdSectorErase4B                         = "0x20";
    flash1.flashQeType                              = "1";
    flash1.flashDeviceBusyTimeout                   = 24000000;
    flash1.flashPageProgTimeout                     = 4000;
    flash1.enable4BAddr                             = false;
    flash1.cmdExtType                               = "NONE";
    flash1.quirks                                   = "NULL";
    flash1.peripheralDriver.$name                   = "CONFIG_OSPI0";
    flash1.peripheralDriver.inputClkFreq            = 83333333;
    flash1.peripheralDriver.baudRateDiv             = 8;
    flash1.peripheralDriver.phyEnable               = true;
    flash1.peripheralDriver.OSPI.$assign            = "OSPI0";
    flash1.peripheralDriver.OSPI.CLK.$assign        = "GPIO10";
    flash1.peripheralDriver.OSPI.CSn0.$assign       = "GPIO62";
    flash1.peripheralDriver.OSPI.DQS.$used          = false;
    flash1.peripheralDriver.OSPI.D7.$used           = false;
    flash1.peripheralDriver.OSPI.D6.$used           = false;
    flash1.peripheralDriver.OSPI.D5.$used           = false;
    flash1.peripheralDriver.OSPI.D4.$assign         = "GPIO76";
    flash1.peripheralDriver.OSPI.D3.$assign         = "GPIO69";
    flash1.peripheralDriver.OSPI.D2.$assign         = "GPIO7";
    flash1.peripheralDriver.OSPI.D1.$assign         = "GPIO70";
    flash1.peripheralDriver.OSPI.RESET_OUT0.$assign = "GPIO61";
    flash1.peripheralDriver.child.$name             = "drivers_ospi_v0_ospi_v0_am261x_template0";
    
    led1.$name = "CONFIG_RUN_LED";
    
    led2.$name = "CONFIG_ERR_LED";
    
    adc1.$name             = "ADC1";
    adc1.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc1.ADC.AIN6.$used    = false;
    
    adc2.$name             = "ADC0";
    adc2.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc2.ADC.AIN1.$used    = false;
    adc2.ADC.AIN2.$used    = false;
    adc2.ADC.AIN3.$used    = false;
    adc2.ADC.AIN4.$used    = false;
    adc2.ADC.AIN5.$used    = false;
    adc2.ADC.AIN6.$used    = false;
    
    adc3.$name             = "ADC2";
    adc3.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc3.enableConverter   = true;
    adc3.ADC.$assign       = "ADC2";
    adc3.ADC.AIN0.$assign  = "ADC2_AIN0";
    adc3.ADC.AIN0.$used    = false;
    adc3.ADC.AIN1.$assign  = "ADC2_AIN1";
    adc3.ADC.AIN1.$used    = false;
    adc3.ADC.AIN2.$assign  = "ADC2_AIN2";
    adc3.ADC.AIN2.$used    = false;
    adc3.ADC.AIN3.$assign  = "ADC2_AIN3";
    adc3.ADC.AIN3.$used    = false;
    adc3.ADC.AIN4.$assign  = "ADC2_AIN4";
    adc3.ADC.AIN5.$assign  = "ADC2_AIN5";
    adc3.ADC.AIN5.$used    = false;
    adc3.ADC.AIN6.$assign  = "ADC2_AIN6";
    
    dac1.enableOutput = true;
    dac1.$name        = "DAC";
    
    ecap1.$name             = "ECAP_SYNC0";
    ecap1.eventTwoPolarity  = "ECAP_EVNT_FALLING_EDGE";
    ecap1.eventFourPolarity = "ECAP_EVNT_FALLING_EDGE";
    ecap1.syncOutMode       = "ECAP_SYNC_OUT_DISABLED";
    ecap1.ecapInput         = "ECAP_INPUT_INPUTXBAR3";
    ecap1.qualPeriod        = "ECAP_PULSE_WIDTH_FILTER_CYCLE6";
    ecap1.reArm             = true;
    
    epwm1.epwmTimebase_emulationMode = "EPWM_EMULATION_FREE_RUN";
    epwm1.$name                      = "EPWM_U";
    epwm1.EPWM.$assign               = "EPWM2";
    epwm1.EPWM.A.$assign             = "GPIO47";
    epwm1.EPWM.B.$assign             = "GPIO48";
    
    epwm2.$name          = "EPWM_V";
    epwm2.EPWM.$assign   = "EPWM3";
    epwm2.EPWM.A.$assign = "GPIO49";
    epwm2.EPWM.B.$assign = "GPIO50";
    
    epwm3.$name          = "EPWM_W";
    epwm3.EPWM.$assign   = "EPWM4";
    epwm3.EPWM.A.$assign = "GPIO51";
    epwm3.EPWM.B.$assign = "GPIO52";
    
    epwm4.$name                                             = "EPWM_INT";
    epwm4.epwmTimebase_emulationMode                        = "EPWM_EMULATION_FREE_RUN";
    epwm4.epwmTimebase_period                               = 6250;
    epwm4.epwmTimebase_periodLoadMode                       = "EPWM_PERIOD_DIRECT_LOAD";
    epwm4.epwmTimebase_counterMode                          = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm4.epwmEventTrigger_enableInterrupt                  = true;
    epwm4.epwmEventTrigger_interruptEventCount              = "1";
    epwm4.epwmEventTrigger_interruptSource                  = "EPWM_INT_TBCTR_PERIOD";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEnable         = true;
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerSource         = "EPWM_SOC_TBCTR_MIXED_EVENT";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar = "1";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerMixedSource    = ["EPWM_INT_MIX_TBCTR_D_CMPA","EPWM_INT_MIX_TBCTR_U_CMPA"];
    epwm4.EPWM.$assign                                      = "EPWM0";
    epwm4.EPWM.A.$used                                      = false;
    epwm4.EPWM.B.$used                                      = false;
    
    epwm5.$name          = "EPWM_PTO";
    epwm5.EPWM.$assign   = "EPWM5";
    epwm5.EPWM.A.$assign = "GPIO53";
    epwm5.EPWM.B.$assign = "GPIO54";
    
    epwm6.$name          = "EPWM_SDFM_CLK";
    epwm6.EPWM.$assign   = "EPWM6";
    epwm6.EPWM.A.$assign = "GPIO55";
    epwm6.EPWM.B.$used   = false;
    
    gpio1.$name          = "GPIO_HMI_STROBE";
    gpio1.pinDir         = "OUTPUT";
    gpio1.qualSel        = "async";
    gpio1.pu_pd          = "pu";
    gpio1.GPIO_n.$assign = "GPIO0";
    
    gpio2.$name          = "GPIO_OC_IBUS";
    gpio2.GPIO_n.$assign = "GPIO23";
    
    gpio3.pinDir         = "OUTPUT";
    gpio3.qualSel        = "async";
    gpio3.$name          = "GPIO_MECH_BRK_HV";
    gpio3.GPIO_n.$assign = "GPIO56";
    
    gpio4.qualSel        = "6sample";
    gpio4.$name          = "GPIO_DI0";
    gpio4.GPIO_n.$assign = "GPIO42";
    
    gpio5.$name          = "GPIO_DI1";
    gpio5.GPIO_n.$assign = "GPIO41";
    
    gpio6.$name          = "GPIO_DI2";
    gpio6.GPIO_n.$assign = "GPIO31";
    
    gpio7.$name          = "GPIO_DI3";
    gpio7.GPIO_n.$assign = "GPIO32";
    
    gpio8.$name          = "GPIO_DI4";
    gpio8.GPIO_n.$assign = "GPIO33";
    
    gpio9.pinDir         = "OUTPUT";
    gpio9.$name          = "GPIO_DQ0";
    gpio9.GPIO_n.$assign = "GPIO34";
    
    gpio10.pinDir         = "OUTPUT";
    gpio10.$name          = "GPIO_DQ1";
    gpio10.GPIO_n.$assign = "GPIO35";
    
    gpio11.pinDir         = "OUTPUT";
    gpio11.$name          = "GPIO_DQ2";
    gpio11.GPIO_n.$assign = "GPIO36";
    
    gpio12.$name          = "GPIO_MOD_EN";
    gpio12.GPIO_n.$assign = "GPIO29";
    
    gpio13.$name          = "GPIO_OC_W";
    gpio13.GPIO_n.$assign = "GPIO24";
    
    gpio14.$name          = "GPIO_OC_U";
    gpio14.GPIO_n.$assign = "GPIO25";
    
    gpio15.pinDir         = "OUTPUT";
    gpio15.$name          = "GPIO_POW_BRK_EN";
    gpio15.GPIO_n.$assign = "GPIO57";
    
    gpio16.$name          = "ECAT_RESET";
    gpio16.pinDir         = "OUTPUT";
    gpio16.defaultValue   = "1";
    gpio16.GPIO_n.$assign = "GPIO84";
    
    gpio17.$name          = "ECAT_RUN";
    gpio17.pinDir         = "OUTPUT";
    led1.peripheralDriver = gpio17;
    gpio17.GPIO_n.$assign = "GPIO89";
    
    gpio18.$name          = "ECAT_ERR";
    gpio18.pinDir         = "OUTPUT";
    led2.peripheralDriver = gpio18;
    gpio18.GPIO_n.$assign = "GPIO88";
    
    gpio19.$name          = "ECAT_SYNC0";
    gpio19.GPIO_n.$assign = "GPIO8";
    
    i2c1.$name               = "CONFIG_I2C0";
    i2c1.ownTargetAddr       = 0x50;
    eeprom1.peripheralDriver = i2c1;
    i2c1.I2C.SCL.pu_pd       = "pu";
    i2c1.I2C.SDA.pu_pd       = "pu";
    i2c1.I2C_child.$name     = "drivers_i2c_v1_i2c_v1_template0";
    
    mcspi1.$name                       = "MCSPI_HMI";
    mcspi1.intrEnable                  = "POLLED";
    mcspi1.sdkInfra                    = "LLD";
    mcspi1.inputSelect                 = "0";
    mcspi1.dpe0                        = "DISABLE";
    mcspi1.dpe1                        = "ENABLE";
    mcspi1.SPI.$assign                 = "SPI1";
    mcspi1.SPI.CLK.$assign             = "GPIO16";
    mcspi1.SPI.D0.$assign              = "GPIO17";
    mcspi1.SPI.D1.$assign              = "GPIO18";
    mcspi1.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH0";
    mcspi1.mcspiChannel[0].CSn.$assign = "GPIO15";
    mcspi1.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld1";
    
    mcspi2.$name                       = "MCSPI_EPR";
    mcspi2.intrEnable                  = "POLLED";
    mcspi2.sdkInfra                    = "LLD";
    mcspi2.SPI.$assign                 = "SPI2";
    mcspi2.SPI.CLK.$assign             = "GPIO129";
    mcspi2.SPI.D0.$assign              = "GPIO130";
    mcspi2.SPI.D1.$assign              = "GPIO128";
    mcspi2.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH1";
    mcspi2.mcspiChannel[0].bitRate     = 2000000;
    mcspi2.mcspiChannel[0].CSn.$assign = "GPIO138";
    mcspi2.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld0";
    
    rti1.$name       = "RTI_CPU";
    rti1.clkSource   = "SYS_CLK";
    rti1.cntr0OpFreq = 125000000;
    rti1.RTI.$assign = "RTI1";
    
    sdfm1.Use_FilterChannel_1           = true;
    sdfm1.Use_FilterChannel_2           = true;
    sdfm1.Ch2_SDCLKSEL                  = "SDFM_CLK_SOURCE_SD1_CLK";
    sdfm1.Ch1_DataFilterEnable          = true;
    sdfm1.Ch1_ComparatorEnable          = true;
    sdfm1.Ch1_DOSR                      = 128;
    sdfm1.Ch1_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch2_DataFilterEnable          = true;
    sdfm1.Ch2_ComparatorEnable          = true;
    sdfm1.Ch2_DOSR                      = 128;
    sdfm1.Ch2_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch1_SD_modulatorFrequency     = 17.857;
    sdfm1.$name                         = "SDFM_IUW";
    sdfm1.SDFM.$assign                  = "SDFM1";
    sdfm1.SDFM.CLK2.$used               = false;
    sdfm1.SDFM.CLK3.$used               = false;
    sdfm1.SDFM.D0.$assign               = "GPIO131";
    sdfm1.SDFM.D1.$assign               = "GPIO133";
    sdfm1.SDFM.D2.$used                 = false;
    sdfm1.SDFM.D3.$used                 = false;
    
    const soc_ctrl_adc    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_adc", {}, false);
    const soc_ctrl_adc1   = soc_ctrl_adc.addInstance({}, false);
    soc_ctrl_adc1.$name   = "soc_ctrl_adc0";
    const soc_ctrl        = scripting.addModule("/drivers/soc_ctrl/soc_ctrl", {}, false);
    soc_ctrl.soc_ctrl_adc = soc_ctrl_adc1;
    adc.adcReferences     = soc_ctrl_adc1;
    
    const soc_ctrl_cmpss    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_cmpss", {}, false);
    const soc_ctrl_cmpss1   = soc_ctrl_cmpss.addInstance({}, false);
    soc_ctrl_cmpss1.$name   = "soc_ctrl_cmpss0";
    soc_ctrl.soc_ctrl_cmpss = soc_ctrl_cmpss1;
    
    const soc_ctrl_ecap    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_ecap", {}, false);
    const soc_ctrl_ecap1   = soc_ctrl_ecap.addInstance({}, false);
    soc_ctrl_ecap1.$name   = "soc_ctrl_ecap0";
    soc_ctrl.soc_ctrl_ecap = soc_ctrl_ecap1;
    ecap.ecapSocControls   = soc_ctrl_ecap1;
    
    const soc_ctrl_epwm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_epwm", {}, false);
    const soc_ctrl_epwm1   = soc_ctrl_epwm.addInstance({}, false);
    soc_ctrl_epwm1.$name   = "soc_ctrl_epwm0";
    soc_ctrl.soc_ctrl_epwm = soc_ctrl_epwm1;
    epwm.epwmTbClkSync     = soc_ctrl_epwm1;
    
    const soc_ctrl_sdfm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_sdfm", {}, false);
    const soc_ctrl_sdfm1   = soc_ctrl_sdfm.addInstance({}, false);
    soc_ctrl_sdfm1.$name   = "soc_ctrl_sdfm0";
    soc_ctrl.soc_ctrl_sdfm = soc_ctrl_sdfm1;
    sdfm.soc_ctrl_sdfm     = soc_ctrl_sdfm1;
    
    uart1.$name             = "UART_ENC";
    uart1.intrEnable        = "DISABLE";
    uart1.hwFlowControl     = true;
    uart1.baudRate          = 5000000;
    uart1.child.$name       = "drivers_uart_v2_uart_v2_template1";
    uart1.UART.$assign      = "UART3";
    uart1.UART.RXD.$assign  = "GPIO11";
    uart1.UART.TXD.$assign  = "GPIO12";
    uart1.UART.RTSn.$assign = "GPIO14";
    uart1.UART.CTSn.$assign = "GPIO13";
    uart1.UART.CTSn.$used   = false;
    
    uart2.$name        = "UART_MDB";
    uart2.intrEnable   = "DISABLE";
    uart2.clockSource  = "SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT0";
    uart2.inputClkFreq = 48000000;
    uart2.baudRate     = 19200;
    uart2.parityType   = "ODD";
    uart2.UART.$assign = "UART0";
    uart2.child.$name  = "drivers_uart_v2_uart_v2_template2";
    
    watchdog1.$name          = "CONFIG_WDT0";
    watchdog1.wdt_clk_src    = "SOC_RcmPeripheralClockSource_XTALCLK";
    watchdog1.wdt_func_clk   = 12500000;
    watchdog1.expirationTime = 2000;
    
    ethercat1.$name                      = "CONFIG_ETHERCAT0";
    ethercat1["PRU-ICSS0-IEP"].$assign   = "PRU-ICSS0-IEP";
    ethercat1["PRU-ICSS0"].$assign       = "PRU-ICSS0";
    ethercat1["PRU-ICSS0-MDIO"].$assign  = "PRU-ICSS0-MDIO";
    ethercat1.ethphy[0].$name            = "CONFIG_ETHPHY0";
    ethercat1.ethphy[0].mdioPort         = 1;
    ethercat1.ethphy[0].name             = "CUSTOM";
    ethercat1.ethphy[0].customDeviceName = "DP83822";
    ethercat1.ethphy[1].$name            = "CONFIG_ETHPHY1";
    ethercat1.ethphy[1].mdioPort         = 2;
    ethercat1.ethphy[1].name             = "CUSTOM";
    ethercat1.ethphy[1].customDeviceName = "DP83822";
    
    const pruicss                            = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
    const pruicss1                           = pruicss.addInstance({}, false);
    pruicss1.$name                           = "CONFIG_PRU_ICSS0";
    ethercat1.icss                           = pruicss1;
    pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x80000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    
    mpu_armv75.$name        = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr     = 0x70100000;
    mpu_armv75.size         = 17;
    mpu_armv75.attributes   = "NonCached";
    mpu_armv75.allowExecute = false;
    
    section1.load_memory                  = "R5F_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                  = "OCRAM";
    section2.$name                        = "Text Segments";
    section2.output_section.create(5);
    section2.output_section[0].$name      = ".text.hwi";
    section2.output_section[0].palignment = true;
    section2.output_section[1].$name      = ".text.cache";
    section2.output_section[1].palignment = true;
    section2.output_section[2].$name      = ".text.mpu";
    section2.output_section[2].palignment = true;
    section2.output_section[3].$name      = ".text.boot";
    section2.output_section[3].palignment = true;
    section2.output_section[4].$name      = ".text:abort";
    section2.output_section[4].palignment = true;
    
    section3.load_memory                  = "OCRAM";
    section3.$name                        = "Code and Read-Only Data";
    section3.output_section.create(2);
    section3.output_section[0].$name      = ".text";
    section3.output_section[0].palignment = true;
    section3.output_section[1].$name      = ".rodata";
    section3.output_section[1].palignment = true;
    
    section4.load_memory                  = "OCRAM";
    section4.$name                        = "Data Segment";
    section4.output_section.create(1);
    section4.output_section[0].$name      = ".data";
    section4.output_section[0].palignment = true;
    
    section5.load_memory                             = "OCRAM";
    section5.$name                                   = "Memory Segments";
    section5.output_section.create(4);
    section5.output_section[0].$name                 = ".bss";
    section5.output_section[0].output_sections_start = "__BSS_START";
    section5.output_section[0].output_sections_end   = "__BSS_END";
    section5.output_section[0].palignment            = true;
    section5.output_section[1].$name                 = ".sysmem";
    section5.output_section[1].palignment            = true;
    section5.output_section[2].$name                 = ".stack";
    section5.output_section[2].palignment            = true;
    section5.output_section[3].$name                 = ".usbCxtRam";
    
    section6.load_memory                              = "OCRAM";
    section6.$name                                    = "Stack Segments";
    section6.output_section.create(5);
    section6.output_section[0].$name                  = ".irqstack";
    section6.output_section[0].output_sections_start  = "__IRQ_STACK_START";
    section6.output_section[0].output_sections_end    = "__IRQ_STACK_END";
    section6.output_section[0].input_section.create(1);
    section6.output_section[0].input_section[0].$name = ". = . + __IRQ_STACK_SIZE;";
    section6.output_section[1].$name                  = ".fiqstack";
    section6.output_section[1].output_sections_start  = "__FIQ_STACK_START";
    section6.output_section[1].output_sections_end    = "__FIQ_STACK_END";
    section6.output_section[1].input_section.create(1);
    section6.output_section[1].input_section[0].$name = ". = . + __FIQ_STACK_SIZE;";
    section6.output_section[2].$name                  = ".svcstack";
    section6.output_section[2].output_sections_start  = "__SVC_STACK_START";
    section6.output_section[2].output_sections_end    = "__SVC_STACK_END";
    section6.output_section[2].input_section.create(1);
    section6.output_section[2].input_section[0].$name = ". = . + __SVC_STACK_SIZE;";
    section6.output_section[3].$name                  = ".abortstack";
    section6.output_section[3].output_sections_start  = "__ABORT_STACK_START";
    section6.output_section[3].output_sections_end    = "__ABORT_STACK_END";
    section6.output_section[3].input_section.create(1);
    section6.output_section[3].input_section[0].$name = ". = . + __ABORT_STACK_SIZE;";
    section6.output_section[4].$name                  = ".undefinedstack";
    section6.output_section[4].output_sections_start  = "__UNDEFINED_STACK_START";
    section6.output_section[4].output_sections_end    = "__UNDEFINED_STACK_END";
    section6.output_section[4].input_section.create(1);
    section6.output_section[4].input_section[0].$name = ". = . + __UNDEFINED_STACK_SIZE;";
    
    section7.load_memory                  = "OCRAM";
    section7.$name                        = "Initialization and Exception Handling";
    section7.output_section.create(3);
    section7.output_section[0].$name      = ".ARM.exidx";
    section7.output_section[0].palignment = true;
    section7.output_section[1].$name      = ".init_array";
    section7.output_section[1].palignment = true;
    section7.output_section[2].$name      = ".fini_array";
    section7.output_section[2].palignment = true;
    
    section8.load_memory                 = "USER_SHM_MEM";
    section8.type                        = "NOLOAD";
    section8.$name                       = "User Shared Memory";
    section8.group                       = false;
    section8.output_section.create(1);
    section8.output_section[0].$name     = ".bss.user_shared_mem";
    section8.output_section[0].alignment = 0;
    
    section9.load_memory                 = "LOG_SHM_MEM";
    section9.$name                       = "Log Shared Memory";
    section9.group                       = false;
    section9.type                        = "NOLOAD";
    section9.output_section.create(1);
    section9.output_section[0].$name     = ".bss.log_shared_mem";
    section9.output_section[0].alignment = 0;
    
    section10.load_memory                 = "RTOS_NORTOS_IPC_SHM_MEM";
    section10.type                        = "NOLOAD";
    section10.$name                       = "IPC Shared Memory";
    section10.group                       = false;
    section10.output_section.create(1);
    section10.output_section[0].$name     = ".bss.ipc_vring_mem";
    section10.output_section[0].alignment = 0;
    
    section11.load_memory                 = "MAILBOX_HSM";
    section11.type                        = "NOLOAD";
    section11.$name                       = "SIPC HSM Queue Memory";
    section11.group                       = false;
    section11.output_section.create(1);
    section11.output_section[0].$name     = ".bss.sipc_hsm_queue_mem";
    section11.output_section[0].alignment = 0;
    
    section12.load_memory                 = "MAILBOX_R5F";
    section12.$name                       = "SIPC R5F Queue Memory";
    section12.group                       = false;
    section12.type                        = "NOLOAD";
    section12.output_section.create(1);
    section12.output_section[0].$name     = ".bss.sipc_secure_host_queue_mem";
    section12.output_section[0].alignment = 0;
    
    section13.$name                   = "USB Non Cache Memory";
    section13.load_memory             = "NON_CACHE_MEM";
    section13.output_section.create(1);
    section13.output_section[0].$name = ".bss.nocache";
    
    section14.$name                        = "MATHLIB_PLACE";
    section14.group                        = false;
    section14.load_memory                  = "R5F_TCMA";
    section14.output_section.create(1);
    section14.output_section[0].$name      = "armiqmath";
    section14.output_section[0].palignment = true;
    
    tinyusb1.$name        = "CONFIG_TINYUSB0";
    tinyusb1.USB0.$assign = "USB0";
    
    epwm_xbar1.$name      = "CONFIG_EPWM_XBAR0";
    epwm_xbar1.xbarOutput = ["ADC0_EVT1","ADC1_EVT1","ADC2_EVT1"];
    
    input_xbar1.$name      = "CONFIG_INPUT_XBAR0";
    input_xbar1.xbarOutput = "GPIO23";
    
    input_xbar2.$name      = "CONFIG_INPUT_XBAR1";
    input_xbar2.xbarOutput = "GPIO24";
    input_xbar2.instance   = "INPUT_XBAR_1";
    
    input_xbar3.$name      = "CONFIG_INPUT_XBAR2";
    input_xbar3.instance   = "INPUT_XBAR_2";
    input_xbar3.xbarOutput = "GPIO25";
    
    input_xbar4.$name      = "CONFIG_INPUT_XBAR3";
    input_xbar4.instance   = "INPUT_XBAR_3";
    input_xbar4.xbarOutput = "GPIO8";
    
    int_xbar1.$name      = "CONFIG_INT_XBAR0";
    int_xbar1.xbarOutput = ["EPWM0_INT"];
    
    int_xbar2.$name      = "CONFIG_INT_XBAR1";
    int_xbar2.xbarOutput = ["ECAP0_INT"];
    int_xbar2.instance   = "INT_XBAR_1";
    
    /**
     * 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.
     */
    flash1.peripheralDriver.OSPI.D0.$suggestSolution                        = "GPIO2";
    adc1.ADC.$suggestSolution                                               = "ADC1";
    adc1.ADC.AIN0.$suggestSolution                                          = "ADC1_AIN0";
    adc1.ADC.AIN1.$suggestSolution                                          = "ADC1_AIN1";
    adc1.ADC.AIN2.$suggestSolution                                          = "ADC1_AIN2";
    adc1.ADC.AIN3.$suggestSolution                                          = "ADC1_AIN3";
    adc1.ADC.AIN4.$suggestSolution                                          = "ADC1_AIN4";
    adc1.ADC.AIN5.$suggestSolution                                          = "ADC1_AIN5";
    adc2.ADC.$suggestSolution                                               = "ADC0";
    adc2.ADC.AIN0.$suggestSolution                                          = "ADC0_AIN0";
    i2c1.I2C.$suggestSolution                                               = "I2C1";
    i2c1.I2C.SCL.$suggestSolution                                           = "GPIO66";
    i2c1.I2C.SDA.$suggestSolution                                           = "GPIO65";
    sdfm1.SDFM.CLK0.$suggestSolution                                        = "GPIO77";
    sdfm1.SDFM.CLK1.$suggestSolution                                        = "GPIO132";
    uart2.UART.RXD.$suggestSolution                                         = "GPIO27";
    uart2.UART.TXD.$suggestSolution                                         = "GPIO28";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT0.$suggestSolution      = "GPIO119";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT1.$suggestSolution      = "GPIO124";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT30.$suggestSolution = "GPIO105";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT31.$suggestSolution = "GPIO104";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO8.$suggestSolution                  = "GPIO90";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO5.$suggestSolution                  = "GPIO87";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO6.$suggestSolution                  = "GPIO91";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO4.$suggestSolution                  = "GPIO92";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO0.$suggestSolution                  = "GPIO93";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO1.$suggestSolution                  = "GPIO94";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO2.$suggestSolution                  = "GPIO95";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO3.$suggestSolution                  = "GPIO96";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO16.$suggestSolution                 = "GPIO97";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO15.$suggestSolution                 = "GPIO98";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO11.$suggestSolution                 = "GPIO99";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO12.$suggestSolution                 = "GPIO100";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO13.$suggestSolution                 = "GPIO101";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO14.$suggestSolution                 = "GPIO102";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO8.$suggestSolution                  = "GPIO106";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO5.$suggestSolution                  = "GPIO103";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO6.$suggestSolution                  = "GPIO107";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO4.$suggestSolution                  = "GPIO108";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO0.$suggestSolution                  = "GPIO109";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO1.$suggestSolution                  = "GPIO110";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO2.$suggestSolution                  = "GPIO111";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO3.$suggestSolution                  = "GPIO112";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO16.$suggestSolution                 = "GPIO113";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO15.$suggestSolution                 = "GPIO114";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO11.$suggestSolution                 = "GPIO115";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO12.$suggestSolution                 = "GPIO116";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO13.$suggestSolution                 = "GPIO117";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO14.$suggestSolution                 = "GPIO118";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDIO.$suggestSolution             = "GPIO85";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDC.$suggestSolution              = "GPIO86";
    tinyusb1.USB0.USB0_DM.$suggestSolution                                  = "GPIO140";
    tinyusb1.USB0.USB0_DP.$suggestSolution                                  = "GPIO139";
    tinyusb1.USB0.USB0_DRVVBUS.$suggestSolution                             = "GPIO121";
    
    /**
     * 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 "AM261x_ZFG" --part "AM2612" --package "ZFG" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @v2CliArgs --device "AM2612" --package "NFBGA (ZFG)" --variant "500MHz" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @versions {"tool":"1.24.2+4234"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const eeprom      = scripting.addModule("/board/eeprom/eeprom", {}, false);
    const eeprom1     = eeprom.addInstance();
    const flash       = scripting.addModule("/board/flash/flash", {}, false);
    const flash1      = flash.addInstance();
    const led         = scripting.addModule("/board/led/led", {}, false);
    const led1        = led.addInstance();
    const led2        = led.addInstance();
    const adc         = scripting.addModule("/drivers/adc/adc", {}, false);
    const adc1        = adc.addInstance();
    const adc2        = adc.addInstance();
    const adc3        = adc.addInstance();
    const dac         = scripting.addModule("/drivers/dac/dac", {}, false);
    const dac1        = dac.addInstance();
    const ecap        = scripting.addModule("/drivers/ecap/ecap", {}, false);
    const ecap1       = ecap.addInstance();
    const epwm        = scripting.addModule("/drivers/epwm/epwm", {}, false);
    const epwm1       = epwm.addInstance();
    const epwm2       = epwm.addInstance();
    const epwm3       = epwm.addInstance();
    const epwm4       = epwm.addInstance();
    const epwm5       = epwm.addInstance();
    const epwm6       = epwm.addInstance();
    const gpio        = scripting.addModule("/drivers/gpio/gpio", {}, false);
    const gpio1       = gpio.addInstance();
    const gpio2       = gpio.addInstance();
    const gpio3       = gpio.addInstance();
    const gpio4       = gpio.addInstance();
    const gpio5       = gpio.addInstance();
    const gpio6       = gpio.addInstance();
    const gpio7       = gpio.addInstance();
    const gpio8       = gpio.addInstance();
    const gpio9       = gpio.addInstance();
    const gpio10      = gpio.addInstance();
    const gpio11      = gpio.addInstance();
    const gpio12      = gpio.addInstance();
    const gpio13      = gpio.addInstance();
    const gpio14      = gpio.addInstance();
    const gpio15      = gpio.addInstance();
    const gpio16      = gpio.addInstance();
    const gpio17      = gpio.addInstance();
    const gpio18      = gpio.addInstance();
    const gpio19      = gpio.addInstance();
    const i2c         = scripting.addModule("/drivers/i2c/i2c", {}, false);
    const i2c1        = i2c.addInstance();
    const mcspi       = scripting.addModule("/drivers/mcspi/mcspi", {}, false);
    const mcspi1      = mcspi.addInstance();
    const mcspi2      = mcspi.addInstance();
    const rti         = scripting.addModule("/drivers/rti/rti", {}, false);
    const rti1        = rti.addInstance();
    const sdfm        = scripting.addModule("/drivers/sdfm/sdfm", {}, false);
    const sdfm1       = sdfm.addInstance();
    const uart        = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart1       = uart.addInstance();
    const uart2       = uart.addInstance();
    const watchdog    = scripting.addModule("/drivers/watchdog/watchdog", {}, false);
    const watchdog1   = watchdog.addInstance();
    const ethercat    = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
    const ethercat1   = ethercat.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();
    const mpu_armv73  = mpu_armv7.addInstance();
    const mpu_armv74  = mpu_armv7.addInstance();
    const mpu_armv75  = mpu_armv7.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 section10   = section.addInstance();
    const section11   = section.addInstance();
    const section12   = section.addInstance();
    const section13   = section.addInstance();
    const section14   = section.addInstance();
    const bissc       = scripting.addModule("/position_sense/bissc", {}, false);
    const bissc1      = bissc.addInstance();
    const tinyusb     = scripting.addModule("/usb/tinyusb/tinyusb", {}, false);
    const tinyusb1    = tinyusb.addInstance();
    const epwm_xbar   = scripting.addModule("/xbar/epwm_xbar/epwm_xbar", {}, false);
    const epwm_xbar1  = epwm_xbar.addInstance();
    const input_xbar  = scripting.addModule("/xbar/input_xbar/input_xbar", {}, false);
    const input_xbar1 = input_xbar.addInstance();
    const input_xbar2 = input_xbar.addInstance();
    const input_xbar3 = input_xbar.addInstance();
    const input_xbar4 = input_xbar.addInstance();
    const int_xbar    = scripting.addModule("/xbar/int_xbar/int_xbar", {}, false);
    const int_xbar1   = int_xbar.addInstance();
    const int_xbar2   = int_xbar.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    eeprom1.$name = "CONFIG_EEPROM0";
    
    flash1.$name                                    = "CONFIG_FLASH0";
    flash1.device                                   = "CUSTOM_FLASH";
    flash1.skipHwInit                               = true;
    flash1.fname                                    = "S25FL128SA";
    flash1.protocol                                 = "1s_1s_4s";
    flash1.flashSize                                = 16777216;
    flash1.flashManfId                              = "0x01";
    flash1.flashDeviceId                            = "0x2018";
    flash1.cmdBlockErase4B                          = "0xD8";
    flash1.cmdSectorErase4B                         = "0x20";
    flash1.flashQeType                              = "1";
    flash1.flashDeviceBusyTimeout                   = 24000000;
    flash1.flashPageProgTimeout                     = 4000;
    flash1.enable4BAddr                             = false;
    flash1.cmdExtType                               = "NONE";
    flash1.quirks                                   = "NULL";
    flash1.peripheralDriver.$name                   = "CONFIG_OSPI0";
    flash1.peripheralDriver.inputClkFreq            = 83333333;
    flash1.peripheralDriver.baudRateDiv             = 8;
    flash1.peripheralDriver.phyEnable               = true;
    flash1.peripheralDriver.OSPI.$assign            = "OSPI0";
    flash1.peripheralDriver.OSPI.CLK.$assign        = "GPIO10";
    flash1.peripheralDriver.OSPI.CSn0.$assign       = "GPIO62";
    flash1.peripheralDriver.OSPI.DQS.$used          = false;
    flash1.peripheralDriver.OSPI.D7.$used           = false;
    flash1.peripheralDriver.OSPI.D6.$used           = false;
    flash1.peripheralDriver.OSPI.D5.$used           = false;
    flash1.peripheralDriver.OSPI.D4.$assign         = "GPIO76";
    flash1.peripheralDriver.OSPI.D3.$assign         = "GPIO69";
    flash1.peripheralDriver.OSPI.D2.$assign         = "GPIO7";
    flash1.peripheralDriver.OSPI.D1.$assign         = "GPIO70";
    flash1.peripheralDriver.OSPI.RESET_OUT0.$assign = "GPIO61";
    flash1.peripheralDriver.child.$name             = "drivers_ospi_v0_ospi_v0_am261x_template0";
    
    led1.$name = "CONFIG_RUN_LED";
    
    led2.$name = "CONFIG_ERR_LED";
    
    adc1.$name             = "ADC1";
    adc1.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc1.ADC.AIN6.$used    = false;
    
    adc2.$name             = "ADC0";
    adc2.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc2.ADC.AIN1.$used    = false;
    adc2.ADC.AIN2.$used    = false;
    adc2.ADC.AIN3.$used    = false;
    adc2.ADC.AIN4.$used    = false;
    adc2.ADC.AIN5.$used    = false;
    adc2.ADC.AIN6.$used    = false;
    
    adc3.$name             = "ADC2";
    adc3.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc3.enableConverter   = true;
    adc3.ADC.$assign       = "ADC2";
    adc3.ADC.AIN0.$assign  = "ADC2_AIN0";
    adc3.ADC.AIN0.$used    = false;
    adc3.ADC.AIN1.$assign  = "ADC2_AIN1";
    adc3.ADC.AIN1.$used    = false;
    adc3.ADC.AIN2.$assign  = "ADC2_AIN2";
    adc3.ADC.AIN2.$used    = false;
    adc3.ADC.AIN3.$assign  = "ADC2_AIN3";
    adc3.ADC.AIN3.$used    = false;
    adc3.ADC.AIN4.$assign  = "ADC2_AIN4";
    adc3.ADC.AIN5.$assign  = "ADC2_AIN5";
    adc3.ADC.AIN5.$used    = false;
    adc3.ADC.AIN6.$assign  = "ADC2_AIN6";
    
    dac1.enableOutput = true;
    dac1.$name        = "DAC";
    
    ecap1.$name             = "ECAP_SYNC0";
    ecap1.eventTwoPolarity  = "ECAP_EVNT_FALLING_EDGE";
    ecap1.eventFourPolarity = "ECAP_EVNT_FALLING_EDGE";
    ecap1.syncOutMode       = "ECAP_SYNC_OUT_DISABLED";
    ecap1.ecapInput         = "ECAP_INPUT_INPUTXBAR3";
    ecap1.qualPeriod        = "ECAP_PULSE_WIDTH_FILTER_CYCLE6";
    ecap1.reArm             = true;
    
    epwm1.epwmTimebase_emulationMode = "EPWM_EMULATION_FREE_RUN";
    epwm1.$name                      = "EPWM_U";
    epwm1.EPWM.$assign               = "EPWM2";
    epwm1.EPWM.A.$assign             = "GPIO47";
    epwm1.EPWM.B.$assign             = "GPIO48";
    
    epwm2.$name          = "EPWM_V";
    epwm2.EPWM.$assign   = "EPWM3";
    epwm2.EPWM.A.$assign = "GPIO49";
    epwm2.EPWM.B.$assign = "GPIO50";
    
    epwm3.$name          = "EPWM_W";
    epwm3.EPWM.$assign   = "EPWM4";
    epwm3.EPWM.A.$assign = "GPIO51";
    epwm3.EPWM.B.$assign = "GPIO52";
    
    epwm4.$name                                             = "EPWM_INT";
    epwm4.epwmTimebase_emulationMode                        = "EPWM_EMULATION_FREE_RUN";
    epwm4.epwmTimebase_period                               = 6250;
    epwm4.epwmTimebase_periodLoadMode                       = "EPWM_PERIOD_DIRECT_LOAD";
    epwm4.epwmTimebase_counterMode                          = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm4.epwmEventTrigger_enableInterrupt                  = true;
    epwm4.epwmEventTrigger_interruptEventCount              = "1";
    epwm4.epwmEventTrigger_interruptSource                  = "EPWM_INT_TBCTR_PERIOD";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEnable         = true;
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerSource         = "EPWM_SOC_TBCTR_MIXED_EVENT";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar = "1";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerMixedSource    = ["EPWM_INT_MIX_TBCTR_D_CMPA","EPWM_INT_MIX_TBCTR_U_CMPA"];
    epwm4.EPWM.$assign                                      = "EPWM0";
    epwm4.EPWM.A.$used                                      = false;
    epwm4.EPWM.B.$used                                      = false;
    
    epwm5.$name          = "EPWM_PTO";
    epwm5.EPWM.$assign   = "EPWM5";
    epwm5.EPWM.A.$assign = "GPIO53";
    epwm5.EPWM.B.$assign = "GPIO54";
    
    epwm6.$name          = "EPWM_SDFM_CLK";
    epwm6.EPWM.$assign   = "EPWM6";
    epwm6.EPWM.A.$assign = "GPIO55";
    epwm6.EPWM.B.$used   = false;
    
    gpio1.$name          = "GPIO_HMI_STROBE";
    gpio1.pinDir         = "OUTPUT";
    gpio1.qualSel        = "async";
    gpio1.pu_pd          = "pu";
    gpio1.GPIO_n.$assign = "GPIO0";
    
    gpio2.$name          = "GPIO_OC_IBUS";
    gpio2.GPIO_n.$assign = "GPIO23";
    
    gpio3.pinDir         = "OUTPUT";
    gpio3.qualSel        = "async";
    gpio3.$name          = "GPIO_MECH_BRK_HV";
    gpio3.GPIO_n.$assign = "GPIO56";
    
    gpio4.qualSel        = "6sample";
    gpio4.$name          = "GPIO_DI0";
    gpio4.GPIO_n.$assign = "GPIO42";
    
    gpio5.$name          = "GPIO_DI1";
    gpio5.GPIO_n.$assign = "GPIO41";
    
    gpio6.$name          = "GPIO_DI2";
    gpio6.GPIO_n.$assign = "GPIO31";
    
    gpio7.$name          = "GPIO_DI3";
    gpio7.GPIO_n.$assign = "GPIO32";
    
    gpio8.$name          = "GPIO_DI4";
    gpio8.GPIO_n.$assign = "GPIO33";
    
    gpio9.pinDir         = "OUTPUT";
    gpio9.$name          = "GPIO_DQ0";
    gpio9.GPIO_n.$assign = "GPIO34";
    
    gpio10.pinDir         = "OUTPUT";
    gpio10.$name          = "GPIO_DQ1";
    gpio10.GPIO_n.$assign = "GPIO35";
    
    gpio11.pinDir         = "OUTPUT";
    gpio11.$name          = "GPIO_DQ2";
    gpio11.GPIO_n.$assign = "GPIO36";
    
    gpio12.$name          = "GPIO_MOD_EN";
    gpio12.GPIO_n.$assign = "GPIO29";
    
    gpio13.$name          = "GPIO_OC_W";
    gpio13.GPIO_n.$assign = "GPIO24";
    
    gpio14.$name          = "GPIO_OC_U";
    gpio14.GPIO_n.$assign = "GPIO25";
    
    gpio15.pinDir         = "OUTPUT";
    gpio15.$name          = "GPIO_POW_BRK_EN";
    gpio15.GPIO_n.$assign = "GPIO57";
    
    gpio16.$name          = "ECAT_RESET";
    gpio16.pinDir         = "OUTPUT";
    gpio16.defaultValue   = "1";
    gpio16.GPIO_n.$assign = "GPIO84";
    
    gpio17.$name          = "ECAT_RUN";
    gpio17.pinDir         = "OUTPUT";
    led1.peripheralDriver = gpio17;
    gpio17.GPIO_n.$assign = "GPIO89";
    
    gpio18.$name          = "ECAT_ERR";
    gpio18.pinDir         = "OUTPUT";
    led2.peripheralDriver = gpio18;
    gpio18.GPIO_n.$assign = "GPIO88";
    
    gpio19.$name          = "ECAT_SYNC0";
    gpio19.GPIO_n.$assign = "GPIO8";
    
    i2c1.$name               = "CONFIG_I2C0";
    i2c1.ownTargetAddr       = 0x50;
    eeprom1.peripheralDriver = i2c1;
    i2c1.I2C.SCL.pu_pd       = "pu";
    i2c1.I2C.SDA.pu_pd       = "pu";
    i2c1.I2C_child.$name     = "drivers_i2c_v1_i2c_v1_template0";
    
    mcspi1.$name                       = "MCSPI_HMI";
    mcspi1.intrEnable                  = "POLLED";
    mcspi1.sdkInfra                    = "LLD";
    mcspi1.inputSelect                 = "0";
    mcspi1.dpe0                        = "DISABLE";
    mcspi1.dpe1                        = "ENABLE";
    mcspi1.SPI.$assign                 = "SPI1";
    mcspi1.SPI.CLK.$assign             = "GPIO16";
    mcspi1.SPI.D0.$assign              = "GPIO17";
    mcspi1.SPI.D1.$assign              = "GPIO18";
    mcspi1.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH0";
    mcspi1.mcspiChannel[0].CSn.$assign = "GPIO15";
    mcspi1.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld1";
    
    mcspi2.$name                       = "MCSPI_EPR";
    mcspi2.intrEnable                  = "POLLED";
    mcspi2.sdkInfra                    = "LLD";
    mcspi2.SPI.$assign                 = "SPI2";
    mcspi2.SPI.CLK.$assign             = "GPIO129";
    mcspi2.SPI.D0.$assign              = "GPIO130";
    mcspi2.SPI.D1.$assign              = "GPIO128";
    mcspi2.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH1";
    mcspi2.mcspiChannel[0].bitRate     = 2000000;
    mcspi2.mcspiChannel[0].CSn.$assign = "GPIO138";
    mcspi2.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld0";
    
    rti1.$name       = "RTI_CPU";
    rti1.clkSource   = "SYS_CLK";
    rti1.cntr0OpFreq = 125000000;
    rti1.RTI.$assign = "RTI1";
    
    sdfm1.Use_FilterChannel_1           = true;
    sdfm1.Use_FilterChannel_2           = true;
    sdfm1.Ch2_SDCLKSEL                  = "SDFM_CLK_SOURCE_SD1_CLK";
    sdfm1.Ch1_DataFilterEnable          = true;
    sdfm1.Ch1_ComparatorEnable          = true;
    sdfm1.Ch1_DOSR                      = 128;
    sdfm1.Ch1_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch2_DataFilterEnable          = true;
    sdfm1.Ch2_ComparatorEnable          = true;
    sdfm1.Ch2_DOSR                      = 128;
    sdfm1.Ch2_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch1_SD_modulatorFrequency     = 17.857;
    sdfm1.$name                         = "SDFM_IUW";
    sdfm1.SDFM.$assign                  = "SDFM1";
    sdfm1.SDFM.CLK2.$used               = false;
    sdfm1.SDFM.CLK3.$used               = false;
    sdfm1.SDFM.D0.$assign               = "GPIO131";
    sdfm1.SDFM.D1.$assign               = "GPIO133";
    sdfm1.SDFM.D2.$used                 = false;
    sdfm1.SDFM.D3.$used                 = false;
    
    const soc_ctrl_adc    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_adc", {}, false);
    const soc_ctrl_adc1   = soc_ctrl_adc.addInstance({}, false);
    soc_ctrl_adc1.$name   = "soc_ctrl_adc0";
    const soc_ctrl        = scripting.addModule("/drivers/soc_ctrl/soc_ctrl", {}, false);
    soc_ctrl.soc_ctrl_adc = soc_ctrl_adc1;
    adc.adcReferences     = soc_ctrl_adc1;
    
    const soc_ctrl_cmpss    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_cmpss", {}, false);
    const soc_ctrl_cmpss1   = soc_ctrl_cmpss.addInstance({}, false);
    soc_ctrl_cmpss1.$name   = "soc_ctrl_cmpss0";
    soc_ctrl.soc_ctrl_cmpss = soc_ctrl_cmpss1;
    
    const soc_ctrl_ecap    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_ecap", {}, false);
    const soc_ctrl_ecap1   = soc_ctrl_ecap.addInstance({}, false);
    soc_ctrl_ecap1.$name   = "soc_ctrl_ecap0";
    soc_ctrl.soc_ctrl_ecap = soc_ctrl_ecap1;
    ecap.ecapSocControls   = soc_ctrl_ecap1;
    
    const soc_ctrl_epwm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_epwm", {}, false);
    const soc_ctrl_epwm1   = soc_ctrl_epwm.addInstance({}, false);
    soc_ctrl_epwm1.$name   = "soc_ctrl_epwm0";
    soc_ctrl.soc_ctrl_epwm = soc_ctrl_epwm1;
    epwm.epwmTbClkSync     = soc_ctrl_epwm1;
    
    const soc_ctrl_sdfm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_sdfm", {}, false);
    const soc_ctrl_sdfm1   = soc_ctrl_sdfm.addInstance({}, false);
    soc_ctrl_sdfm1.$name   = "soc_ctrl_sdfm0";
    soc_ctrl.soc_ctrl_sdfm = soc_ctrl_sdfm1;
    sdfm.soc_ctrl_sdfm     = soc_ctrl_sdfm1;
    
    uart1.$name             = "UART_ENC";
    uart1.intrEnable        = "DISABLE";
    uart1.hwFlowControl     = true;
    uart1.baudRate          = 5000000;
    uart1.child.$name       = "drivers_uart_v2_uart_v2_template1";
    uart1.UART.$assign      = "UART3";
    uart1.UART.RXD.$assign  = "GPIO11";
    uart1.UART.TXD.$assign  = "GPIO12";
    uart1.UART.RTSn.$assign = "GPIO14";
    uart1.UART.CTSn.$assign = "GPIO13";
    uart1.UART.CTSn.$used   = false;
    
    uart2.$name        = "UART_MDB";
    uart2.intrEnable   = "DISABLE";
    uart2.clockSource  = "SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT0";
    uart2.inputClkFreq = 48000000;
    uart2.baudRate     = 19200;
    uart2.parityType   = "ODD";
    uart2.UART.$assign = "UART0";
    uart2.child.$name  = "drivers_uart_v2_uart_v2_template2";
    
    watchdog1.$name          = "CONFIG_WDT0";
    watchdog1.wdt_clk_src    = "SOC_RcmPeripheralClockSource_XTALCLK";
    watchdog1.wdt_func_clk   = 12500000;
    watchdog1.expirationTime = 2000;
    
    ethercat1.$name                      = "CONFIG_ETHERCAT0";
    ethercat1["PRU-ICSS0-IEP"].$assign   = "PRU-ICSS0-IEP";
    ethercat1["PRU-ICSS0"].$assign       = "PRU-ICSS0";
    ethercat1["PRU-ICSS0-MDIO"].$assign  = "PRU-ICSS0-MDIO";
    ethercat1.ethphy[0].$name            = "CONFIG_ETHPHY0";
    ethercat1.ethphy[0].mdioPort         = 1;
    ethercat1.ethphy[0].name             = "CUSTOM";
    ethercat1.ethphy[0].customDeviceName = "DP83822";
    ethercat1.ethphy[1].$name            = "CONFIG_ETHPHY1";
    ethercat1.ethphy[1].mdioPort         = 2;
    ethercat1.ethphy[1].name             = "CUSTOM";
    ethercat1.ethphy[1].customDeviceName = "DP83822";
    
    const pruicss                            = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
    const pruicss1                           = pruicss.addInstance({}, false);
    pruicss1.$name                           = "CONFIG_PRU_ICSS0";
    ethercat1.icss                           = pruicss1;
    pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x80000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    
    mpu_armv75.$name        = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr     = 0x70100000;
    mpu_armv75.size         = 17;
    mpu_armv75.attributes   = "NonCached";
    mpu_armv75.allowExecute = false;
    
    section1.load_memory                  = "R5F_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                  = "OCRAM";
    section2.$name                        = "Text Segments";
    section2.output_section.create(5);
    section2.output_section[0].$name      = ".text.hwi";
    section2.output_section[0].palignment = true;
    section2.output_section[1].$name      = ".text.cache";
    section2.output_section[1].palignment = true;
    section2.output_section[2].$name      = ".text.mpu";
    section2.output_section[2].palignment = true;
    section2.output_section[3].$name      = ".text.boot";
    section2.output_section[3].palignment = true;
    section2.output_section[4].$name      = ".text:abort";
    section2.output_section[4].palignment = true;
    
    section3.load_memory                  = "OCRAM";
    section3.$name                        = "Code and Read-Only Data";
    section3.output_section.create(2);
    section3.output_section[0].$name      = ".text";
    section3.output_section[0].palignment = true;
    section3.output_section[1].$name      = ".rodata";
    section3.output_section[1].palignment = true;
    
    section4.load_memory                  = "OCRAM";
    section4.$name                        = "Data Segment";
    section4.output_section.create(1);
    section4.output_section[0].$name      = ".data";
    section4.output_section[0].palignment = true;
    
    section5.load_memory                             = "OCRAM";
    section5.$name                                   = "Memory Segments";
    section5.output_section.create(4);
    section5.output_section[0].$name                 = ".bss";
    section5.output_section[0].output_sections_start = "__BSS_START";
    section5.output_section[0].output_sections_end   = "__BSS_END";
    section5.output_section[0].palignment            = true;
    section5.output_section[1].$name                 = ".sysmem";
    section5.output_section[1].palignment            = true;
    section5.output_section[2].$name                 = ".stack";
    section5.output_section[2].palignment            = true;
    section5.output_section[3].$name                 = ".usbCxtRam";
    
    section6.load_memory                              = "OCRAM";
    section6.$name                                    = "Stack Segments";
    section6.output_section.create(5);
    section6.output_section[0].$name                  = ".irqstack";
    section6.output_section[0].output_sections_start  = "__IRQ_STACK_START";
    section6.output_section[0].output_sections_end    = "__IRQ_STACK_END";
    section6.output_section[0].input_section.create(1);
    section6.output_section[0].input_section[0].$name = ". = . + __IRQ_STACK_SIZE;";
    section6.output_section[1].$name                  = ".fiqstack";
    section6.output_section[1].output_sections_start  = "__FIQ_STACK_START";
    section6.output_section[1].output_sections_end    = "__FIQ_STACK_END";
    section6.output_section[1].input_section.create(1);
    section6.output_section[1].input_section[0].$name = ". = . + __FIQ_STACK_SIZE;";
    section6.output_section[2].$name                  = ".svcstack";
    section6.output_section[2].output_sections_start  = "__SVC_STACK_START";
    section6.output_section[2].output_sections_end    = "__SVC_STACK_END";
    section6.output_section[2].input_section.create(1);
    section6.output_section[2].input_section[0].$name = ". = . + __SVC_STACK_SIZE;";
    section6.output_section[3].$name                  = ".abortstack";
    section6.output_section[3].output_sections_start  = "__ABORT_STACK_START";
    section6.output_section[3].output_sections_end    = "__ABORT_STACK_END";
    section6.output_section[3].input_section.create(1);
    section6.output_section[3].input_section[0].$name = ". = . + __ABORT_STACK_SIZE;";
    section6.output_section[4].$name                  = ".undefinedstack";
    section6.output_section[4].output_sections_start  = "__UNDEFINED_STACK_START";
    section6.output_section[4].output_sections_end    = "__UNDEFINED_STACK_END";
    section6.output_section[4].input_section.create(1);
    section6.output_section[4].input_section[0].$name = ". = . + __UNDEFINED_STACK_SIZE;";
    
    section7.load_memory                  = "OCRAM";
    section7.$name                        = "Initialization and Exception Handling";
    section7.output_section.create(3);
    section7.output_section[0].$name      = ".ARM.exidx";
    section7.output_section[0].palignment = true;
    section7.output_section[1].$name      = ".init_array";
    section7.output_section[1].palignment = true;
    section7.output_section[2].$name      = ".fini_array";
    section7.output_section[2].palignment = true;
    
    section8.load_memory                 = "USER_SHM_MEM";
    section8.type                        = "NOLOAD";
    section8.$name                       = "User Shared Memory";
    section8.group                       = false;
    section8.output_section.create(1);
    section8.output_section[0].$name     = ".bss.user_shared_mem";
    section8.output_section[0].alignment = 0;
    
    section9.load_memory                 = "LOG_SHM_MEM";
    section9.$name                       = "Log Shared Memory";
    section9.group                       = false;
    section9.type                        = "NOLOAD";
    section9.output_section.create(1);
    section9.output_section[0].$name     = ".bss.log_shared_mem";
    section9.output_section[0].alignment = 0;
    
    section10.load_memory                 = "RTOS_NORTOS_IPC_SHM_MEM";
    section10.type                        = "NOLOAD";
    section10.$name                       = "IPC Shared Memory";
    section10.group                       = false;
    section10.output_section.create(1);
    section10.output_section[0].$name     = ".bss.ipc_vring_mem";
    section10.output_section[0].alignment = 0;
    
    section11.load_memory                 = "MAILBOX_HSM";
    section11.type                        = "NOLOAD";
    section11.$name                       = "SIPC HSM Queue Memory";
    section11.group                       = false;
    section11.output_section.create(1);
    section11.output_section[0].$name     = ".bss.sipc_hsm_queue_mem";
    section11.output_section[0].alignment = 0;
    
    section12.load_memory                 = "MAILBOX_R5F";
    section12.$name                       = "SIPC R5F Queue Memory";
    section12.group                       = false;
    section12.type                        = "NOLOAD";
    section12.output_section.create(1);
    section12.output_section[0].$name     = ".bss.sipc_secure_host_queue_mem";
    section12.output_section[0].alignment = 0;
    
    section13.$name                   = "USB Non Cache Memory";
    section13.load_memory             = "NON_CACHE_MEM";
    section13.output_section.create(1);
    section13.output_section[0].$name = ".bss.nocache";
    
    section14.$name                        = "MATHLIB_PLACE";
    section14.group                        = false;
    section14.load_memory                  = "R5F_TCMA";
    section14.output_section.create(1);
    section14.output_section[0].$name      = "armiqmath";
    section14.output_section[0].palignment = true;
    
    bissc1.$name                               = "CONFIG_BISSC0";
    bissc1.baudrate                            = 2;
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO1.$assign = "GPIO72";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO1.$used   = true;
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO0.$assign = "GPIO71";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO0.$used   = true;
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO9.$used   = true;
    
    const pruicss2                           = pruicss.addInstance({}, false);
    pruicss2.$name                           = "CONFIG_PRU_ICSS1";
    bissc1.pru                               = pruicss2;
    pruicss2.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO1";
    
    tinyusb1.$name        = "CONFIG_TINYUSB0";
    tinyusb1.USB0.$assign = "USB0";
    
    epwm_xbar1.$name      = "CONFIG_EPWM_XBAR0";
    epwm_xbar1.xbarOutput = ["ADC0_EVT1","ADC1_EVT1","ADC2_EVT1"];
    
    input_xbar1.$name      = "CONFIG_INPUT_XBAR0";
    input_xbar1.xbarOutput = "GPIO23";
    
    input_xbar2.$name      = "CONFIG_INPUT_XBAR1";
    input_xbar2.xbarOutput = "GPIO24";
    input_xbar2.instance   = "INPUT_XBAR_1";
    
    input_xbar3.$name      = "CONFIG_INPUT_XBAR2";
    input_xbar3.instance   = "INPUT_XBAR_2";
    input_xbar3.xbarOutput = "GPIO25";
    
    input_xbar4.$name      = "CONFIG_INPUT_XBAR3";
    input_xbar4.instance   = "INPUT_XBAR_3";
    input_xbar4.xbarOutput = "GPIO8";
    
    int_xbar1.$name      = "CONFIG_INT_XBAR0";
    int_xbar1.xbarOutput = ["EPWM0_INT"];
    
    int_xbar2.$name      = "CONFIG_INT_XBAR1";
    int_xbar2.xbarOutput = ["ECAP0_INT"];
    int_xbar2.instance   = "INT_XBAR_1";
    
    /**
     * 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.
     */
    flash1.peripheralDriver.OSPI.D0.$suggestSolution                        = "GPIO2";
    adc1.ADC.$suggestSolution                                               = "ADC1";
    adc1.ADC.AIN0.$suggestSolution                                          = "ADC1_AIN0";
    adc1.ADC.AIN1.$suggestSolution                                          = "ADC1_AIN1";
    adc1.ADC.AIN2.$suggestSolution                                          = "ADC1_AIN2";
    adc1.ADC.AIN3.$suggestSolution                                          = "ADC1_AIN3";
    adc1.ADC.AIN4.$suggestSolution                                          = "ADC1_AIN4";
    adc1.ADC.AIN5.$suggestSolution                                          = "ADC1_AIN5";
    adc2.ADC.$suggestSolution                                               = "ADC0";
    adc2.ADC.AIN0.$suggestSolution                                          = "ADC0_AIN0";
    i2c1.I2C.$suggestSolution                                               = "I2C1";
    i2c1.I2C.SCL.$suggestSolution                                           = "GPIO66";
    i2c1.I2C.SDA.$suggestSolution                                           = "GPIO65";
    sdfm1.SDFM.CLK0.$suggestSolution                                        = "GPIO77";
    sdfm1.SDFM.CLK1.$suggestSolution                                        = "GPIO132";
    uart2.UART.RXD.$suggestSolution                                         = "GPIO27";
    uart2.UART.TXD.$suggestSolution                                         = "GPIO28";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT0.$suggestSolution      = "GPIO119";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT1.$suggestSolution      = "GPIO124";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT30.$suggestSolution = "GPIO105";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT31.$suggestSolution = "GPIO104";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO8.$suggestSolution                  = "GPIO90";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO5.$suggestSolution                  = "GPIO87";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO6.$suggestSolution                  = "GPIO91";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO4.$suggestSolution                  = "GPIO92";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO0.$suggestSolution                  = "GPIO93";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO1.$suggestSolution                  = "GPIO94";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO2.$suggestSolution                  = "GPIO95";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO3.$suggestSolution                  = "GPIO96";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO16.$suggestSolution                 = "GPIO97";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO15.$suggestSolution                 = "GPIO98";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO11.$suggestSolution                 = "GPIO99";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO12.$suggestSolution                 = "GPIO100";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO13.$suggestSolution                 = "GPIO101";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO14.$suggestSolution                 = "GPIO102";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO8.$suggestSolution                  = "GPIO106";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO5.$suggestSolution                  = "GPIO103";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO6.$suggestSolution                  = "GPIO107";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO4.$suggestSolution                  = "GPIO108";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO0.$suggestSolution                  = "GPIO109";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO1.$suggestSolution                  = "GPIO110";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO2.$suggestSolution                  = "GPIO111";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO3.$suggestSolution                  = "GPIO112";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO16.$suggestSolution                 = "GPIO113";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO15.$suggestSolution                 = "GPIO114";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO11.$suggestSolution                 = "GPIO115";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO12.$suggestSolution                 = "GPIO116";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO13.$suggestSolution                 = "GPIO117";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO14.$suggestSolution                 = "GPIO118";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDIO.$suggestSolution             = "GPIO85";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDC.$suggestSolution              = "GPIO86";
    bissc1["PRU-ICSS1"].$suggestSolution                                    = "PRU-ICSS1";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO9.$suggestSolution                     = "GPIO74";
    tinyusb1.USB0.USB0_DM.$suggestSolution                                  = "GPIO140";
    tinyusb1.USB0.USB0_DP.$suggestSolution                                  = "GPIO139";
    tinyusb1.USB0.USB0_DRVVBUS.$suggestSolution                             = "GPIO121";
    

  • Hi Dhaval,

    I have some new findings to share: my program is modified based on the USB example routine. Therefore, in the MPU ARMv7 configuration of syscfg, USB is configured with CONFIG_MPU_REGION4 / 0x70100000 / 128KB / Non Cached.
    In contrast, in the MPU ARMv7 configuration of the BISS example routine (I will only describe the parts where USB and BISS differ—the first four CONFIG_MPU_REGION settings are identical), it is configured with CONFIG_MPU_REGION4 / 0x50D00000 / 16KB / Strongly Ordered and CONFIG_MPU_REGION5 / 0x72000000 / 16KB / Non Cached.
    I believe this configuration is the root cause of the incompatibility between USB and BISS in my program. The phenomena I have observed are as follows (with no code modifications, only changes to syscfg settings):
    1. If I set CONFIG_MPU_REGION4 / 0x70100000 / 128KB / Non Cached, after adding BISS configuration, the code will not halt before the main() function when starting debug mode—instead, it directly enters the HwiP_user_prefetch_abort_handler_c() exception interrupt.
    2. If I set CONFIG_MPU_REGION4 / 0x50D00000 / 16KB / Strongly Ordered and CONFIG_MPU_REGION5 / 0x72000000 / 16KB / Non Cached, my USB functionality fails to work.
    3. If I configure all three regions simultaneously, USB still does not function properly.
    Could you please advise on how to configure these settings to ensure both normal USB operation and proper code debugging? I hope these findings help you assist me in resolving this issue. Thank you!
    Regards
  • Hi Zhou,

    Apologies for a delayed response, Let me check this and get back in 1-2 days

    Regards,
    Shaunak

  • Hi,

    Can you please try the below MPU config. Looking at the BISSC config and the USB config, i see that some regions are access by both the entities so we need to try configuring them carefully.

     // ========== MPU REGIONS (7 total) ==========
    
      // Region 0: Base - all peripherals as Device
      mpu_armv71.$name             = "CONFIG_MPU_REGION0";
      mpu_armv71.size              = 31;                              // 4GB
      mpu_armv71.attributes        = "Device";
      mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
      mpu_armv71.allowExecute      = false;
    
      // Region 1: TCMA
      mpu_armv72.$name             = "CONFIG_MPU_REGION1";
      mpu_armv72.size              = 15;                              // 64KB
      mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
      // Region 2: TCMB
      mpu_armv73.$name             = "CONFIG_MPU_REGION2";
      mpu_armv73.baseAddr          = 0x80000;
      mpu_armv73.size              = 15;                              // 64KB
      mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
      // Region 3: OCRAM (cached)
      mpu_armv74.$name             = "CONFIG_MPU_REGION3";
      mpu_armv74.baseAddr          = 0x70000000;
      mpu_armv74.size              = 21;                              // 2MB
      mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    
      // Region 4: USB DMA buffers - MUST be NonCached for DMA
      mpu_armv75.$name             = "CONFIG_MPU_REGION4";
      mpu_armv75.baseAddr          = 0x70100000;
      mpu_armv75.size              = 17;                              // 128KB
      mpu_armv75.attributes        = "NonCached";
      mpu_armv75.accessPermissions = "Supervisor RD+WR, User RD";
      mpu_armv75.allowExecute      = false;
    
      // Region 5: MSS_CTRL - Required by BOTH USB and BISSC
      mpu_armv76.$name             = "CONFIG_MPU_REGION5";
      mpu_armv76.baseAddr          = 0x50D00000;
      mpu_armv76.size              = 14;                              // 16KB
      mpu_armv76.attributes        = "Device";                        // Use "Device", NOT "Strongly Ordered"
      mpu_armv76.accessPermissions = "Supervisor RD+WR, User RD";
      mpu_armv76.allowExecute      = false;
    
      // Region 6: IPC/PRU shared memory - Required by BISSC
      mpu_armv77.$name             = "CONFIG_MPU_REGION6";
      mpu_armv77.baseAddr          = 0x72000000;
      mpu_armv77.size              = 14;                              // 16KB
      mpu_armv77.attributes        = "NonCached";
      mpu_armv77.accessPermissions = "Supervisor RD+WR, User RD";
      mpu_armv77.allowExecute      = false;
    
    
     

     
      Final Configuration Summary should be something like

    Can you try this config, rebuild and retest the example and let me know if it helps?

    Regards,
    Shaunak

  • Hi Shaunak,

    Thank you for your prompt reply. I modified my SYSCFG according to the code snippet you provided, but the result remains unchanged.
    With the USB function working properly, I added the BISS configuration in SYSCFG , then compiled, debugged and loaded the program without modifying any code. However, the program still halted at the exception interrupt, which was consistent with the phenomenon I described earlier.
    I have uploaded the two SYSCFG  files in TXT format for your review. Please check if there is any error in my configuration settings. Feel free to let me know if you need any additional information from my side to help resolve this issue.
    In addition, my USB implementation is based on the official SDK with some modifications. I am not sure if this will affect its compatibility with BISS. For details about the USB modifications, please refer to the following link: LP-AM261: USB can‘t operate stable! - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums.
    Regards.
    /**
     * 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 "AM261x_ZFG" --part "AM2612" --package "ZFG" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @v2CliArgs --device "AM2612" --package "NFBGA (ZFG)" --variant "500MHz" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @versions {"tool":"1.24.2+4234"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const eeprom      = scripting.addModule("/board/eeprom/eeprom", {}, false);
    const eeprom1     = eeprom.addInstance();
    const flash       = scripting.addModule("/board/flash/flash", {}, false);
    const flash1      = flash.addInstance();
    const led         = scripting.addModule("/board/led/led", {}, false);
    const led1        = led.addInstance();
    const led2        = led.addInstance();
    const adc         = scripting.addModule("/drivers/adc/adc", {}, false);
    const adc1        = adc.addInstance();
    const adc2        = adc.addInstance();
    const adc3        = adc.addInstance();
    const dac         = scripting.addModule("/drivers/dac/dac", {}, false);
    const dac1        = dac.addInstance();
    const ecap        = scripting.addModule("/drivers/ecap/ecap", {}, false);
    const ecap1       = ecap.addInstance();
    const epwm        = scripting.addModule("/drivers/epwm/epwm", {}, false);
    const epwm1       = epwm.addInstance();
    const epwm2       = epwm.addInstance();
    const epwm3       = epwm.addInstance();
    const epwm4       = epwm.addInstance();
    const epwm5       = epwm.addInstance();
    const epwm6       = epwm.addInstance();
    const gpio        = scripting.addModule("/drivers/gpio/gpio", {}, false);
    const gpio1       = gpio.addInstance();
    const gpio2       = gpio.addInstance();
    const gpio3       = gpio.addInstance();
    const gpio4       = gpio.addInstance();
    const gpio5       = gpio.addInstance();
    const gpio6       = gpio.addInstance();
    const gpio7       = gpio.addInstance();
    const gpio8       = gpio.addInstance();
    const gpio9       = gpio.addInstance();
    const gpio10      = gpio.addInstance();
    const gpio11      = gpio.addInstance();
    const gpio12      = gpio.addInstance();
    const gpio13      = gpio.addInstance();
    const gpio14      = gpio.addInstance();
    const gpio15      = gpio.addInstance();
    const gpio16      = gpio.addInstance();
    const gpio17      = gpio.addInstance();
    const gpio18      = gpio.addInstance();
    const gpio19      = gpio.addInstance();
    const i2c         = scripting.addModule("/drivers/i2c/i2c", {}, false);
    const i2c1        = i2c.addInstance();
    const mcspi       = scripting.addModule("/drivers/mcspi/mcspi", {}, false);
    const mcspi1      = mcspi.addInstance();
    const mcspi2      = mcspi.addInstance();
    const rti         = scripting.addModule("/drivers/rti/rti", {}, false);
    const rti1        = rti.addInstance();
    const sdfm        = scripting.addModule("/drivers/sdfm/sdfm", {}, false);
    const sdfm1       = sdfm.addInstance();
    const uart        = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart1       = uart.addInstance();
    const uart2       = uart.addInstance();
    const watchdog    = scripting.addModule("/drivers/watchdog/watchdog", {}, false);
    const watchdog1   = watchdog.addInstance();
    const ethercat    = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
    const ethercat1   = ethercat.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();
    const mpu_armv73  = mpu_armv7.addInstance();
    const mpu_armv74  = mpu_armv7.addInstance();
    const mpu_armv75  = mpu_armv7.addInstance();
    const mpu_armv76  = mpu_armv7.addInstance();
    const mpu_armv77  = mpu_armv7.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 section10   = section.addInstance();
    const section11   = section.addInstance();
    const section12   = section.addInstance();
    const section13   = section.addInstance();
    const section14   = section.addInstance();
    const tinyusb     = scripting.addModule("/usb/tinyusb/tinyusb", {}, false);
    const tinyusb1    = tinyusb.addInstance();
    const epwm_xbar   = scripting.addModule("/xbar/epwm_xbar/epwm_xbar", {}, false);
    const epwm_xbar1  = epwm_xbar.addInstance();
    const input_xbar  = scripting.addModule("/xbar/input_xbar/input_xbar", {}, false);
    const input_xbar1 = input_xbar.addInstance();
    const input_xbar2 = input_xbar.addInstance();
    const input_xbar3 = input_xbar.addInstance();
    const input_xbar4 = input_xbar.addInstance();
    const int_xbar    = scripting.addModule("/xbar/int_xbar/int_xbar", {}, false);
    const int_xbar1   = int_xbar.addInstance();
    const int_xbar2   = int_xbar.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    eeprom1.$name = "CONFIG_EEPROM0";
    
    flash1.$name                                    = "CONFIG_FLASH0";
    flash1.device                                   = "CUSTOM_FLASH";
    flash1.skipHwInit                               = true;
    flash1.fname                                    = "S25FL128SA";
    flash1.protocol                                 = "1s_1s_4s";
    flash1.flashSize                                = 16777216;
    flash1.flashManfId                              = "0x01";
    flash1.flashDeviceId                            = "0x2018";
    flash1.cmdBlockErase4B                          = "0xD8";
    flash1.cmdSectorErase4B                         = "0x20";
    flash1.flashQeType                              = "1";
    flash1.flashDeviceBusyTimeout                   = 24000000;
    flash1.flashPageProgTimeout                     = 4000;
    flash1.enable4BAddr                             = false;
    flash1.cmdExtType                               = "NONE";
    flash1.quirks                                   = "NULL";
    flash1.peripheralDriver.$name                   = "CONFIG_OSPI0";
    flash1.peripheralDriver.inputClkFreq            = 83333333;
    flash1.peripheralDriver.baudRateDiv             = 8;
    flash1.peripheralDriver.phyEnable               = true;
    flash1.peripheralDriver.OSPI.$assign            = "OSPI0";
    flash1.peripheralDriver.OSPI.CLK.$assign        = "GPIO10";
    flash1.peripheralDriver.OSPI.CSn0.$assign       = "GPIO62";
    flash1.peripheralDriver.OSPI.DQS.$used          = false;
    flash1.peripheralDriver.OSPI.D7.$used           = false;
    flash1.peripheralDriver.OSPI.D6.$used           = false;
    flash1.peripheralDriver.OSPI.D5.$used           = false;
    flash1.peripheralDriver.OSPI.D4.$assign         = "GPIO76";
    flash1.peripheralDriver.OSPI.D3.$assign         = "GPIO69";
    flash1.peripheralDriver.OSPI.D2.$assign         = "GPIO7";
    flash1.peripheralDriver.OSPI.D1.$assign         = "GPIO70";
    flash1.peripheralDriver.OSPI.RESET_OUT0.$assign = "GPIO61";
    flash1.peripheralDriver.child.$name             = "drivers_ospi_v0_ospi_v0_am261x_template0";
    
    led1.$name = "CONFIG_RUN_LED";
    
    led2.$name = "CONFIG_ERR_LED";
    
    adc1.$name             = "ADC1";
    adc1.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc1.ADC.AIN6.$used    = false;
    
    adc2.$name             = "ADC0";
    adc2.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc2.ADC.AIN1.$used    = false;
    adc2.ADC.AIN2.$used    = false;
    adc2.ADC.AIN3.$used    = false;
    adc2.ADC.AIN4.$used    = false;
    adc2.ADC.AIN5.$used    = false;
    adc2.ADC.AIN6.$used    = false;
    
    adc3.$name             = "ADC2";
    adc3.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc3.enableConverter   = true;
    adc3.ADC.$assign       = "ADC2";
    adc3.ADC.AIN0.$assign  = "ADC2_AIN0";
    adc3.ADC.AIN0.$used    = false;
    adc3.ADC.AIN1.$assign  = "ADC2_AIN1";
    adc3.ADC.AIN1.$used    = false;
    adc3.ADC.AIN2.$assign  = "ADC2_AIN2";
    adc3.ADC.AIN2.$used    = false;
    adc3.ADC.AIN3.$assign  = "ADC2_AIN3";
    adc3.ADC.AIN3.$used    = false;
    adc3.ADC.AIN4.$assign  = "ADC2_AIN4";
    adc3.ADC.AIN5.$assign  = "ADC2_AIN5";
    adc3.ADC.AIN5.$used    = false;
    adc3.ADC.AIN6.$assign  = "ADC2_AIN6";
    
    dac1.enableOutput = true;
    dac1.$name        = "DAC";
    
    ecap1.$name             = "ECAP_SYNC0";
    ecap1.eventTwoPolarity  = "ECAP_EVNT_FALLING_EDGE";
    ecap1.eventFourPolarity = "ECAP_EVNT_FALLING_EDGE";
    ecap1.syncOutMode       = "ECAP_SYNC_OUT_DISABLED";
    ecap1.ecapInput         = "ECAP_INPUT_INPUTXBAR3";
    ecap1.qualPeriod        = "ECAP_PULSE_WIDTH_FILTER_CYCLE6";
    ecap1.reArm             = true;
    
    epwm1.epwmTimebase_emulationMode = "EPWM_EMULATION_FREE_RUN";
    epwm1.$name                      = "EPWM_U";
    epwm1.EPWM.$assign               = "EPWM2";
    epwm1.EPWM.A.$assign             = "GPIO47";
    epwm1.EPWM.B.$assign             = "GPIO48";
    
    epwm2.$name          = "EPWM_V";
    epwm2.EPWM.$assign   = "EPWM3";
    epwm2.EPWM.A.$assign = "GPIO49";
    epwm2.EPWM.B.$assign = "GPIO50";
    
    epwm3.$name          = "EPWM_W";
    epwm3.EPWM.$assign   = "EPWM4";
    epwm3.EPWM.A.$assign = "GPIO51";
    epwm3.EPWM.B.$assign = "GPIO52";
    
    epwm4.$name                                             = "EPWM_INT";
    epwm4.epwmTimebase_emulationMode                        = "EPWM_EMULATION_FREE_RUN";
    epwm4.epwmTimebase_period                               = 6250;
    epwm4.epwmTimebase_periodLoadMode                       = "EPWM_PERIOD_DIRECT_LOAD";
    epwm4.epwmTimebase_counterMode                          = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm4.epwmEventTrigger_enableInterrupt                  = true;
    epwm4.epwmEventTrigger_interruptEventCount              = "1";
    epwm4.epwmEventTrigger_interruptSource                  = "EPWM_INT_TBCTR_PERIOD";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEnable         = true;
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerSource         = "EPWM_SOC_TBCTR_MIXED_EVENT";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar = "1";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerMixedSource    = ["EPWM_INT_MIX_TBCTR_D_CMPA","EPWM_INT_MIX_TBCTR_U_CMPA"];
    epwm4.EPWM.$assign                                      = "EPWM0";
    epwm4.EPWM.A.$used                                      = false;
    epwm4.EPWM.B.$used                                      = false;
    
    epwm5.$name          = "EPWM_PTO";
    epwm5.EPWM.$assign   = "EPWM5";
    epwm5.EPWM.A.$assign = "GPIO53";
    epwm5.EPWM.B.$assign = "GPIO54";
    
    epwm6.$name          = "EPWM_SDFM_CLK";
    epwm6.EPWM.$assign   = "EPWM6";
    epwm6.EPWM.A.$assign = "GPIO55";
    epwm6.EPWM.B.$used   = false;
    
    gpio1.$name          = "GPIO_HMI_STROBE";
    gpio1.pinDir         = "OUTPUT";
    gpio1.qualSel        = "async";
    gpio1.pu_pd          = "pu";
    gpio1.GPIO_n.$assign = "GPIO0";
    
    gpio2.$name          = "GPIO_OC_IBUS";
    gpio2.GPIO_n.$assign = "GPIO23";
    
    gpio3.pinDir         = "OUTPUT";
    gpio3.qualSel        = "async";
    gpio3.$name          = "GPIO_MECH_BRK_HV";
    gpio3.GPIO_n.$assign = "GPIO56";
    
    gpio4.qualSel        = "6sample";
    gpio4.$name          = "GPIO_DI0";
    gpio4.GPIO_n.$assign = "GPIO42";
    
    gpio5.$name          = "GPIO_DI1";
    gpio5.GPIO_n.$assign = "GPIO41";
    
    gpio6.$name          = "GPIO_DI2";
    gpio6.GPIO_n.$assign = "GPIO31";
    
    gpio7.$name          = "GPIO_DI3";
    gpio7.GPIO_n.$assign = "GPIO32";
    
    gpio8.$name          = "GPIO_DI4";
    gpio8.GPIO_n.$assign = "GPIO33";
    
    gpio9.pinDir         = "OUTPUT";
    gpio9.$name          = "GPIO_DQ0";
    gpio9.GPIO_n.$assign = "GPIO34";
    
    gpio10.pinDir         = "OUTPUT";
    gpio10.$name          = "GPIO_DQ1";
    gpio10.GPIO_n.$assign = "GPIO35";
    
    gpio11.pinDir         = "OUTPUT";
    gpio11.$name          = "GPIO_DQ2";
    gpio11.GPIO_n.$assign = "GPIO36";
    
    gpio12.$name          = "GPIO_MOD_EN";
    gpio12.GPIO_n.$assign = "GPIO29";
    
    gpio13.$name          = "GPIO_OC_W";
    gpio13.GPIO_n.$assign = "GPIO24";
    
    gpio14.$name          = "GPIO_OC_U";
    gpio14.GPIO_n.$assign = "GPIO25";
    
    gpio15.pinDir         = "OUTPUT";
    gpio15.$name          = "GPIO_POW_BRK_EN";
    gpio15.GPIO_n.$assign = "GPIO57";
    
    gpio16.$name          = "ECAT_RESET";
    gpio16.pinDir         = "OUTPUT";
    gpio16.defaultValue   = "1";
    gpio16.GPIO_n.$assign = "GPIO84";
    
    gpio17.$name          = "ECAT_RUN";
    gpio17.pinDir         = "OUTPUT";
    led1.peripheralDriver = gpio17;
    gpio17.GPIO_n.$assign = "GPIO89";
    
    gpio18.$name          = "ECAT_ERR";
    gpio18.pinDir         = "OUTPUT";
    led2.peripheralDriver = gpio18;
    gpio18.GPIO_n.$assign = "GPIO88";
    
    gpio19.$name          = "ECAT_SYNC0";
    gpio19.GPIO_n.$assign = "GPIO8";
    
    i2c1.$name               = "CONFIG_I2C0";
    i2c1.ownTargetAddr       = 0x50;
    eeprom1.peripheralDriver = i2c1;
    i2c1.I2C.SCL.pu_pd       = "pu";
    i2c1.I2C.SDA.pu_pd       = "pu";
    i2c1.I2C_child.$name     = "drivers_i2c_v1_i2c_v1_template0";
    
    mcspi1.$name                       = "MCSPI_HMI";
    mcspi1.intrEnable                  = "POLLED";
    mcspi1.sdkInfra                    = "LLD";
    mcspi1.inputSelect                 = "0";
    mcspi1.dpe0                        = "DISABLE";
    mcspi1.dpe1                        = "ENABLE";
    mcspi1.SPI.$assign                 = "SPI1";
    mcspi1.SPI.CLK.$assign             = "GPIO16";
    mcspi1.SPI.D0.$assign              = "GPIO17";
    mcspi1.SPI.D1.$assign              = "GPIO18";
    mcspi1.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH0";
    mcspi1.mcspiChannel[0].CSn.$assign = "GPIO15";
    mcspi1.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld1";
    
    mcspi2.$name                       = "MCSPI_EPR";
    mcspi2.intrEnable                  = "POLLED";
    mcspi2.sdkInfra                    = "LLD";
    mcspi2.SPI.$assign                 = "SPI2";
    mcspi2.SPI.CLK.$assign             = "GPIO129";
    mcspi2.SPI.D0.$assign              = "GPIO130";
    mcspi2.SPI.D1.$assign              = "GPIO128";
    mcspi2.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH1";
    mcspi2.mcspiChannel[0].bitRate     = 2000000;
    mcspi2.mcspiChannel[0].CSn.$assign = "GPIO138";
    mcspi2.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld0";
    
    rti1.$name       = "RTI_CPU";
    rti1.clkSource   = "SYS_CLK";
    rti1.cntr0OpFreq = 125000000;
    rti1.RTI.$assign = "RTI1";
    
    sdfm1.Use_FilterChannel_1           = true;
    sdfm1.Use_FilterChannel_2           = true;
    sdfm1.Ch2_SDCLKSEL                  = "SDFM_CLK_SOURCE_SD1_CLK";
    sdfm1.Ch1_DataFilterEnable          = true;
    sdfm1.Ch1_ComparatorEnable          = true;
    sdfm1.Ch1_DOSR                      = 128;
    sdfm1.Ch1_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch2_DataFilterEnable          = true;
    sdfm1.Ch2_ComparatorEnable          = true;
    sdfm1.Ch2_DOSR                      = 128;
    sdfm1.Ch2_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch1_SD_modulatorFrequency     = 17.857;
    sdfm1.$name                         = "SDFM_IUW";
    sdfm1.SDFM.$assign                  = "SDFM1";
    sdfm1.SDFM.CLK2.$used               = false;
    sdfm1.SDFM.CLK3.$used               = false;
    sdfm1.SDFM.D0.$assign               = "GPIO131";
    sdfm1.SDFM.D1.$assign               = "GPIO133";
    sdfm1.SDFM.D2.$used                 = false;
    sdfm1.SDFM.D3.$used                 = false;
    
    const soc_ctrl_adc    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_adc", {}, false);
    const soc_ctrl_adc1   = soc_ctrl_adc.addInstance({}, false);
    soc_ctrl_adc1.$name   = "soc_ctrl_adc0";
    const soc_ctrl        = scripting.addModule("/drivers/soc_ctrl/soc_ctrl", {}, false);
    soc_ctrl.soc_ctrl_adc = soc_ctrl_adc1;
    adc.adcReferences     = soc_ctrl_adc1;
    
    const soc_ctrl_cmpss    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_cmpss", {}, false);
    const soc_ctrl_cmpss1   = soc_ctrl_cmpss.addInstance({}, false);
    soc_ctrl_cmpss1.$name   = "soc_ctrl_cmpss0";
    soc_ctrl.soc_ctrl_cmpss = soc_ctrl_cmpss1;
    
    const soc_ctrl_ecap    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_ecap", {}, false);
    const soc_ctrl_ecap1   = soc_ctrl_ecap.addInstance({}, false);
    soc_ctrl_ecap1.$name   = "soc_ctrl_ecap0";
    soc_ctrl.soc_ctrl_ecap = soc_ctrl_ecap1;
    ecap.ecapSocControls   = soc_ctrl_ecap1;
    
    const soc_ctrl_epwm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_epwm", {}, false);
    const soc_ctrl_epwm1   = soc_ctrl_epwm.addInstance({}, false);
    soc_ctrl_epwm1.$name   = "soc_ctrl_epwm0";
    soc_ctrl.soc_ctrl_epwm = soc_ctrl_epwm1;
    epwm.epwmTbClkSync     = soc_ctrl_epwm1;
    
    const soc_ctrl_sdfm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_sdfm", {}, false);
    const soc_ctrl_sdfm1   = soc_ctrl_sdfm.addInstance({}, false);
    soc_ctrl_sdfm1.$name   = "soc_ctrl_sdfm0";
    soc_ctrl.soc_ctrl_sdfm = soc_ctrl_sdfm1;
    sdfm.soc_ctrl_sdfm     = soc_ctrl_sdfm1;
    
    uart1.$name             = "UART_ENC";
    uart1.intrEnable        = "DISABLE";
    uart1.hwFlowControl     = true;
    uart1.baudRate          = 5000000;
    uart1.child.$name       = "drivers_uart_v2_uart_v2_template1";
    uart1.UART.$assign      = "UART3";
    uart1.UART.RXD.$assign  = "GPIO11";
    uart1.UART.TXD.$assign  = "GPIO12";
    uart1.UART.RTSn.$assign = "GPIO14";
    uart1.UART.CTSn.$assign = "GPIO13";
    uart1.UART.CTSn.$used   = false;
    
    uart2.$name        = "UART_MDB";
    uart2.intrEnable   = "DISABLE";
    uart2.clockSource  = "SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT0";
    uart2.inputClkFreq = 48000000;
    uart2.baudRate     = 19200;
    uart2.parityType   = "ODD";
    uart2.UART.$assign = "UART0";
    uart2.child.$name  = "drivers_uart_v2_uart_v2_template2";
    
    watchdog1.$name          = "CONFIG_WDT0";
    watchdog1.wdt_clk_src    = "SOC_RcmPeripheralClockSource_XTALCLK";
    watchdog1.wdt_func_clk   = 12500000;
    watchdog1.expirationTime = 2000;
    
    ethercat1.$name                      = "CONFIG_ETHERCAT0";
    ethercat1.ethphy[0].$name            = "CONFIG_ETHPHY0";
    ethercat1.ethphy[0].mdioPort         = 1;
    ethercat1.ethphy[0].name             = "CUSTOM";
    ethercat1.ethphy[0].customDeviceName = "DP83822";
    ethercat1.ethphy[1].$name            = "CONFIG_ETHPHY1";
    ethercat1.ethphy[1].mdioPort         = 2;
    ethercat1.ethphy[1].name             = "CUSTOM";
    ethercat1.ethphy[1].customDeviceName = "DP83822";
    
    const pruicss                            = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
    const pruicss1                           = pruicss.addInstance({}, false);
    pruicss1.$name                           = "CONFIG_PRU_ICSS0";
    ethercat1.icss                           = pruicss1;
    pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x80000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv75.$name             = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr          = 0x70100000;
    mpu_armv75.size              = 17;
    mpu_armv75.attributes        = "NonCached";
    mpu_armv75.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv75.allowExecute      = false;
    
    mpu_armv76.$name             = "CONFIG_MPU_REGION5";
    mpu_armv76.baseAddr          = 0x50D00000;
    mpu_armv76.size              = 14;
    mpu_armv76.attributes        = "Device";
    mpu_armv76.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv76.allowExecute      = false;
    
    mpu_armv77.$name             = "CONFIG_MPU_REGION6";
    mpu_armv77.baseAddr          = 0x72000000;
    mpu_armv77.size              = 14;
    mpu_armv77.attributes        = "NonCached";
    mpu_armv77.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv77.allowExecute      = false;
    
    section1.load_memory                  = "R5F_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                  = "OCRAM";
    section2.$name                        = "Text Segments";
    section2.output_section.create(5);
    section2.output_section[0].$name      = ".text.hwi";
    section2.output_section[0].palignment = true;
    section2.output_section[1].$name      = ".text.cache";
    section2.output_section[1].palignment = true;
    section2.output_section[2].$name      = ".text.mpu";
    section2.output_section[2].palignment = true;
    section2.output_section[3].$name      = ".text.boot";
    section2.output_section[3].palignment = true;
    section2.output_section[4].$name      = ".text:abort";
    section2.output_section[4].palignment = true;
    
    section3.load_memory                  = "OCRAM";
    section3.$name                        = "Code and Read-Only Data";
    section3.output_section.create(2);
    section3.output_section[0].$name      = ".text";
    section3.output_section[0].palignment = true;
    section3.output_section[1].$name      = ".rodata";
    section3.output_section[1].palignment = true;
    
    section4.load_memory                  = "OCRAM";
    section4.$name                        = "Data Segment";
    section4.output_section.create(1);
    section4.output_section[0].$name      = ".data";
    section4.output_section[0].palignment = true;
    
    section5.load_memory                             = "OCRAM";
    section5.$name                                   = "Memory Segments";
    section5.output_section.create(4);
    section5.output_section[0].$name                 = ".bss";
    section5.output_section[0].output_sections_start = "__BSS_START";
    section5.output_section[0].output_sections_end   = "__BSS_END";
    section5.output_section[0].palignment            = true;
    section5.output_section[1].$name                 = ".sysmem";
    section5.output_section[1].palignment            = true;
    section5.output_section[2].$name                 = ".stack";
    section5.output_section[2].palignment            = true;
    section5.output_section[3].$name                 = ".usbCxtRam";
    
    section6.load_memory                              = "OCRAM";
    section6.$name                                    = "Stack Segments";
    section6.output_section.create(5);
    section6.output_section[0].$name                  = ".irqstack";
    section6.output_section[0].output_sections_start  = "__IRQ_STACK_START";
    section6.output_section[0].output_sections_end    = "__IRQ_STACK_END";
    section6.output_section[0].input_section.create(1);
    section6.output_section[0].input_section[0].$name = ". = . + __IRQ_STACK_SIZE;";
    section6.output_section[1].$name                  = ".fiqstack";
    section6.output_section[1].output_sections_start  = "__FIQ_STACK_START";
    section6.output_section[1].output_sections_end    = "__FIQ_STACK_END";
    section6.output_section[1].input_section.create(1);
    section6.output_section[1].input_section[0].$name = ". = . + __FIQ_STACK_SIZE;";
    section6.output_section[2].$name                  = ".svcstack";
    section6.output_section[2].output_sections_start  = "__SVC_STACK_START";
    section6.output_section[2].output_sections_end    = "__SVC_STACK_END";
    section6.output_section[2].input_section.create(1);
    section6.output_section[2].input_section[0].$name = ". = . + __SVC_STACK_SIZE;";
    section6.output_section[3].$name                  = ".abortstack";
    section6.output_section[3].output_sections_start  = "__ABORT_STACK_START";
    section6.output_section[3].output_sections_end    = "__ABORT_STACK_END";
    section6.output_section[3].input_section.create(1);
    section6.output_section[3].input_section[0].$name = ". = . + __ABORT_STACK_SIZE;";
    section6.output_section[4].$name                  = ".undefinedstack";
    section6.output_section[4].output_sections_start  = "__UNDEFINED_STACK_START";
    section6.output_section[4].output_sections_end    = "__UNDEFINED_STACK_END";
    section6.output_section[4].input_section.create(1);
    section6.output_section[4].input_section[0].$name = ". = . + __UNDEFINED_STACK_SIZE;";
    
    section7.load_memory                  = "OCRAM";
    section7.$name                        = "Initialization and Exception Handling";
    section7.output_section.create(3);
    section7.output_section[0].$name      = ".ARM.exidx";
    section7.output_section[0].palignment = true;
    section7.output_section[1].$name      = ".init_array";
    section7.output_section[1].palignment = true;
    section7.output_section[2].$name      = ".fini_array";
    section7.output_section[2].palignment = true;
    
    section8.load_memory                 = "USER_SHM_MEM";
    section8.type                        = "NOLOAD";
    section8.$name                       = "User Shared Memory";
    section8.group                       = false;
    section8.output_section.create(1);
    section8.output_section[0].$name     = ".bss.user_shared_mem";
    section8.output_section[0].alignment = 0;
    
    section9.load_memory                 = "LOG_SHM_MEM";
    section9.$name                       = "Log Shared Memory";
    section9.group                       = false;
    section9.type                        = "NOLOAD";
    section9.output_section.create(1);
    section9.output_section[0].$name     = ".bss.log_shared_mem";
    section9.output_section[0].alignment = 0;
    
    section10.load_memory                 = "RTOS_NORTOS_IPC_SHM_MEM";
    section10.type                        = "NOLOAD";
    section10.$name                       = "IPC Shared Memory";
    section10.group                       = false;
    section10.output_section.create(1);
    section10.output_section[0].$name     = ".bss.ipc_vring_mem";
    section10.output_section[0].alignment = 0;
    
    section11.load_memory                 = "MAILBOX_HSM";
    section11.type                        = "NOLOAD";
    section11.$name                       = "SIPC HSM Queue Memory";
    section11.group                       = false;
    section11.output_section.create(1);
    section11.output_section[0].$name     = ".bss.sipc_hsm_queue_mem";
    section11.output_section[0].alignment = 0;
    
    section12.load_memory                 = "MAILBOX_R5F";
    section12.$name                       = "SIPC R5F Queue Memory";
    section12.group                       = false;
    section12.type                        = "NOLOAD";
    section12.output_section.create(1);
    section12.output_section[0].$name     = ".bss.sipc_secure_host_queue_mem";
    section12.output_section[0].alignment = 0;
    
    section13.$name                   = "USB Non Cache Memory";
    section13.load_memory             = "NON_CACHE_MEM";
    section13.output_section.create(1);
    section13.output_section[0].$name = ".bss.nocache";
    
    section14.$name                        = "MATHLIB_PLACE";
    section14.group                        = false;
    section14.load_memory                  = "R5F_TCMA";
    section14.output_section.create(1);
    section14.output_section[0].$name      = "armiqmath";
    section14.output_section[0].palignment = true;
    
    tinyusb1.$name        = "CONFIG_TINYUSB0";
    tinyusb1.USB0.$assign = "USB0";
    
    epwm_xbar1.$name      = "CONFIG_EPWM_XBAR0";
    epwm_xbar1.xbarOutput = ["ADC0_EVT1","ADC1_EVT1","ADC2_EVT1"];
    
    input_xbar1.$name      = "CONFIG_INPUT_XBAR0";
    input_xbar1.xbarOutput = "GPIO23";
    
    input_xbar2.$name      = "CONFIG_INPUT_XBAR1";
    input_xbar2.xbarOutput = "GPIO24";
    input_xbar2.instance   = "INPUT_XBAR_1";
    
    input_xbar3.$name      = "CONFIG_INPUT_XBAR2";
    input_xbar3.instance   = "INPUT_XBAR_2";
    input_xbar3.xbarOutput = "GPIO25";
    
    input_xbar4.$name      = "CONFIG_INPUT_XBAR3";
    input_xbar4.instance   = "INPUT_XBAR_3";
    input_xbar4.xbarOutput = "GPIO8";
    
    int_xbar1.$name      = "CONFIG_INT_XBAR0";
    int_xbar1.xbarOutput = ["EPWM0_INT"];
    
    int_xbar2.$name      = "CONFIG_INT_XBAR1";
    int_xbar2.xbarOutput = ["ECAP0_INT"];
    int_xbar2.instance   = "INT_XBAR_1";
    
    /**
     * 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.
     */
    flash1.peripheralDriver.OSPI.D0.$suggestSolution                        = "GPIO2";
    adc1.ADC.$suggestSolution                                               = "ADC1";
    adc1.ADC.AIN0.$suggestSolution                                          = "ADC1_AIN0";
    adc1.ADC.AIN1.$suggestSolution                                          = "ADC1_AIN1";
    adc1.ADC.AIN2.$suggestSolution                                          = "ADC1_AIN2";
    adc1.ADC.AIN3.$suggestSolution                                          = "ADC1_AIN3";
    adc1.ADC.AIN4.$suggestSolution                                          = "ADC1_AIN4";
    adc1.ADC.AIN5.$suggestSolution                                          = "ADC1_AIN5";
    adc2.ADC.$suggestSolution                                               = "ADC0";
    adc2.ADC.AIN0.$suggestSolution                                          = "ADC0_AIN0";
    i2c1.I2C.$suggestSolution                                               = "I2C1";
    i2c1.I2C.SCL.$suggestSolution                                           = "GPIO66";
    i2c1.I2C.SDA.$suggestSolution                                           = "GPIO65";
    sdfm1.SDFM.CLK0.$suggestSolution                                        = "GPIO77";
    sdfm1.SDFM.CLK1.$suggestSolution                                        = "GPIO132";
    uart2.UART.RXD.$suggestSolution                                         = "GPIO27";
    uart2.UART.TXD.$suggestSolution                                         = "GPIO28";
    ethercat1["PRU-ICSS0-IEP"].$suggestSolution                             = "PRU-ICSS0-IEP";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT0.$suggestSolution      = "GPIO119";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT1.$suggestSolution      = "GPIO124";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT30.$suggestSolution = "GPIO105";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT31.$suggestSolution = "GPIO104";
    ethercat1["PRU-ICSS0"].$suggestSolution                                 = "PRU-ICSS0";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO8.$suggestSolution                  = "GPIO90";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO5.$suggestSolution                  = "GPIO87";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO6.$suggestSolution                  = "GPIO91";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO4.$suggestSolution                  = "GPIO92";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO0.$suggestSolution                  = "GPIO93";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO1.$suggestSolution                  = "GPIO94";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO2.$suggestSolution                  = "GPIO95";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO3.$suggestSolution                  = "GPIO96";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO16.$suggestSolution                 = "GPIO97";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO15.$suggestSolution                 = "GPIO98";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO11.$suggestSolution                 = "GPIO99";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO12.$suggestSolution                 = "GPIO100";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO13.$suggestSolution                 = "GPIO101";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO14.$suggestSolution                 = "GPIO102";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO8.$suggestSolution                  = "GPIO106";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO5.$suggestSolution                  = "GPIO103";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO6.$suggestSolution                  = "GPIO107";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO4.$suggestSolution                  = "GPIO108";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO0.$suggestSolution                  = "GPIO109";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO1.$suggestSolution                  = "GPIO110";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO2.$suggestSolution                  = "GPIO111";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO3.$suggestSolution                  = "GPIO112";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO16.$suggestSolution                 = "GPIO113";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO15.$suggestSolution                 = "GPIO114";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO11.$suggestSolution                 = "GPIO115";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO12.$suggestSolution                 = "GPIO116";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO13.$suggestSolution                 = "GPIO117";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO14.$suggestSolution                 = "GPIO118";
    ethercat1["PRU-ICSS0-MDIO"].$suggestSolution                            = "PRU-ICSS0-MDIO";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDIO.$suggestSolution             = "GPIO85";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDC.$suggestSolution              = "GPIO86";
    tinyusb1.USB0.USB0_DM.$suggestSolution                                  = "GPIO140";
    tinyusb1.USB0.USB0_DP.$suggestSolution                                  = "GPIO139";
    tinyusb1.USB0.USB0_DRVVBUS.$suggestSolution                             = "GPIO121";
    
    /**
     * 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 "AM261x_ZFG" --part "AM2612" --package "ZFG" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @v2CliArgs --device "AM2612" --package "NFBGA (ZFG)" --variant "500MHz" --context "r5fss0-0" --product "MOTOR_CONTROL_SDK_AM261x@10.02.00"
     * @versions {"tool":"1.24.2+4234"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const eeprom      = scripting.addModule("/board/eeprom/eeprom", {}, false);
    const eeprom1     = eeprom.addInstance();
    const flash       = scripting.addModule("/board/flash/flash", {}, false);
    const flash1      = flash.addInstance();
    const led         = scripting.addModule("/board/led/led", {}, false);
    const led1        = led.addInstance();
    const led2        = led.addInstance();
    const adc         = scripting.addModule("/drivers/adc/adc", {}, false);
    const adc1        = adc.addInstance();
    const adc2        = adc.addInstance();
    const adc3        = adc.addInstance();
    const dac         = scripting.addModule("/drivers/dac/dac", {}, false);
    const dac1        = dac.addInstance();
    const ecap        = scripting.addModule("/drivers/ecap/ecap", {}, false);
    const ecap1       = ecap.addInstance();
    const epwm        = scripting.addModule("/drivers/epwm/epwm", {}, false);
    const epwm1       = epwm.addInstance();
    const epwm2       = epwm.addInstance();
    const epwm3       = epwm.addInstance();
    const epwm4       = epwm.addInstance();
    const epwm5       = epwm.addInstance();
    const epwm6       = epwm.addInstance();
    const gpio        = scripting.addModule("/drivers/gpio/gpio", {}, false);
    const gpio1       = gpio.addInstance();
    const gpio2       = gpio.addInstance();
    const gpio3       = gpio.addInstance();
    const gpio4       = gpio.addInstance();
    const gpio5       = gpio.addInstance();
    const gpio6       = gpio.addInstance();
    const gpio7       = gpio.addInstance();
    const gpio8       = gpio.addInstance();
    const gpio9       = gpio.addInstance();
    const gpio10      = gpio.addInstance();
    const gpio11      = gpio.addInstance();
    const gpio12      = gpio.addInstance();
    const gpio13      = gpio.addInstance();
    const gpio14      = gpio.addInstance();
    const gpio15      = gpio.addInstance();
    const gpio16      = gpio.addInstance();
    const gpio17      = gpio.addInstance();
    const gpio18      = gpio.addInstance();
    const gpio19      = gpio.addInstance();
    const i2c         = scripting.addModule("/drivers/i2c/i2c", {}, false);
    const i2c1        = i2c.addInstance();
    const mcspi       = scripting.addModule("/drivers/mcspi/mcspi", {}, false);
    const mcspi1      = mcspi.addInstance();
    const mcspi2      = mcspi.addInstance();
    const rti         = scripting.addModule("/drivers/rti/rti", {}, false);
    const rti1        = rti.addInstance();
    const sdfm        = scripting.addModule("/drivers/sdfm/sdfm", {}, false);
    const sdfm1       = sdfm.addInstance();
    const uart        = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart1       = uart.addInstance();
    const uart2       = uart.addInstance();
    const watchdog    = scripting.addModule("/drivers/watchdog/watchdog", {}, false);
    const watchdog1   = watchdog.addInstance();
    const ethercat    = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
    const ethercat1   = ethercat.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();
    const mpu_armv73  = mpu_armv7.addInstance();
    const mpu_armv74  = mpu_armv7.addInstance();
    const mpu_armv75  = mpu_armv7.addInstance();
    const mpu_armv76  = mpu_armv7.addInstance();
    const mpu_armv77  = mpu_armv7.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 section10   = section.addInstance();
    const section11   = section.addInstance();
    const section12   = section.addInstance();
    const section13   = section.addInstance();
    const section14   = section.addInstance();
    const bissc       = scripting.addModule("/position_sense/bissc", {}, false);
    const bissc1      = bissc.addInstance();
    const tinyusb     = scripting.addModule("/usb/tinyusb/tinyusb", {}, false);
    const tinyusb1    = tinyusb.addInstance();
    const epwm_xbar   = scripting.addModule("/xbar/epwm_xbar/epwm_xbar", {}, false);
    const epwm_xbar1  = epwm_xbar.addInstance();
    const input_xbar  = scripting.addModule("/xbar/input_xbar/input_xbar", {}, false);
    const input_xbar1 = input_xbar.addInstance();
    const input_xbar2 = input_xbar.addInstance();
    const input_xbar3 = input_xbar.addInstance();
    const input_xbar4 = input_xbar.addInstance();
    const int_xbar    = scripting.addModule("/xbar/int_xbar/int_xbar", {}, false);
    const int_xbar1   = int_xbar.addInstance();
    const int_xbar2   = int_xbar.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    eeprom1.$name = "CONFIG_EEPROM0";
    
    flash1.$name                                    = "CONFIG_FLASH0";
    flash1.device                                   = "CUSTOM_FLASH";
    flash1.skipHwInit                               = true;
    flash1.fname                                    = "S25FL128SA";
    flash1.protocol                                 = "1s_1s_4s";
    flash1.flashSize                                = 16777216;
    flash1.flashManfId                              = "0x01";
    flash1.flashDeviceId                            = "0x2018";
    flash1.cmdBlockErase4B                          = "0xD8";
    flash1.cmdSectorErase4B                         = "0x20";
    flash1.flashQeType                              = "1";
    flash1.flashDeviceBusyTimeout                   = 24000000;
    flash1.flashPageProgTimeout                     = 4000;
    flash1.enable4BAddr                             = false;
    flash1.cmdExtType                               = "NONE";
    flash1.quirks                                   = "NULL";
    flash1.peripheralDriver.$name                   = "CONFIG_OSPI0";
    flash1.peripheralDriver.inputClkFreq            = 83333333;
    flash1.peripheralDriver.baudRateDiv             = 8;
    flash1.peripheralDriver.phyEnable               = true;
    flash1.peripheralDriver.OSPI.$assign            = "OSPI0";
    flash1.peripheralDriver.OSPI.CLK.$assign        = "GPIO10";
    flash1.peripheralDriver.OSPI.CSn0.$assign       = "GPIO62";
    flash1.peripheralDriver.OSPI.DQS.$used          = false;
    flash1.peripheralDriver.OSPI.D7.$used           = false;
    flash1.peripheralDriver.OSPI.D6.$used           = false;
    flash1.peripheralDriver.OSPI.D5.$used           = false;
    flash1.peripheralDriver.OSPI.D4.$assign         = "GPIO76";
    flash1.peripheralDriver.OSPI.D3.$assign         = "GPIO69";
    flash1.peripheralDriver.OSPI.D2.$assign         = "GPIO7";
    flash1.peripheralDriver.OSPI.D1.$assign         = "GPIO70";
    flash1.peripheralDriver.OSPI.RESET_OUT0.$assign = "GPIO61";
    flash1.peripheralDriver.child.$name             = "drivers_ospi_v0_ospi_v0_am261x_template0";
    
    led1.$name = "CONFIG_RUN_LED";
    
    led2.$name = "CONFIG_ERR_LED";
    
    adc1.$name             = "ADC1";
    adc1.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc1.ADC.AIN6.$used    = false;
    
    adc2.$name             = "ADC0";
    adc2.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc2.ADC.AIN1.$used    = false;
    adc2.ADC.AIN2.$used    = false;
    adc2.ADC.AIN3.$used    = false;
    adc2.ADC.AIN4.$used    = false;
    adc2.ADC.AIN5.$used    = false;
    adc2.ADC.AIN6.$used    = false;
    
    adc3.$name             = "ADC2";
    adc3.adcClockPrescaler = "ADC_CLK_DIV_6_0";
    adc3.enableConverter   = true;
    adc3.ADC.$assign       = "ADC2";
    adc3.ADC.AIN0.$assign  = "ADC2_AIN0";
    adc3.ADC.AIN0.$used    = false;
    adc3.ADC.AIN1.$assign  = "ADC2_AIN1";
    adc3.ADC.AIN1.$used    = false;
    adc3.ADC.AIN2.$assign  = "ADC2_AIN2";
    adc3.ADC.AIN2.$used    = false;
    adc3.ADC.AIN3.$assign  = "ADC2_AIN3";
    adc3.ADC.AIN3.$used    = false;
    adc3.ADC.AIN4.$assign  = "ADC2_AIN4";
    adc3.ADC.AIN5.$assign  = "ADC2_AIN5";
    adc3.ADC.AIN5.$used    = false;
    adc3.ADC.AIN6.$assign  = "ADC2_AIN6";
    
    dac1.enableOutput = true;
    dac1.$name        = "DAC";
    
    ecap1.$name             = "ECAP_SYNC0";
    ecap1.eventTwoPolarity  = "ECAP_EVNT_FALLING_EDGE";
    ecap1.eventFourPolarity = "ECAP_EVNT_FALLING_EDGE";
    ecap1.syncOutMode       = "ECAP_SYNC_OUT_DISABLED";
    ecap1.ecapInput         = "ECAP_INPUT_INPUTXBAR3";
    ecap1.qualPeriod        = "ECAP_PULSE_WIDTH_FILTER_CYCLE6";
    ecap1.reArm             = true;
    
    epwm1.epwmTimebase_emulationMode = "EPWM_EMULATION_FREE_RUN";
    epwm1.$name                      = "EPWM_U";
    epwm1.EPWM.$assign               = "EPWM2";
    epwm1.EPWM.A.$assign             = "GPIO47";
    epwm1.EPWM.B.$assign             = "GPIO48";
    
    epwm2.$name          = "EPWM_V";
    epwm2.EPWM.$assign   = "EPWM3";
    epwm2.EPWM.A.$assign = "GPIO49";
    epwm2.EPWM.B.$assign = "GPIO50";
    
    epwm3.$name          = "EPWM_W";
    epwm3.EPWM.$assign   = "EPWM4";
    epwm3.EPWM.A.$assign = "GPIO51";
    epwm3.EPWM.B.$assign = "GPIO52";
    
    epwm4.$name                                             = "EPWM_INT";
    epwm4.epwmTimebase_emulationMode                        = "EPWM_EMULATION_FREE_RUN";
    epwm4.epwmTimebase_period                               = 6250;
    epwm4.epwmTimebase_periodLoadMode                       = "EPWM_PERIOD_DIRECT_LOAD";
    epwm4.epwmTimebase_counterMode                          = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm4.epwmEventTrigger_enableInterrupt                  = true;
    epwm4.epwmEventTrigger_interruptEventCount              = "1";
    epwm4.epwmEventTrigger_interruptSource                  = "EPWM_INT_TBCTR_PERIOD";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEnable         = true;
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerSource         = "EPWM_SOC_TBCTR_MIXED_EVENT";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar = "1";
    epwm4.epwmEventTrigger_EPWM_SOC_A_triggerMixedSource    = ["EPWM_INT_MIX_TBCTR_D_CMPA","EPWM_INT_MIX_TBCTR_U_CMPA"];
    epwm4.EPWM.$assign                                      = "EPWM0";
    epwm4.EPWM.A.$used                                      = false;
    epwm4.EPWM.B.$used                                      = false;
    
    epwm5.$name          = "EPWM_PTO";
    epwm5.EPWM.$assign   = "EPWM5";
    epwm5.EPWM.A.$assign = "GPIO53";
    epwm5.EPWM.B.$assign = "GPIO54";
    
    epwm6.$name          = "EPWM_SDFM_CLK";
    epwm6.EPWM.$assign   = "EPWM6";
    epwm6.EPWM.A.$assign = "GPIO55";
    epwm6.EPWM.B.$used   = false;
    
    gpio1.$name          = "GPIO_HMI_STROBE";
    gpio1.pinDir         = "OUTPUT";
    gpio1.qualSel        = "async";
    gpio1.pu_pd          = "pu";
    gpio1.GPIO_n.$assign = "GPIO0";
    
    gpio2.$name          = "GPIO_OC_IBUS";
    gpio2.GPIO_n.$assign = "GPIO23";
    
    gpio3.pinDir         = "OUTPUT";
    gpio3.qualSel        = "async";
    gpio3.$name          = "GPIO_MECH_BRK_HV";
    gpio3.GPIO_n.$assign = "GPIO56";
    
    gpio4.qualSel        = "6sample";
    gpio4.$name          = "GPIO_DI0";
    gpio4.GPIO_n.$assign = "GPIO42";
    
    gpio5.$name          = "GPIO_DI1";
    gpio5.GPIO_n.$assign = "GPIO41";
    
    gpio6.$name          = "GPIO_DI2";
    gpio6.GPIO_n.$assign = "GPIO31";
    
    gpio7.$name          = "GPIO_DI3";
    gpio7.GPIO_n.$assign = "GPIO32";
    
    gpio8.$name          = "GPIO_DI4";
    gpio8.GPIO_n.$assign = "GPIO33";
    
    gpio9.pinDir         = "OUTPUT";
    gpio9.$name          = "GPIO_DQ0";
    gpio9.GPIO_n.$assign = "GPIO34";
    
    gpio10.pinDir         = "OUTPUT";
    gpio10.$name          = "GPIO_DQ1";
    gpio10.GPIO_n.$assign = "GPIO35";
    
    gpio11.pinDir         = "OUTPUT";
    gpio11.$name          = "GPIO_DQ2";
    gpio11.GPIO_n.$assign = "GPIO36";
    
    gpio12.$name          = "GPIO_MOD_EN";
    gpio12.GPIO_n.$assign = "GPIO29";
    
    gpio13.$name          = "GPIO_OC_W";
    gpio13.GPIO_n.$assign = "GPIO24";
    
    gpio14.$name          = "GPIO_OC_U";
    gpio14.GPIO_n.$assign = "GPIO25";
    
    gpio15.pinDir         = "OUTPUT";
    gpio15.$name          = "GPIO_POW_BRK_EN";
    gpio15.GPIO_n.$assign = "GPIO57";
    
    gpio16.$name          = "ECAT_RESET";
    gpio16.pinDir         = "OUTPUT";
    gpio16.defaultValue   = "1";
    gpio16.GPIO_n.$assign = "GPIO84";
    
    gpio17.$name          = "ECAT_RUN";
    gpio17.pinDir         = "OUTPUT";
    led1.peripheralDriver = gpio17;
    gpio17.GPIO_n.$assign = "GPIO89";
    
    gpio18.$name          = "ECAT_ERR";
    gpio18.pinDir         = "OUTPUT";
    led2.peripheralDriver = gpio18;
    gpio18.GPIO_n.$assign = "GPIO88";
    
    gpio19.$name          = "ECAT_SYNC0";
    gpio19.GPIO_n.$assign = "GPIO8";
    
    i2c1.$name               = "CONFIG_I2C0";
    i2c1.ownTargetAddr       = 0x50;
    eeprom1.peripheralDriver = i2c1;
    i2c1.I2C.SCL.pu_pd       = "pu";
    i2c1.I2C.SDA.pu_pd       = "pu";
    i2c1.I2C_child.$name     = "drivers_i2c_v1_i2c_v1_template0";
    
    mcspi1.$name                       = "MCSPI_HMI";
    mcspi1.intrEnable                  = "POLLED";
    mcspi1.sdkInfra                    = "LLD";
    mcspi1.inputSelect                 = "0";
    mcspi1.dpe0                        = "DISABLE";
    mcspi1.dpe1                        = "ENABLE";
    mcspi1.SPI.$assign                 = "SPI1";
    mcspi1.SPI.CLK.$assign             = "GPIO16";
    mcspi1.SPI.D0.$assign              = "GPIO17";
    mcspi1.SPI.D1.$assign              = "GPIO18";
    mcspi1.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH0";
    mcspi1.mcspiChannel[0].CSn.$assign = "GPIO15";
    mcspi1.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld1";
    
    mcspi2.$name                       = "MCSPI_EPR";
    mcspi2.intrEnable                  = "POLLED";
    mcspi2.sdkInfra                    = "LLD";
    mcspi2.SPI.$assign                 = "SPI2";
    mcspi2.SPI.CLK.$assign             = "GPIO129";
    mcspi2.SPI.D0.$assign              = "GPIO130";
    mcspi2.SPI.D1.$assign              = "GPIO128";
    mcspi2.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH1";
    mcspi2.mcspiChannel[0].bitRate     = 2000000;
    mcspi2.mcspiChannel[0].CSn.$assign = "GPIO138";
    mcspi2.child.$name                 = "drivers_mcspi_v1_mcspi_v1_template_lld0";
    
    rti1.$name       = "RTI_CPU";
    rti1.clkSource   = "SYS_CLK";
    rti1.cntr0OpFreq = 125000000;
    rti1.RTI.$assign = "RTI1";
    
    sdfm1.Use_FilterChannel_1           = true;
    sdfm1.Use_FilterChannel_2           = true;
    sdfm1.Ch2_SDCLKSEL                  = "SDFM_CLK_SOURCE_SD1_CLK";
    sdfm1.Ch1_DataFilterEnable          = true;
    sdfm1.Ch1_ComparatorEnable          = true;
    sdfm1.Ch1_DOSR                      = 128;
    sdfm1.Ch1_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch2_DataFilterEnable          = true;
    sdfm1.Ch2_ComparatorEnable          = true;
    sdfm1.Ch2_DOSR                      = 128;
    sdfm1.Ch2_DataFilter_Representation = "SDFM_DATA_FORMAT_16_BIT";
    sdfm1.Ch1_SD_modulatorFrequency     = 17.857;
    sdfm1.$name                         = "SDFM_IUW";
    sdfm1.SDFM.$assign                  = "SDFM1";
    sdfm1.SDFM.CLK2.$used               = false;
    sdfm1.SDFM.CLK3.$used               = false;
    sdfm1.SDFM.D0.$assign               = "GPIO131";
    sdfm1.SDFM.D1.$assign               = "GPIO133";
    sdfm1.SDFM.D2.$used                 = false;
    sdfm1.SDFM.D3.$used                 = false;
    
    const soc_ctrl_adc    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_adc", {}, false);
    const soc_ctrl_adc1   = soc_ctrl_adc.addInstance({}, false);
    soc_ctrl_adc1.$name   = "soc_ctrl_adc0";
    const soc_ctrl        = scripting.addModule("/drivers/soc_ctrl/soc_ctrl", {}, false);
    soc_ctrl.soc_ctrl_adc = soc_ctrl_adc1;
    adc.adcReferences     = soc_ctrl_adc1;
    
    const soc_ctrl_cmpss    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_cmpss", {}, false);
    const soc_ctrl_cmpss1   = soc_ctrl_cmpss.addInstance({}, false);
    soc_ctrl_cmpss1.$name   = "soc_ctrl_cmpss0";
    soc_ctrl.soc_ctrl_cmpss = soc_ctrl_cmpss1;
    
    const soc_ctrl_ecap    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_ecap", {}, false);
    const soc_ctrl_ecap1   = soc_ctrl_ecap.addInstance({}, false);
    soc_ctrl_ecap1.$name   = "soc_ctrl_ecap0";
    soc_ctrl.soc_ctrl_ecap = soc_ctrl_ecap1;
    ecap.ecapSocControls   = soc_ctrl_ecap1;
    
    const soc_ctrl_epwm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_epwm", {}, false);
    const soc_ctrl_epwm1   = soc_ctrl_epwm.addInstance({}, false);
    soc_ctrl_epwm1.$name   = "soc_ctrl_epwm0";
    soc_ctrl.soc_ctrl_epwm = soc_ctrl_epwm1;
    epwm.epwmTbClkSync     = soc_ctrl_epwm1;
    
    const soc_ctrl_sdfm    = scripting.addModule("/drivers/soc_ctrl/v0/subModules/soc_ctrl_sdfm", {}, false);
    const soc_ctrl_sdfm1   = soc_ctrl_sdfm.addInstance({}, false);
    soc_ctrl_sdfm1.$name   = "soc_ctrl_sdfm0";
    soc_ctrl.soc_ctrl_sdfm = soc_ctrl_sdfm1;
    sdfm.soc_ctrl_sdfm     = soc_ctrl_sdfm1;
    
    uart1.$name             = "UART_ENC";
    uart1.intrEnable        = "DISABLE";
    uart1.hwFlowControl     = true;
    uart1.baudRate          = 5000000;
    uart1.child.$name       = "drivers_uart_v2_uart_v2_template1";
    uart1.UART.$assign      = "UART3";
    uart1.UART.RXD.$assign  = "GPIO11";
    uart1.UART.TXD.$assign  = "GPIO12";
    uart1.UART.RTSn.$assign = "GPIO14";
    uart1.UART.CTSn.$assign = "GPIO13";
    uart1.UART.CTSn.$used   = false;
    
    uart2.$name        = "UART_MDB";
    uart2.intrEnable   = "DISABLE";
    uart2.clockSource  = "SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT0";
    uart2.inputClkFreq = 48000000;
    uart2.baudRate     = 19200;
    uart2.parityType   = "ODD";
    uart2.UART.$assign = "UART0";
    uart2.child.$name  = "drivers_uart_v2_uart_v2_template2";
    
    watchdog1.$name          = "CONFIG_WDT0";
    watchdog1.wdt_clk_src    = "SOC_RcmPeripheralClockSource_XTALCLK";
    watchdog1.wdt_func_clk   = 12500000;
    watchdog1.expirationTime = 2000;
    
    ethercat1.$name                      = "CONFIG_ETHERCAT0";
    ethercat1.ethphy[0].$name            = "CONFIG_ETHPHY0";
    ethercat1.ethphy[0].mdioPort         = 1;
    ethercat1.ethphy[0].name             = "CUSTOM";
    ethercat1.ethphy[0].customDeviceName = "DP83822";
    ethercat1.ethphy[1].$name            = "CONFIG_ETHPHY1";
    ethercat1.ethphy[1].mdioPort         = 2;
    ethercat1.ethphy[1].name             = "CUSTOM";
    ethercat1.ethphy[1].customDeviceName = "DP83822";
    
    const pruicss                            = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
    const pruicss1                           = pruicss.addInstance({}, false);
    pruicss1.$name                           = "CONFIG_PRU_ICSS0";
    ethercat1.icss                           = pruicss1;
    pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x80000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv75.$name             = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr          = 0x70100000;
    mpu_armv75.size              = 17;
    mpu_armv75.attributes        = "NonCached";
    mpu_armv75.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv75.allowExecute      = false;
    
    mpu_armv76.$name             = "CONFIG_MPU_REGION5";
    mpu_armv76.baseAddr          = 0x50D00000;
    mpu_armv76.size              = 14;
    mpu_armv76.attributes        = "Device";
    mpu_armv76.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv76.allowExecute      = false;
    
    mpu_armv77.$name             = "CONFIG_MPU_REGION6";
    mpu_armv77.baseAddr          = 0x72000000;
    mpu_armv77.size              = 14;
    mpu_armv77.attributes        = "NonCached";
    mpu_armv77.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv77.allowExecute      = false;
    
    section1.load_memory                  = "R5F_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                  = "OCRAM";
    section2.$name                        = "Text Segments";
    section2.output_section.create(5);
    section2.output_section[0].$name      = ".text.hwi";
    section2.output_section[0].palignment = true;
    section2.output_section[1].$name      = ".text.cache";
    section2.output_section[1].palignment = true;
    section2.output_section[2].$name      = ".text.mpu";
    section2.output_section[2].palignment = true;
    section2.output_section[3].$name      = ".text.boot";
    section2.output_section[3].palignment = true;
    section2.output_section[4].$name      = ".text:abort";
    section2.output_section[4].palignment = true;
    
    section3.load_memory                  = "OCRAM";
    section3.$name                        = "Code and Read-Only Data";
    section3.output_section.create(2);
    section3.output_section[0].$name      = ".text";
    section3.output_section[0].palignment = true;
    section3.output_section[1].$name      = ".rodata";
    section3.output_section[1].palignment = true;
    
    section4.load_memory                  = "OCRAM";
    section4.$name                        = "Data Segment";
    section4.output_section.create(1);
    section4.output_section[0].$name      = ".data";
    section4.output_section[0].palignment = true;
    
    section5.load_memory                             = "OCRAM";
    section5.$name                                   = "Memory Segments";
    section5.output_section.create(4);
    section5.output_section[0].$name                 = ".bss";
    section5.output_section[0].output_sections_start = "__BSS_START";
    section5.output_section[0].output_sections_end   = "__BSS_END";
    section5.output_section[0].palignment            = true;
    section5.output_section[1].$name                 = ".sysmem";
    section5.output_section[1].palignment            = true;
    section5.output_section[2].$name                 = ".stack";
    section5.output_section[2].palignment            = true;
    section5.output_section[3].$name                 = ".usbCxtRam";
    
    section6.load_memory                              = "OCRAM";
    section6.$name                                    = "Stack Segments";
    section6.output_section.create(5);
    section6.output_section[0].$name                  = ".irqstack";
    section6.output_section[0].output_sections_start  = "__IRQ_STACK_START";
    section6.output_section[0].output_sections_end    = "__IRQ_STACK_END";
    section6.output_section[0].input_section.create(1);
    section6.output_section[0].input_section[0].$name = ". = . + __IRQ_STACK_SIZE;";
    section6.output_section[1].$name                  = ".fiqstack";
    section6.output_section[1].output_sections_start  = "__FIQ_STACK_START";
    section6.output_section[1].output_sections_end    = "__FIQ_STACK_END";
    section6.output_section[1].input_section.create(1);
    section6.output_section[1].input_section[0].$name = ". = . + __FIQ_STACK_SIZE;";
    section6.output_section[2].$name                  = ".svcstack";
    section6.output_section[2].output_sections_start  = "__SVC_STACK_START";
    section6.output_section[2].output_sections_end    = "__SVC_STACK_END";
    section6.output_section[2].input_section.create(1);
    section6.output_section[2].input_section[0].$name = ". = . + __SVC_STACK_SIZE;";
    section6.output_section[3].$name                  = ".abortstack";
    section6.output_section[3].output_sections_start  = "__ABORT_STACK_START";
    section6.output_section[3].output_sections_end    = "__ABORT_STACK_END";
    section6.output_section[3].input_section.create(1);
    section6.output_section[3].input_section[0].$name = ". = . + __ABORT_STACK_SIZE;";
    section6.output_section[4].$name                  = ".undefinedstack";
    section6.output_section[4].output_sections_start  = "__UNDEFINED_STACK_START";
    section6.output_section[4].output_sections_end    = "__UNDEFINED_STACK_END";
    section6.output_section[4].input_section.create(1);
    section6.output_section[4].input_section[0].$name = ". = . + __UNDEFINED_STACK_SIZE;";
    
    section7.load_memory                  = "OCRAM";
    section7.$name                        = "Initialization and Exception Handling";
    section7.output_section.create(3);
    section7.output_section[0].$name      = ".ARM.exidx";
    section7.output_section[0].palignment = true;
    section7.output_section[1].$name      = ".init_array";
    section7.output_section[1].palignment = true;
    section7.output_section[2].$name      = ".fini_array";
    section7.output_section[2].palignment = true;
    
    section8.load_memory                 = "USER_SHM_MEM";
    section8.type                        = "NOLOAD";
    section8.$name                       = "User Shared Memory";
    section8.group                       = false;
    section8.output_section.create(1);
    section8.output_section[0].$name     = ".bss.user_shared_mem";
    section8.output_section[0].alignment = 0;
    
    section9.load_memory                 = "LOG_SHM_MEM";
    section9.$name                       = "Log Shared Memory";
    section9.group                       = false;
    section9.type                        = "NOLOAD";
    section9.output_section.create(1);
    section9.output_section[0].$name     = ".bss.log_shared_mem";
    section9.output_section[0].alignment = 0;
    
    section10.load_memory                 = "RTOS_NORTOS_IPC_SHM_MEM";
    section10.type                        = "NOLOAD";
    section10.$name                       = "IPC Shared Memory";
    section10.group                       = false;
    section10.output_section.create(1);
    section10.output_section[0].$name     = ".bss.ipc_vring_mem";
    section10.output_section[0].alignment = 0;
    
    section11.load_memory                 = "MAILBOX_HSM";
    section11.type                        = "NOLOAD";
    section11.$name                       = "SIPC HSM Queue Memory";
    section11.group                       = false;
    section11.output_section.create(1);
    section11.output_section[0].$name     = ".bss.sipc_hsm_queue_mem";
    section11.output_section[0].alignment = 0;
    
    section12.load_memory                 = "MAILBOX_R5F";
    section12.$name                       = "SIPC R5F Queue Memory";
    section12.group                       = false;
    section12.type                        = "NOLOAD";
    section12.output_section.create(1);
    section12.output_section[0].$name     = ".bss.sipc_secure_host_queue_mem";
    section12.output_section[0].alignment = 0;
    
    section13.$name                   = "USB Non Cache Memory";
    section13.load_memory             = "NON_CACHE_MEM";
    section13.output_section.create(1);
    section13.output_section[0].$name = ".bss.nocache";
    
    section14.$name                        = "MATHLIB_PLACE";
    section14.group                        = false;
    section14.load_memory                  = "R5F_TCMA";
    section14.output_section.create(1);
    section14.output_section[0].$name      = "armiqmath";
    section14.output_section[0].palignment = true;
    
    bissc1.$name                             = "CONFIG_BISSC0";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO1.$used = true;
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO0.$used = true;
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO9.$used = true;
    
    const pruicss2                           = pruicss.addInstance({}, false);
    pruicss2.$name                           = "CONFIG_PRU_ICSS1";
    bissc1.pru                               = pruicss2;
    pruicss2.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO1";
    
    tinyusb1.$name        = "CONFIG_TINYUSB0";
    tinyusb1.USB0.$assign = "USB0";
    
    epwm_xbar1.$name      = "CONFIG_EPWM_XBAR0";
    epwm_xbar1.xbarOutput = ["ADC0_EVT1","ADC1_EVT1","ADC2_EVT1"];
    
    input_xbar1.$name      = "CONFIG_INPUT_XBAR0";
    input_xbar1.xbarOutput = "GPIO23";
    
    input_xbar2.$name      = "CONFIG_INPUT_XBAR1";
    input_xbar2.xbarOutput = "GPIO24";
    input_xbar2.instance   = "INPUT_XBAR_1";
    
    input_xbar3.$name      = "CONFIG_INPUT_XBAR2";
    input_xbar3.instance   = "INPUT_XBAR_2";
    input_xbar3.xbarOutput = "GPIO25";
    
    input_xbar4.$name      = "CONFIG_INPUT_XBAR3";
    input_xbar4.instance   = "INPUT_XBAR_3";
    input_xbar4.xbarOutput = "GPIO8";
    
    int_xbar1.$name      = "CONFIG_INT_XBAR0";
    int_xbar1.xbarOutput = ["EPWM0_INT"];
    
    int_xbar2.$name      = "CONFIG_INT_XBAR1";
    int_xbar2.xbarOutput = ["ECAP0_INT"];
    int_xbar2.instance   = "INT_XBAR_1";
    
    /**
     * 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.
     */
    flash1.peripheralDriver.OSPI.D0.$suggestSolution                        = "GPIO2";
    adc1.ADC.$suggestSolution                                               = "ADC1";
    adc1.ADC.AIN0.$suggestSolution                                          = "ADC1_AIN0";
    adc1.ADC.AIN1.$suggestSolution                                          = "ADC1_AIN1";
    adc1.ADC.AIN2.$suggestSolution                                          = "ADC1_AIN2";
    adc1.ADC.AIN3.$suggestSolution                                          = "ADC1_AIN3";
    adc1.ADC.AIN4.$suggestSolution                                          = "ADC1_AIN4";
    adc1.ADC.AIN5.$suggestSolution                                          = "ADC1_AIN5";
    adc2.ADC.$suggestSolution                                               = "ADC0";
    adc2.ADC.AIN0.$suggestSolution                                          = "ADC0_AIN0";
    i2c1.I2C.$suggestSolution                                               = "I2C1";
    i2c1.I2C.SCL.$suggestSolution                                           = "GPIO66";
    i2c1.I2C.SDA.$suggestSolution                                           = "GPIO65";
    sdfm1.SDFM.CLK0.$suggestSolution                                        = "GPIO77";
    sdfm1.SDFM.CLK1.$suggestSolution                                        = "GPIO132";
    uart2.UART.RXD.$suggestSolution                                         = "GPIO27";
    uart2.UART.TXD.$suggestSolution                                         = "GPIO28";
    ethercat1["PRU-ICSS0-IEP"].$suggestSolution                             = "PRU-ICSS0-IEP";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT0.$suggestSolution      = "GPIO119";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDC_SYNC_OUT1.$suggestSolution      = "GPIO124";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT30.$suggestSolution = "GPIO105";
    ethercat1["PRU-ICSS0-IEP"].PR0_IEP0_EDIO_DATA_IN_OUT31.$suggestSolution = "GPIO104";
    ethercat1["PRU-ICSS0"].$suggestSolution                                 = "PRU-ICSS0";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO8.$suggestSolution                  = "GPIO90";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO5.$suggestSolution                  = "GPIO87";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO6.$suggestSolution                  = "GPIO91";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO4.$suggestSolution                  = "GPIO92";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO0.$suggestSolution                  = "GPIO93";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO1.$suggestSolution                  = "GPIO94";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO2.$suggestSolution                  = "GPIO95";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO3.$suggestSolution                  = "GPIO96";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO16.$suggestSolution                 = "GPIO97";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO15.$suggestSolution                 = "GPIO98";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO11.$suggestSolution                 = "GPIO99";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO12.$suggestSolution                 = "GPIO100";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO13.$suggestSolution                 = "GPIO101";
    ethercat1["PRU-ICSS0"].PR0_PRU0_GPIO14.$suggestSolution                 = "GPIO102";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO8.$suggestSolution                  = "GPIO106";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO5.$suggestSolution                  = "GPIO103";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO6.$suggestSolution                  = "GPIO107";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO4.$suggestSolution                  = "GPIO108";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO0.$suggestSolution                  = "GPIO109";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO1.$suggestSolution                  = "GPIO110";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO2.$suggestSolution                  = "GPIO111";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO3.$suggestSolution                  = "GPIO112";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO16.$suggestSolution                 = "GPIO113";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO15.$suggestSolution                 = "GPIO114";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO11.$suggestSolution                 = "GPIO115";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO12.$suggestSolution                 = "GPIO116";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO13.$suggestSolution                 = "GPIO117";
    ethercat1["PRU-ICSS0"].PR0_PRU1_GPIO14.$suggestSolution                 = "GPIO118";
    ethercat1["PRU-ICSS0-MDIO"].$suggestSolution                            = "PRU-ICSS0-MDIO";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDIO.$suggestSolution             = "GPIO85";
    ethercat1["PRU-ICSS0-MDIO"].PR0_MDIO0_MDC.$suggestSolution              = "GPIO86";
    bissc1["PRU-ICSS1"].$suggestSolution                                    = "PRU-ICSS1";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO1.$suggestSolution                     = "GPIO72";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO0.$suggestSolution                     = "GPIO71";
    bissc1["PRU-ICSS1"].PR1_PRU1_GPIO9.$suggestSolution                     = "GPIO74";
    tinyusb1.USB0.USB0_DM.$suggestSolution                                  = "GPIO140";
    tinyusb1.USB0.USB0_DP.$suggestSolution                                  = "GPIO139";
    tinyusb1.USB0.USB0_DRVVBUS.$suggestSolution                             = "GPIO121";
    
  • Hi Shaunak,

        Has there been any recent progress on this issue?

    Regards

  • Hi Zhou,

    Will it be possible for you to share your project with me?

    Regards,
    Shaunak

  • Hi Shaunak.

    I’m afraid that’s not an option – our company blocks the external sharing of source files and header files. Could I instead send you the project in the form of a library file or other such format? From what you’ve said, there are no compatibility issues between these two modules, and the problem is actually with my project, is that right?

    Regards

  • If not the whole project, can you please share your linker.cmd and .map files for both the working and non-working cases.

    Regards,
    Shaunak

  • Hi Zhou,

    Attaching the updated sysconfig file as discussed on email.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/4111.example.syscfg

    Regards,
    Shaunak