This thread has been locked.

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

AM64x Examples of Enet (CPSW) and Enet (ICSS) together.

Part Number: AM6442
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Looking for any examples or instructions on how to set up to use the CPSW and ICSS ethernet ports together.

I have the AM64x EVM board, and would like to get the 3 ports all working.  Ideally would like them to be all different networks.

I use the SysConfig 1.20.0, with MCU+ SDK am64x_09_02_01_05, building for r5fss0-0 core.

Using SysConfig to configure the 3 ports. Each configured as described in the individual examples for the CPSW as a single port, and the ICSS setup in the DUAL_MAC mode.  When I try to compile a test app, when it compiles the syscfg/ti_enet_open_close.c, I get redefinition of a lot of structures looks like it sees the ICSS DUAL_MAC puts its information into the .C and .H files, then sees the CPSW configuration and puts the same structures in for that. (Even reduplicating the includes in the middle of the file).

Like for EnetUdma_DrvObj, it is duplicated one for the CPSW with size of 1, and one for the ICSS with a size of 2.

Not sure what I am doing wrong, or using SysConfig can even do it.

Here is the Sysconfig file.

/**
 * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
 * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
 * @cliArgs --device "AM64x" --package "ALV" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@09.02.01"
 * @versions {"tool":"1.20.0+3587"}
 */

/**
 * Import the modules used in this configuration.
 */
const eeprom          = scripting.addModule("/board/eeprom/eeprom", {}, false);
const eeprom1         = eeprom.addInstance();
const crc             = scripting.addModule("/drivers/crc/crc", {}, false);
const crc1            = crc.addInstance();
const ddr             = scripting.addModule("/drivers/ddr/ddr", {}, false);
const ddr1            = ddr.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 gpio20          = gpio.addInstance();
const gpio21          = gpio.addInstance();
const gpio22          = gpio.addInstance();
const gpio23          = gpio.addInstance();
const i2c             = scripting.addModule("/drivers/i2c/i2c", {}, false);
const i2c1            = i2c.addInstance();
const i2c2            = i2c.addInstance();
const i2c3            = i2c.addInstance();
const ipc             = scripting.addModule("/drivers/ipc/ipc");
const mcspi           = scripting.addModule("/drivers/mcspi/mcspi", {}, false);
const mcspi1          = mcspi.addInstance();
const mcspi2          = mcspi.addInstance();
const mcspi3          = mcspi.addInstance();
const ospi            = scripting.addModule("/drivers/ospi/ospi", {}, false);
const ospi1           = ospi.addInstance();
const pruicss         = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
const pruicss1        = pruicss.addInstance();
const pruicss2        = pruicss.addInstance();
const freertos_fat    = scripting.addModule("/fs/freertos_fat/freertos_fat", {}, false);
const freertos_fat1   = freertos_fat.addInstance();
const freertos_fat2   = freertos_fat.addInstance();
const debug_log       = scripting.addModule("/kernel/dpl/debug_log");
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 mpu_armv78      = mpu_armv7.addInstance();
const default_linker  = scripting.addModule("/memory_configurator/default_linker", {}, false);
const default_linker1 = default_linker.addInstance();
const general         = scripting.addModule("/memory_configurator/general", {}, false);
const general1        = general.addInstance();
const region          = scripting.addModule("/memory_configurator/region", {}, false);
const region1         = region.addInstance();
const section         = scripting.addModule("/memory_configurator/section", {}, false);
const section1        = section.addInstance();
const section2        = section.addInstance();
const section3        = section.addInstance();
const section4        = section.addInstance();
const section5        = section.addInstance();
const section6        = section.addInstance();
const section7        = section.addInstance();
const section8        = section.addInstance();
const section9        = section.addInstance();
const section10       = section.addInstance();
const section11       = section.addInstance();
const enet_cpsw       = scripting.addModule("/networking/enet_cpsw/enet_cpsw", {}, false);
const enet_cpsw1      = enet_cpsw.addInstance();
const enet_icss       = scripting.addModule("/networking/enet_icss/enet_icss", {}, false);
const enet_icss1      = enet_icss.addInstance();
const enet_icss2      = enet_icss.addInstance();
const crypto          = scripting.addModule("/security/crypto/crypto", {}, false);
const crypto1         = crypto.addInstance();

/**
 * Write custom configuration values to the imported modules.
 */
eeprom1.$name = "CONFIG_EEPROM0";

crc1.$name = "CONFIG_CRC0";

ddr1.$name = "CONFIG_DDR0";

gpio1.$name        = "GPIO_OSPI_RSTn";
gpio1.trigType     = "FALL_EDGE";
gpio1.GPIO.$assign = "GPIO0";

gpio2.$name        = "Net_LED0";
gpio2.pinDir       = "OUTPUT";
gpio2.GPIO.$assign = "GPIO0";

gpio3.$name        = "Net_LED1";
gpio3.pinDir       = "OUTPUT";
gpio3.GPIO.$assign = "GPIO0";

gpio4.pinDir       = "OUTPUT";
gpio4.$name        = "Net_LED2";
gpio4.GPIO.$assign = "GPIO0";

