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.
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
Hi Robert Morse,
Thanks for your query.
You can refer below github example for reference:
The query is regarding single R5F core handling both CPSW-Single-port and ICSSG-DUAL-MAC. correct ?
Regards
Ashwani
Yes, the same Core handling both ports. The example shows using one core for CPSW and another one for the ICSSG.
Hi Robert Morse
single R5F core handling both CPSW-Single-port and ICSSG-DUAL-MAC.
We do not have SDK example for the particular use case as enet-lld cannot handle ICSSG+ CPSW from single R5F core.
Currently, we are treating it as SW limitation. NO HW limitation.
So, you can refer multicore example (CPSW access by R5F0_0 and ICSSG access by R5F0_1) and change it as per use case.
You can refer mentioned example and change it as per your use case.
AM64x MCU+ SDK: Intercore Ethernet Packet Exchange With ICSSG, Using LwIP Bridge (ti.com)
Regards
Ashwani