AM2612: Problems were encountered when adding BISS settings in syscfg

Part Number: AM2612


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";