gpio5.$name        = "AnyBus_IRQ0n";
gpio5.trigType     = "FALL_EDGE";
gpio5.GPIO.$assign = "GPIO0";

gpio6.$name        = "AnyBus_MD0";
gpio6.GPIO.$assign = "GPIO0";

gpio7.$name        = "AnyBus_MD1";
gpio7.GPIO.$assign = "GPIO0";

gpio8.$name        = "Net_LED3";
gpio8.pinDir       = "OUTPUT";
gpio8.GPIO.$assign = "GPIO1";

gpio9.$name        = "FPGA_RDWR_B";
gpio9.pinDir       = "OUTPUT";
gpio9.defaultValue = "1";
gpio9.GPIO.$assign = "GPIO1";

gpio10.pinDir       = "OUTPUT";
gpio10.defaultValue = "1";
gpio10.$name        = "FPGA_SELECTn";
gpio10.GPIO.$assign = "GPIO1";

gpio11.pinDir       = "OUTPUT";
gpio11.defaultValue = "1";
gpio11.$name        = "FPGA_PROGRAMn";
gpio11.GPIO.$assign = "GPIO1";

gpio12.defaultValue = "1";
gpio12.$name        = "FPGA_READY";
gpio12.GPIO.$assign = "GPIO1";

gpio13.defaultValue = "1";
gpio13.$name        = "FPGA_INT1n";
gpio13.trigType     = "FALL_EDGE";
gpio13.GPIO.$assign = "GPIO1";

gpio14.pinDir       = "OUTPUT";
gpio14.defaultValue = "1";
gpio14.$name        = "VTT_EN";
gpio14.GPIO.$assign = "GPIO1";

gpio15.pinDir       = "OUTPUT";
gpio15.$name        = "Net_LED4";
gpio15.GPIO.$assign = "GPIO1";

gpio16.pinDir       = "OUTPUT";
gpio16.$name        = "Net_LED5";
gpio16.GPIO.$assign = "GPIO1";

gpio17.pinDir       = "OUTPUT";
gpio17.$name        = "GPIO_RGMII1_RST";
gpio17.GPIO.$assign = "GPIO1";

gpio18.pinDir       = "OUTPUT";
gpio18.$name        = "GPIO_RGMII2_RST";
gpio18.GPIO.$assign = "GPIO1";

gpio19.pinDir       = "OUTPUT";
gpio19.$name        = "Net_LED6";
gpio19.GPIO.$assign = "GPIO1";

gpio20.defaultValue = "1";
gpio20.trigType     = "FALL_EDGE";
gpio20.$name        = "RGMIIx_INTn";
gpio20.GPIO.$assign = "GPIO1";

gpio21.pinDir       = "OUTPUT";
gpio21.$name        = "Net_LED7";
gpio21.GPIO.$assign = "GPIO1";

gpio22.defaultValue = "1";
gpio22.trigType     = "FALL_EDGE";
gpio22.$name        = "MMC1_SD_EN";
gpio22.GPIO.$assign = "GPIO1";

gpio23.pinDir       = "OUTPUT";
gpio23.$name        = "VPP_LDO_EN";
gpio23.GPIO.$assign = "GPIO1";

i2c1.$name           = "ETH_IO_EXPANDER";
i2c1.I2C.$assign     = "I2C2";
i2c1.I2C_child.$name = "drivers_i2c_v0_i2c_v0_template0";

i2c2.$name           = "CONFIG_I2C0";
i2c2.I2C.$assign     = "I2C0";
i2c2.I2C_child.$name = "drivers_i2c_v0_i2c_v0_template1";

i2c3.$name               = "CONFIG_I2C1";
eeprom1.peripheralDriver = i2c3;
i2c3.I2C.$assign         = "I2C1";
i2c3.I2C_child.$name     = "drivers_i2c_v0_i2c_v0_template2";

ipc.a53ss0_0 = "notify_rpmsg";

mcspi1.$name                       = "CONFIG_MCSPI0";
mcspi1.advanced                    = true;
mcspi1.multiWordAccess             = "true";
mcspi1.mode                        = "MULTI_CONTROLLER";
mcspi1.SPI.$assign                 = "SPI3";
mcspi1.SPI.CLK.$assign             = "PRG0_PRU0_GPO16";
mcspi1.SPI.D0.$assign              = "PRG0_PRU0_GPO13";
mcspi1.SPI.D1.$assign              = "PRG0_PRU0_GPO14";
mcspi1.child.$name                 = "drivers_mcspi_v0_mcspi_v0_template0";
mcspi1.mcspiChannel.create(4);
mcspi1.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH0";
mcspi1.mcspiChannel[0].CSn.$assign = "PRG1_PRU1_GPO7";
mcspi1.mcspiChannel[1].$name       = "CONFIG_MCSPI_CH2";
mcspi1.mcspiChannel[1].CSn.$assign = "PRG1_PRU1_GPO19";
mcspi1.mcspiChannel[2].$name       = "CONFIG_MCSPI_CH3";
mcspi1.mcspiChannel[2].CSn.$assign = "PRG0_PRU0_GPO15";
mcspi1.mcspiChannel[3].$name       = "CONFIG_MCSPI_CH1";
mcspi1.mcspiChannel[3].CSn.$assign = "PRG0_PRU0_GPO17";

mcspi2.$name                 = "CONFIG_MCSPI1";
mcspi2.multiWordAccess       = "true";
mcspi2.SPI.$assign           = "SPI1";
mcspi2.SPI.CLK.$assign       = "SPI1_CLK";
mcspi2.SPI.D0.$assign        = "SPI1_D0";
mcspi2.SPI.D1.$assign        = "SPI1_D1";
mcspi2.mcspiChannel[0].$name = "CONFIG_MCSPI_CH4";
mcspi2.child.$name           = "drivers_mcspi_v0_mcspi_v0_template1";

mcspi3.$name                       = "CONFIG_MCSPI2_ANYBUS";
mcspi3.SPI.$assign                 = "SPI0";
mcspi3.SPI.CLK.$assign             = "SPI0_CLK";
mcspi3.SPI.D0.$assign              = "SPI0_D0";
mcspi3.SPI.D1.$assign              = "SPI0_D1";
mcspi3.mcspiChannel[0].$name       = "CONFIG_MCSPI_CH5";
mcspi3.mcspiChannel[0].CSn.$assign = "SPI0_CS0";
mcspi3.child.$name                 = "drivers_mcspi_v0_mcspi_v0_template2";

ospi1.$name = "CONFIG_OSPI0";

freertos_fat1.$name                  = "CONFIG_FREERTOS_FAT0";
freertos_fat1.peripheralDriver.$name = "CONFIG_MMCSD0";

freertos_fat2.$name                  = "CONFIG_FREERTOS_FAT1";
freertos_fat2.media                  = "EMMC";
freertos_fat2.peripheralDriver.$name = "CONFIG_MMCSD1";

debug_log.enableCssLog             = false;
debug_log.enableUartLog            = true;
debug_log.enableSharedMemLog       = true;
debug_log.enableSharedMemLogReader = true;
debug_log.uartLog.$name            = "CONFIG_UART1";
debug_log.uartLog.UART.$assign     = "USART1";
debug_log.uartLog.UART.RXD.$assign = "UART1_RXD";
debug_log.uartLog.UART.TXD.$assign = "UART1_TXD";

const uart_v0_template  = scripting.addModule("/drivers/uart/v0/uart_v0_template", {}, false);
const uart_v0_template1 = uart_v0_template.addInstance({}, false);
uart_v0_template1.$name = "drivers_uart_v0_uart_v0_template0";
debug_log.uartLog.child = uart_v0_template1;

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          = 0x41010000;
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.attributes   = "NonCached";
mpu_armv75.allowExecute = false;
mpu_armv75.baseAddr     = 0x701D0000;
mpu_armv75.size         = 16;

mpu_armv76.$name             = "CONFIG_MPU_REGION5";
mpu_armv76.baseAddr          = 0x60000000;
mpu_armv76.size              = 28;
mpu_armv76.accessPermissions = "Supervisor RD, User RD";

mpu_armv77.$name    = "CONFIG_MPU_REGION6";
mpu_armv77.baseAddr = 0x80000000;
mpu_armv77.size     = 28;

mpu_armv78.$name        = "CONFIG_MPU_REGION7";
mpu_armv78.baseAddr     = 0xF0000000;
mpu_armv78.size         = 27;
mpu_armv78.attributes   = "Device";
mpu_armv78.allowExecute = false;

default_linker1.$name = "memory_configurator_default_linker0";

general1.$name        = "CONFIG_GENERAL0";
general1.linker.$name = "TIARMCLANG0";

region1.$name                               = "MEMORY_REGION_CONFIGURATION0";
region1.memory_region.create(9);
region1.memory_region[0].type               = "TCMA_R5F";
region1.memory_region[0].$name              = "R5F_VECS";
region1.memory_region[0].size               = 0x40;
region1.memory_region[0].auto               = false;
region1.memory_region[1].type               = "TCMA_R5F";
region1.memory_region[1].$name              = "R5F_TCMA";
region1.memory_region[1].size               = 0x7FC0;
region1.memory_region[2].type               = "TCMB_R5F";
region1.memory_region[2].$name              = "R5F_TCMB0";
region1.memory_region[2].size               = 0x8000;
region1.memory_region[3].$name              = "NON_CACHE_MEM";
region1.memory_region[3].auto               = false;
region1.memory_region[3].manualStartAddress = 0x70060000;
region1.memory_region[3].size               = 0x8000;
region1.memory_region[4].$name              = "MSRAM";
region1.memory_region[4].auto               = false;
region1.memory_region[4].manualStartAddress = 0x70080000;
region1.memory_region[4].size               = 0x40000;
region1.memory_region[5].type               = "FLASH";
region1.memory_region[5].$name              = "FLASH";
region1.memory_region[5].auto               = false;
region1.memory_region[5].manualStartAddress = 0x60100000;
region1.memory_region[5].size               = 0x80000;
region1.memory_region[6].$name              = "USER_SHM_MEM";
region1.memory_region[6].auto               = false;
region1.memory_region[6].manualStartAddress = 0x701D0000;
region1.memory_region[6].size               = 0x80;
region1.memory_region[6].isShared           = true;
region1.memory_region[6].shared_cores       = ["a53ss0-0","a53ss0-1","m4fss0-0","r5fss0-1","r5fss1-0","r5fss1-1"];
region1.memory_region[7].auto               = false;
region1.memory_region[7].manualStartAddress = 0x701D0080;
region1.memory_region[7].size               = 0x3F80;
region1.memory_region[7].$name              = "LOG_SHM_MEM";
region1.memory_region[7].isShared           = true;
region1.memory_region[7].shared_cores       = ["a53ss0-0","a53ss0-1","m4fss0-0","r5fss0-1","r5fss1-0","r5fss1-1"];
region1.memory_region[8].auto               = false;
region1.memory_region[8].manualStartAddress = 0x701D4000;
region1.memory_region[8].size               = 0xC000;
region1.memory_region[8].$name              = "RTOS_NORTOS_IPC_SHM_MEM";
region1.memory_region[8].isShared           = true;
region1.memory_region[8].shared_cores       = ["a53ss0-0","a53ss0-1","m4fss0-0","r5fss0-1","r5fss1-0","r5fss1-1"];

section1.$name                        = "Vector Table";
section1.load_memory                  = "R5F_VECS";
section1.group                        = false;
section1.output_section.create(1);
section1.output_section[0].$name      = ".vectors";
section1.output_section[0].palignment = true;

section2.$name                        = "Text Segments";
section2.load_memory                  = "MSRAM";
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.$name                        = "Code and Read-Only Data";
section3.load_memory                  = "MSRAM";
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.$name                        = "Data Segment";
section4.load_memory                  = "MSRAM";
section4.output_section.create(1);
section4.output_section[0].$name      = ".data";
section4.output_section[0].palignment = true;

section5.$name                                   = "Memory Segments";
section5.load_memory                             = "MSRAM";
section5.output_section.create(3);
section5.output_section[0].$name                 = ".bss";
section5.output_section[0].palignment            = true;
section5.output_section[0].output_sections_start = "__BSS_START";
section5.output_section[0].output_sections_end   = "__BSS_END";
section5.output_section[1].$name                 = ".sysmem";
section5.output_section[1].palignment            = true;
section5.output_section[2].$name                 = ".stack";
section5.output_section[2].palignment            = true;

section6.$name                                    = "Stack Segments";
section6.load_memory                              = "MSRAM";
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.$name                        = "Initialization and Exception Handling";
section7.load_memory                  = "MSRAM";
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.$name                       = "User Shared Memory";
section8.type                        = "NOLOAD";
section8.load_memory                 = "USER_SHM_MEM";
section8.group                       = false;
section8.output_section.create(1);
section8.output_section[0].$name     = ".bss.user_shared_mem";
section8.output_section[0].alignment = 0;

section9.$name                       = "Log Shared Memory";
section9.load_memory                 = "LOG_SHM_MEM";
section9.type                        = "NOLOAD";
section9.group                       = false;
section9.output_section.create(1);
section9.output_section[0].$name     = ".bss.log_shared_mem";
section9.output_section[0].alignment = 0;

section10.$name                       = "IPC Shared Memory";
section10.type                        = "NOLOAD";
section10.load_memory                 = "RTOS_NORTOS_IPC_SHM_MEM";
section10.group                       = false;
section10.output_section.create(1);
section10.output_section[0].$name     = ".bss.ipc_vring_mem";
section10.output_section[0].alignment = 0;

section11.$name                       = "Non Cacheable Memory";
section11.load_memory                 = "NON_CACHE_MEM";
section11.group                       = false;
section11.type                        = "NOLOAD";
section11.output_section.create(1);
section11.output_section[0].$name     = ".bss.nocache";
section11.output_section[0].alignment = 0;

enet_cpsw1.$name                             = "CONFIG_ENET_CPSW0";
enet_cpsw1.McmEnable                         = true;
enet_cpsw1.DisableMacPort2                   = true;
enet_cpsw1.PktPoolEnable                     = false;
enet_cpsw1.txDmaChannel[0].$name             = "ENET_DMA_TX_CH0";
enet_cpsw1.rxDmaChannel[0].$name             = "ENET_DMA_RX_CH0";
enet_cpsw1.rxDmaChannel[0].macAddrCount      = 2;
enet_cpsw1.pinmux[0].$name                   = "ENET_CPSW_PINMUX0";
enet_cpsw1.pinmux[0].phyToMacInterfaceMode   = "RMII";
enet_cpsw1.pinmux[0].enableRgmii2            = false;
enet_cpsw1.pinmux[0].MDIO.MDC.$used          = false;
enet_cpsw1.pinmux[0].MDIO.MDIO.$used         = false;
enet_cpsw1.pinmux[0].RMII.$assign            = "CPSW";
enet_cpsw1.pinmux[0].RMII.RMII2_CRS_DV.$used = false;
enet_cpsw1.pinmux[0].RMII.RMII2_RX_ER.$used  = false;
enet_cpsw1.pinmux[0].RMII.RMII2_RXD0.$used   = false;
enet_cpsw1.pinmux[0].RMII.RMII2_RXD1.$used   = false;
enet_cpsw1.pinmux[0].RMII.RMII2_TXD0.$used   = false;
enet_cpsw1.pinmux[0].RMII.RMII2_TXD1.$used   = false;
enet_cpsw1.pinmux[0].RMII.RMII2_TX_EN.$used  = false;

enet_icss1.$name                              = "CONFIG_ENET_ICSS0";
enet_icss1.instance                           = "ICSSG0";
enet_icss1.mode                               = "DUAL MAC";
enet_icss1.phyToMacInterfaceMode              = "RGMII";
enet_icss1.McmEnable                          = true;
enet_icss1.PktInfoOnlyEnable                  = true;
enet_icss1.PktPoolEnable                      = false;
enet_icss1.txDmaChannel[0].$name              = "ENET_DMA_TX_CH1";
enet_icss1.txDmaChannel[0].useGlobalEvt       = false;
enet_icss1.PRU_ICSSG0_IEP.EDC_LATCH_IN0.$used = false;
enet_icss1.PRU_ICSSG0_IEP.EDC_SYNC_OUT0.$used = false;
enet_icss1.rxDmaChannel[0].$name              = "ENET_DMA_RX_CH1";
enet_icss1.rxDmaChannel[0].useGlobalEvt       = false;

pruicss1.$name                                                          = "CONFIG_PRU_ICSS0";
enet_icss1.icss                                                         = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name                                = "CONFIG_PRU_ICSS_IO0";
pruicss1.AdditionalICSSSettings[0].PruGPIO.create(1);
pruicss1.AdditionalICSSSettings[0].PruGPIO[0].$name                     = "CONFIG_PRU_ICSS_GPIO1";
pruicss1.AdditionalICSSSettings[0].PruGPIO[0].PRU_ICSSG0_PRU.$assign    = "PRU_ICSSG0_PRU0";
pruicss1.AdditionalICSSSettings[0].PruGPIO[0].PRU_ICSSG0_PRU.GPI8.$used = true;

enet_icss2.$name                        = "CONFIG_ENET_ICSS1";
enet_icss2.mode                         = "DUAL MAC";
enet_icss2.phyToMacInterfaceMode        = "RGMII";
enet_icss2.dualMacPortSelected          = "ENET_MAC_PORT_2";
enet_icss2.mdioMdcEnable                = false;
enet_icss2.McmEnable                    = true;
enet_icss2.PktPoolEnable                = false;
enet_icss2.txDmaChannel[0].$name        = "ENET_DMA_TX_CH2";
enet_icss2.txDmaChannel[0].useGlobalEvt = false;
enet_icss2.netifInstance.create(1);
enet_icss2.netifInstance[0].$name       = "NETIF_INST_ID0";
enet_icss2.rxDmaChannel[0].$name        = "ENET_DMA_RX_CH2";
enet_icss2.rxDmaChannel[0].useGlobalEvt = false;

pruicss2.$name                                                          = "CONFIG_PRU_ICSS1";
enet_icss2.icss                                                         = pruicss2;
pruicss2.AdditionalICSSSettings[0].$name                                = "CONFIG_PRU_ICSS_IO1";
pruicss2.AdditionalICSSSettings[0].PruGPIO.create(1);
pruicss2.AdditionalICSSSettings[0].PruGPIO[0].$name                     = "CONFIG_PRU_ICSS_GPIO0";
pruicss2.AdditionalICSSSettings[0].PruGPIO[0].PRU_ICSSG0_PRU.$assign    = "PRU_ICSSG0_PRU1";
pruicss2.AdditionalICSSSettings[0].PruGPIO[0].PRU_ICSSG0_PRU.GPI8.$used = true;

crypto1.$name       = "CONFIG_CRYPTO0";
crypto1.sa2ul.$name = "CONFIG_SA2UL0";

const udma               = scripting.addModule("/drivers/udma/udma", {}, false);
const udma1              = udma.addInstance({}, false);
mcspi2.udmaDriver        = udma1;
mcspi3.udmaDriver        = udma1;
mcspi1.udmaDriver        = udma1;
enet_cpsw1.udmaDrv       = udma1;
enet_icss1.udmaDrv       = udma1;
enet_icss2.udmaDrv       = udma1;
crypto1.sa2ul.udmaPKTDMA = udma1;

/**
 * These are the reserved peripherals and settings in this configuration
 */
const iGPMC1     = scripting.addPeripheral("GPMC");
iGPMC1.$name     = "MyGPMC1";
iGPMC1.A0.$used  = false;
iGPMC1.A1.$used  = false;
iGPMC1.A10.$used = false;
iGPMC1.A11.$used = false;
iGPMC1.A12.$used = false;
iGPMC1.A13.$used = false;
iGPMC1.A14.$used = false;
iGPMC1.A15.$used = false;
iGPMC1.A16.$used = false;
iGPMC1.A17.$used = false;
iGPMC1.A18.$used = false;
iGPMC1.A19.$used = false;
iGPMC1.A2.$used  = false;
iGPMC1.A20.$used = false;
iGPMC1.A21.$used = false;
iGPMC1.A22.$used = false;
iGPMC1.A3.$used  = false;
iGPMC1.A4.$used  = false;
iGPMC1.A5.$used  = false;
iGPMC1.A6.$used  = false;
iGPMC1.A7.$used  = false;
iGPMC1.A8.$used  = false;
iGPMC1.A9.$used  = false;

/**
 * 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.
 */
gpio1.GPIO.gpioPin.$suggestSolution                                                = "PRG1_MDIO0_MDIO";
gpio2.GPIO.gpioPin.$suggestSolution                                                = "PRG1_PRU1_GPO10";
gpio3.GPIO.gpioPin.$suggestSolution                                                = "PRG1_PRU1_GPO9";
gpio4.GPIO.gpioPin.$suggestSolution                                                = "PRG1_PRU1_GPO8";
gpio5.GPIO.gpioPin.$suggestSolution                                                = "PRG1_PRU1_GPO5";
gpio6.GPIO.gpioPin.$suggestSolution                                                = "PRG1_PRU0_GPO19";
gpio7.GPIO.gpioPin.$suggestSolution                                                = "PRG1_PRU0_GPO18";
gpio8.GPIO.gpioPin.$suggestSolution                                                = "ADC0_AIN3";
gpio9.GPIO.gpioPin.$suggestSolution                                                = "ADC0_AIN2";
gpio10.GPIO.gpioPin.$suggestSolution                                               = "ADC0_AIN1";
gpio11.GPIO.gpioPin.$suggestSolution                                               = "ADC0_AIN0";
gpio12.GPIO.gpioPin.$suggestSolution                                               = "EXTINTn";
gpio13.GPIO.gpioPin.$suggestSolution                                               = "ECAP0_IN_APWM_OUT";
gpio14.GPIO.gpioPin.$suggestSolution                                               = "MCAN0_TX";
gpio15.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU1_GPO5";
gpio16.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO19";
gpio17.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO18";
gpio18.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO12";
gpio19.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO11";
gpio20.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO7";
gpio21.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO6";
gpio22.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO5";
gpio23.GPIO.gpioPin.$suggestSolution                                               = "PRG0_PRU0_GPO4";
i2c1.I2C.SCL.$suggestSolution                                                      = "SPI0_CS1";
i2c1.I2C.SDA.$suggestSolution                                                      = "SPI1_CS1";
i2c2.I2C.SCL.$suggestSolution                                                      = "I2C0_SCL";
i2c2.I2C.SDA.$suggestSolution                                                      = "I2C0_SDA";
i2c3.I2C.SCL.$suggestSolution                                                      = "I2C1_SCL";
i2c3.I2C.SDA.$suggestSolution                                                      = "I2C1_SDA";
mcspi2.mcspiChannel[0].CSn.$suggestSolution                                        = "SPI1_CS0";
ospi1.OSPI.$suggestSolution                                                        = "OSPI0";
ospi1.OSPI.CLK.$suggestSolution                                                    = "OSPI0_CLK";
ospi1.OSPI.CSn0.$suggestSolution                                                   = "OSPI0_CSn0";
ospi1.OSPI.DQS.$suggestSolution                                                    = "OSPI0_DQS";
ospi1.OSPI.D7.$suggestSolution                                                     = "OSPI0_D7";
ospi1.OSPI.D6.$suggestSolution                                                     = "OSPI0_D6";
ospi1.OSPI.D5.$suggestSolution                                                     = "OSPI0_D5";
ospi1.OSPI.D4.$suggestSolution                                                     = "OSPI0_D4";
ospi1.OSPI.D3.$suggestSolution                                                     = "OSPI0_D3";
ospi1.OSPI.D2.$suggestSolution                                                     = "OSPI0_D2";
ospi1.OSPI.D1.$suggestSolution                                                     = "OSPI0_D1";
ospi1.OSPI.D0.$suggestSolution                                                     = "OSPI0_D0";
freertos_fat1.peripheralDriver.MMC1.$suggestSolution                               = "MMC1";
freertos_fat1.peripheralDriver.MMC1.CLK.$suggestSolution                           = "MMC1_CLK";
freertos_fat1.peripheralDriver.MMC1.CLKLB.$suggestSolution                         = "MMC1_CLKLB";
freertos_fat1.peripheralDriver.MMC1.CMD.$suggestSolution                           = "MMC1_CMD";
freertos_fat1.peripheralDriver.MMC1.DAT0.$suggestSolution                          = "MMC1_DAT0";
freertos_fat1.peripheralDriver.MMC1.DAT1.$suggestSolution                          = "MMC1_DAT1";
freertos_fat1.peripheralDriver.MMC1.DAT2.$suggestSolution                          = "MMC1_DAT2";
freertos_fat1.peripheralDriver.MMC1.DAT3.$suggestSolution                          = "MMC1_DAT3";
freertos_fat1.peripheralDriver.MMC1.SDCD.$suggestSolution                          = "MMC1_SDCD";
freertos_fat2.peripheralDriver.MMC0.$suggestSolution                               = "MMC0";
enet_cpsw1.pinmux[0].MDIO.$suggestSolution                                         = "MDIO0";
enet_cpsw1.pinmux[0].RMII.RMII_REF_CLK.$suggestSolution                            = "PRG0_PRU0_GPO10";
enet_cpsw1.pinmux[0].RMII.RMII1_CRS_DV.$suggestSolution                            = "PRG0_PRU1_GPO19";
enet_cpsw1.pinmux[0].RMII.RMII1_RX_ER.$suggestSolution                             = "PRG0_PRU0_GPO9";
enet_cpsw1.pinmux[0].RMII.RMII1_RXD0.$suggestSolution                              = "PRG0_PRU1_GPO7";
enet_cpsw1.pinmux[0].RMII.RMII1_RXD1.$suggestSolution                              = "PRG0_PRU1_GPO9";
enet_cpsw1.pinmux[0].RMII.RMII1_TXD0.$suggestSolution                              = "PRG0_PRU1_GPO10";
enet_cpsw1.pinmux[0].RMII.RMII1_TXD1.$suggestSolution                              = "PRG0_PRU1_GPO17";
enet_cpsw1.pinmux[0].RMII.RMII1_TX_EN.$suggestSolution                             = "PRG0_PRU1_GPO18";
enet_icss1.PRU_ICSSG0_MDIO.$suggestSolution                                        = "PRU_ICSSG0_MDIO0";
enet_icss1.PRU_ICSSG0_MDIO.MDC.$suggestSolution                                    = "PRG0_MDIO0_MDC";
enet_icss1.PRU_ICSSG0_MDIO.MDIO.$suggestSolution                                   = "PRG0_MDIO0_MDIO";
enet_icss1.PRU_ICSSG0_IEP.$suggestSolution                                         = "PRU_ICSSG0_IEP0";
enet_icss1.PRU_ICSSG0_RGMII1.$suggestSolution                                      = "PRU_ICSSG0_RGMII2";
enet_icss1.PRU_ICSSG0_RGMII1.RD0.$suggestSolution                                  = "PRG0_PRU1_GPO0";
enet_icss1.PRU_ICSSG0_RGMII1.RD1.$suggestSolution                                  = "PRG0_PRU1_GPO1";
enet_icss1.PRU_ICSSG0_RGMII1.RD2.$suggestSolution                                  = "PRG0_PRU1_GPO2";
enet_icss1.PRU_ICSSG0_RGMII1.RD3.$suggestSolution                                  = "PRG0_PRU1_GPO3";
enet_icss1.PRU_ICSSG0_RGMII1.RXC.$suggestSolution                                  = "PRG0_PRU1_GPO6";
enet_icss1.PRU_ICSSG0_RGMII1.RX_CTL.$suggestSolution                               = "PRG0_PRU1_GPO4";
enet_icss1.PRU_ICSSG0_RGMII1.TD0.$suggestSolution                                  = "PRG0_PRU1_GPO11";
enet_icss1.PRU_ICSSG0_RGMII1.TD1.$suggestSolution                                  = "PRG0_PRU1_GPO12";
enet_icss1.PRU_ICSSG0_RGMII1.TD2.$suggestSolution                                  = "PRG0_PRU1_GPO13";
enet_icss1.PRU_ICSSG0_RGMII1.TD3.$suggestSolution                                  = "PRG0_PRU1_GPO14";
enet_icss1.PRU_ICSSG0_RGMII1.TXC.$suggestSolution                                  = "PRG0_PRU1_GPO16";
enet_icss1.PRU_ICSSG0_RGMII1.TX_CTL.$suggestSolution                               = "PRG0_PRU1_GPO15";
pruicss1.AdditionalICSSSettings[0].PruGPIO[0].PRU_ICSSG0_PRU.GPI8.$suggestSolution = "PRG0_PRU0_GPO8";
enet_icss2.PRU_ICSSG1_RGMII2.$suggestSolution                                      = "PRU_ICSSG1_RGMII2";
enet_icss2.PRU_ICSSG1_RGMII2.RD0.$suggestSolution                                  = "PRG1_PRU1_GPO0";
enet_icss2.PRU_ICSSG1_RGMII2.RD1.$suggestSolution                                  = "PRG1_PRU1_GPO1";
enet_icss2.PRU_ICSSG1_RGMII2.RD2.$suggestSolution                                  = "PRG1_PRU1_GPO2";
enet_icss2.PRU_ICSSG1_RGMII2.RD3.$suggestSolution                                  = "PRG1_PRU1_GPO3";
enet_icss2.PRU_ICSSG1_RGMII2.RXC.$suggestSolution                                  = "PRG1_PRU1_GPO6";
enet_icss2.PRU_ICSSG1_RGMII2.RX_CTL.$suggestSolution                               = "PRG1_PRU1_GPO4";
enet_icss2.PRU_ICSSG1_RGMII2.TD0.$suggestSolution                                  = "PRG1_PRU1_GPO11";
enet_icss2.PRU_ICSSG1_RGMII2.TD1.$suggestSolution                                  = "PRG1_PRU1_GPO12";
enet_icss2.PRU_ICSSG1_RGMII2.TD2.$suggestSolution                                  = "PRG1_PRU1_GPO13";
enet_icss2.PRU_ICSSG1_RGMII2.TD3.$suggestSolution                                  = "PRG1_PRU1_GPO14";
enet_icss2.PRU_ICSSG1_RGMII2.TXC.$suggestSolution                                  = "PRG1_PRU1_GPO16";
enet_icss2.PRU_ICSSG1_RGMII2.TX_CTL.$suggestSolution                               = "PRG1_PRU1_GPO15";
pruicss2.AdditionalICSSSettings[0].PruGPIO[0].PRU_ICSSG0_PRU.GPI8.$suggestSolution = "PRG0_PRU1_GPO8";
iGPMC1.$suggestSolution                                                            = "GPMC0";
iGPMC1.AD0.$suggestSolution                                                        = "GPMC0_AD0";
iGPMC1.AD1.$suggestSolution                                                        = "GPMC0_AD1";
iGPMC1.AD10.$suggestSolution                                                       = "GPMC0_AD10";
iGPMC1.AD11.$suggestSolution                                                       = "GPMC0_AD11";
iGPMC1.AD12.$suggestSolution                                                       = "GPMC0_AD12";
iGPMC1.AD13.$suggestSolution                                                       = "GPMC0_AD13";
iGPMC1.AD14.$suggestSolution                                                       = "GPMC0_AD14";
iGPMC1.AD15.$suggestSolution                                                       = "GPMC0_AD15";
iGPMC1.AD16.$suggestSolution                                                       = "PRG1_PRU0_GPO0";
iGPMC1.AD17.$suggestSolution                                                       = "PRG1_PRU0_GPO1";
iGPMC1.AD18.$suggestSolution                                                       = "PRG1_PRU0_GPO2";
iGPMC1.AD19.$suggestSolution                                                       = "PRG1_PRU0_GPO3";
iGPMC1.AD2.$suggestSolution                                                        = "GPMC0_AD2";
iGPMC1.AD20.$suggestSolution                                                       = "PRG1_PRU0_GPO4";
iGPMC1.AD21.$suggestSolution                                                       = "PRG1_PRU0_GPO5";
iGPMC1.AD22.$suggestSolution                                                       = "PRG1_PRU0_GPO6";
iGPMC1.AD23.$suggestSolution                                                       = "PRG1_PRU0_GPO7";
iGPMC1.AD24.$suggestSolution                                                       = "PRG1_PRU0_GPO8";
iGPMC1.AD25.$suggestSolution                                                       = "PRG1_PRU0_GPO9";
iGPMC1.AD26.$suggestSolution                                                       = "PRG1_PRU0_GPO10";
iGPMC1.AD27.$suggestSolution                                                       = "PRG1_PRU0_GPO11";
iGPMC1.AD28.$suggestSolution                                                       = "PRG1_PRU0_GPO12";
iGPMC1.AD29.$suggestSolution                                                       = "PRG1_PRU0_GPO13";
iGPMC1.AD3.$suggestSolution                                                        = "GPMC0_AD3";
iGPMC1.AD30.$suggestSolution                                                       = "PRG1_PRU0_GPO14";
iGPMC1.AD31.$suggestSolution                                                       = "PRG1_PRU0_GPO15";
iGPMC1.AD4.$suggestSolution                                                        = "GPMC0_AD4";
iGPMC1.AD5.$suggestSolution                                                        = "GPMC0_AD5";
iGPMC1.AD6.$suggestSolution                                                        = "GPMC0_AD6";
iGPMC1.AD7.$suggestSolution                                                        = "GPMC0_AD7";
iGPMC1.AD8.$suggestSolution                                                        = "GPMC0_AD8";
iGPMC1.AD9.$suggestSolution                                                        = "GPMC0_AD9";
iGPMC1.ADVn_ALE.$suggestSolution                                                   = "GPMC0_ADVn_ALE";
iGPMC1.BE0n_CLE.$suggestSolution                                                   = "GPMC0_BE0n_CLE";
iGPMC1.BE1n.$suggestSolution                                                       = "GPMC0_BE1n";
iGPMC1.BE2n.$suggestSolution                                                       = "PRG1_PRU0_GPO16";
iGPMC1.BE3n.$suggestSolution                                                       = "PRG1_PRU1_GPO17";
iGPMC1.CLK.$suggestSolution                                                        = "GPMC0_CLK";
iGPMC1.CSn0.$suggestSolution                                                       = "GPMC0_CSn0";
iGPMC1.CSn1.$suggestSolution                                                       = "GPMC0_CSn1";
iGPMC1.CSn2.$suggestSolution                                                       = "GPMC0_CSn2";
iGPMC1.CSn3.$suggestSolution                                                       = "GPMC0_CSn3";
iGPMC1.DIR.$suggestSolution                                                        = "GPMC0_DIR";
iGPMC1.OEn_REn.$suggestSolution                                                    = "GPMC0_OEn_REn";
iGPMC1.WAIT0.$suggestSolution                                                      = "GPMC0_WAIT0";
iGPMC1.WAIT1.$suggestSolution                                                      = "GPMC0_WAIT1";
iGPMC1.WEn.$suggestSolution                                                        = "GPMC0_WEn";
iGPMC1.WPn.$suggestSolution                                                        = "GPMC0_WPn";

Thanks

 Robert