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.

PROCESSOR-SDK-AM64X: Problem with sysconfig with pcie and ethercat support

Part Number: PROCESSOR-SDK-AM64X
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hello everyone,

We are working on an application for R5F where we want to have ethercat and PCIE support simultaneously and we need help configuring the sysconfig file.

In the first stage, we implemented each technology in separate applications, that is, we have an application that runs Ethercat perfectly and another application that uses PCIe correctly. A sysconfig file was configured for each application, pcie (Appendix 1) and ethercat (appendix 2).
Now we intend to merge the two sysconfig files into a single file with pcie and ethercat support.

We already have a merged version.
In a transition phase, with this new version (appendix 3), we generated the necessary files to compile our binaries that will run on R5F.
In the case of the example PCIe application, with the new dependencies generated, it runs correctly and performs all the expected functionalities.
In the case of the ethercat example application, with the generated files, the technology does not start correctly. Something that does not happen with the sysconfig file only with the Ethercat configuration (appendix 2).

Then I share 3 sysconfig files: (1) sysconfig with pcie configuration, (2) sysconfig with ethercat configuration and (3) sysconfig with ethercat and pcie configuration.

We are limited to the version of the sysconfig tool, this is 1.14.0+2667.

Any suggestions why ethercat doesn't work with merged sysconfig?

 --------------------------------------------------------------------- Appendix 1 ---------------------------------------------------------------------

/**
 * 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_beta" --package "ALV" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@08.05.00"
 * @versions {"tool":"1.14.0+2667"}
 */

/**
 * Import the modules used in this configuration.
 */
const ipc        = scripting.addModule("/drivers/ipc/ipc");
const pcie       = scripting.addModule("/drivers/pcie/pcie", {}, false);
const pcie1      = pcie.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();

/**
 * Write custom configuration values to the imported modules.
 */
ipc.enableLinuxIpc = true;

pcie1.$name                = "CONFIG_PCIE0";
pcie1.gen                  = "PCIE_GEN2";
pcie1.ibAtu.create(1);
pcie1.ibAtu[0].$name       = "IB_ATU_CFG0";
pcie1.ibAtu[0].windowSize  = 0xFFFF;
pcie1.ibAtu[0].lowerTarget = "0x2F00";
pcie1.ibAtu[0].lowerBase   = "0x2F00";
pcie1.obAtu.create(4);
pcie1.obAtu[0].$name       = "OB_ATU_CFG0";
pcie1.obAtu[0].lowerBase   = "0x68000000UL";
pcie1.obAtu[0].lowerTarget = "0x68000000UL";
pcie1.obAtu[1].$name       = "OB_ATU_CFG1";
pcie1.obAtu[1].regIndex    = 2;
pcie1.obAtu[1].lowerBase   = "0x7";
pcie1.obAtu[1].lowerTarget = "0x7";
pcie1.obAtu[2].$name       = "OB_ATU_CFG2";
pcie1.obAtu[2].regIndex    = 3;
pcie1.obAtu[2].lowerBase   = "0x68001000";
pcie1.obAtu[2].lowerTarget = "0x68001000";
pcie1.obAtu[3].$name       = "OB_ATU_CFG3";
pcie1.obAtu[3].regIndex    = 4;
pcie1.obAtu[3].lowerBase   = "0x68011000";
pcie1.obAtu[3].lowerTarget = "0x68011000";
pcie1.obAtu[3].windowSize  = 0x7FFFFFF;

debug_log.enableCssLog = false;

mpu_armv71.$name             = "CONFIG_MPU_REGION0";
mpu_armv71.size              = 31;
mpu_armv71.allowExecute      = false;
mpu_armv71.attributes        = "NonCached";
mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";

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.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv74.baseAddr          = 0x70000000;
mpu_armv74.size              = 21;

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

mpu_armv76.$name    = "CONFIG_MPU_REGION5";
mpu_armv76.baseAddr = 0x80000000;
mpu_armv76.size     = 31;

mpu_armv77.$name        = "CONFIG_MPU_REGION6";
mpu_armv77.size         = 27;
mpu_armv77.baseAddr     = 0x68000000;
mpu_armv77.attributes   = "Device";
mpu_armv77.allowExecute = false;

mpu_armv78.$name        = "CONFIG_MPU_REGION7";
mpu_armv78.size         = 25;
mpu_armv78.attributes   = "NonCached";
mpu_armv78.allowExecute = false;
mpu_armv78.baseAddr     = 0x40000000;


 --------------------------------------------------------------------- Appendix 2 ---------------------------------------------------------------------

/**
 * 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_beta" --package "ALV" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@08.05.00"
 * @versions {"tool":"1.14.0+2667"}
 */

/**
 * 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 gpio       = scripting.addModule("/drivers/gpio/gpio", {}, false);
const gpio1      = gpio.addInstance();
const i2c        = scripting.addModule("/drivers/i2c/i2c", {}, false);
const i2c1       = i2c.addInstance();
const ipc        = scripting.addModule("/drivers/ipc/ipc");
const pruicss    = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
const pruicss1   = pruicss.addInstance();
const ethercat   = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
const ethercat1  = ethercat.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();

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

flash1.$name                  = "CONFIG_FLASH0";
flash1.peripheralDriver.$name = "CONFIG_OSPI0";

led1.$name = "CONFIG_LED_RUN";

gpio1.$name                    = "CONFIG_GPIO0";
led1.peripheralDriver          = gpio1;
gpio1.pinDir                   = "OUTPUT";
gpio1.useMcuDomainPeripherals  = true;
gpio1.MCU_GPIO.$assign         = "MCU_GPIO0";
gpio1.MCU_GPIO.gpioPin.$assign = "ball.A7";

i2c1.$name               = "CONFIG_I2C0";
eeprom1.peripheralDriver = i2c1;
i2c1.I2C.$assign         = "I2C0";
i2c1.I2C.SCL.$assign     = "ball.A18";
i2c1.I2C.SDA.$assign     = "ball.B18";

ipc.enableLinuxIpc = true;

ethercat1.$name              = "CONFIG_ETHERCAT0";
ethercat1.instance           = "ICSSG1";
ethercat1.ethphy[0].$name    = "CONFIG_ETHPHY0";
ethercat1.ethphy[1].$name    = "CONFIG_ETHPHY1";
ethercat1.ethphy[1].mdioPort = 3;

pruicss1.iepSyncMode                     = scripting.forceWrite(true);
ethercat1.icss                           = pruicss1;
pruicss1.$name                           = "CONFIG_PRU_ICSS1";
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";

debug_log.enableUartLog                   = true;
debug_log.enableCssLog                    = false;
debug_log.enableMemLog                    = true;
debug_log.enableSharedMemLog              = true;
debug_log.enableSharedMemLogReader        = true;
debug_log.enableLogZoneInfo               = true;
debug_log.uartLog.$name                   = "CONFIG_UART0";
debug_log.uartLog.useMcuDomainPeripherals = true;

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.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv74.baseAddr          = 0x70000000;
mpu_armv74.size              = 21;

mpu_armv75.$name        = "CONFIG_MPU_REGION4";
mpu_armv75.attributes   = "NonCached";
mpu_armv75.allowExecute = false;
mpu_armv75.size         = 16;
mpu_armv75.baseAddr     = 0xA5000000;

mpu_armv76.$name    = "CONFIG_MPU_REGION5";
mpu_armv76.baseAddr = 0x80000000;
mpu_armv76.size     = 31;

mpu_armv77.$name        = "CONFIG_MPU_REGION6";
mpu_armv77.size         = 20;
mpu_armv77.baseAddr     = 0xA0000000;
mpu_armv77.attributes   = "NonCached";
mpu_armv77.allowExecute = 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.
 */
flash1.peripheralDriver.OSPI.$suggestSolution              = "OSPI0";
flash1.peripheralDriver.OSPI.CLK.$suggestSolution          = "ball.N20";
flash1.peripheralDriver.OSPI.CSn0.$suggestSolution         = "ball.L19";
flash1.peripheralDriver.OSPI.DQS.$suggestSolution          = "ball.N19";
flash1.peripheralDriver.OSPI.D7.$suggestSolution           = "ball.M17";
flash1.peripheralDriver.OSPI.D6.$suggestSolution           = "ball.N18";
flash1.peripheralDriver.OSPI.D5.$suggestSolution           = "ball.P20";
flash1.peripheralDriver.OSPI.D4.$suggestSolution           = "ball.P21";
flash1.peripheralDriver.OSPI.D3.$suggestSolution           = "ball.M21";
flash1.peripheralDriver.OSPI.D2.$suggestSolution           = "ball.M20";
flash1.peripheralDriver.OSPI.D1.$suggestSolution           = "ball.M18";
flash1.peripheralDriver.OSPI.D0.$suggestSolution           = "ball.M19";
ethercat1.PRU_ICSSG1_MDIO.$suggestSolution                 = "PRU_ICSSG1_MDIO0";
ethercat1.PRU_ICSSG1_MDIO.MDC.$suggestSolution             = "ball.Y6";
ethercat1.PRU_ICSSG1_MDIO.MDIO.$suggestSolution            = "ball.AA6";
ethercat1.PRU_ICSSG1_IEP.$suggestSolution                  = "PRU_ICSSG1_IEP0";
ethercat1.PRU_ICSSG1_IEP.EDC_LATCH_IN0.$suggestSolution    = "ball.V7";
ethercat1.PRU_ICSSG1_IEP.EDC_LATCH_IN1.$suggestSolution    = "ball.U13";
ethercat1.PRU_ICSSG1_IEP.EDC_SYNC_OUT0.$suggestSolution    = "ball.W7";
ethercat1.PRU_ICSSG1_IEP.EDC_SYNC_OUT1.$suggestSolution    = "ball.U7";
ethercat1.PRU_ICSSG1_MII_G_RT.$suggestSolution             = "PRU_ICSSG1_MII_G_RT";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD0.$suggestSolution   = "ball.Y7";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD1.$suggestSolution   = "ball.U8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD2.$suggestSolution   = "ball.W8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD3.$suggestSolution   = "ball.V8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXDV.$suggestSolution   = "ball.Y8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXER.$suggestSolution   = "ball.V13";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXLINK.$suggestSolution = "ball.W13";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD0.$suggestSolution   = "ball.AA8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD1.$suggestSolution   = "ball.U9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD2.$suggestSolution   = "ball.W9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD3.$suggestSolution   = "ball.AA9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXEN.$suggestSolution   = "ball.Y9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD0.$suggestSolution   = "ball.W11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD1.$suggestSolution   = "ball.V11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD2.$suggestSolution   = "ball.AA12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD3.$suggestSolution   = "ball.Y12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXDV.$suggestSolution   = "ball.W12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXER.$suggestSolution   = "ball.AA13";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXLINK.$suggestSolution = "ball.U12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD0.$suggestSolution   = "ball.AA10";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD1.$suggestSolution   = "ball.V10";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD2.$suggestSolution   = "ball.U10";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD3.$suggestSolution   = "ball.AA11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXEN.$suggestSolution   = "ball.Y11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MR0_CLK.$suggestSolution = "ball.AA7";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MR1_CLK.$suggestSolution = "ball.U11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MT0_CLK.$suggestSolution = "ball.V9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MT1_CLK.$suggestSolution = "ball.Y10";
debug_log.uartLog.MCU_UART.$suggestSolution                = "MCU_USART0";
debug_log.uartLog.MCU_UART.RXD.$suggestSolution            = "ball.A9";
debug_log.uartLog.MCU_UART.TXD.$suggestSolution            = "ball.A8";


 --------------------------------------------------------------------- Appendix 3 ---------------------------------------------------------------------

/**
 * 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_beta" --package "ALV" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@08.05.00"
 * @versions {"tool":"1.14.0+2667"}
 */

/**
 * 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 gpio        = scripting.addModule("/drivers/gpio/gpio", {}, false);
const gpio1       = gpio.addInstance();
const i2c         = scripting.addModule("/drivers/i2c/i2c", {}, false);
const i2c1        = i2c.addInstance();
const ipc         = scripting.addModule("/drivers/ipc/ipc");
const pcie        = scripting.addModule("/drivers/pcie/pcie", {}, false);
const pcie1       = pcie.addInstance();
const pruicss     = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
const pruicss1    = pruicss.addInstance();
const ethercat    = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
const ethercat1   = ethercat.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 mpu_armv79  = mpu_armv7.addInstance();
const mpu_armv710 = mpu_armv7.addInstance();

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

flash1.$name                  = "CONFIG_FLASH0";
flash1.peripheralDriver.$name = "CONFIG_OSPI0";

led1.$name = "CONFIG_LED_RUN";

gpio1.$name                    = "CONFIG_GPIO0";
led1.peripheralDriver          = gpio1;
gpio1.pinDir                   = "OUTPUT";
gpio1.useMcuDomainPeripherals  = true;
gpio1.MCU_GPIO.$assign         = "MCU_GPIO0";
gpio1.MCU_GPIO.gpioPin.$assign = "ball.A7";

i2c1.$name               = "CONFIG_I2C0";
eeprom1.peripheralDriver = i2c1;
i2c1.I2C.$assign         = "I2C0";
i2c1.I2C.SCL.$assign     = "ball.A18";
i2c1.I2C.SDA.$assign     = "ball.B18";

ipc.enableLinuxIpc = true;

pcie1.$name                = "CONFIG_PCIE0";
pcie1.gen                  = "PCIE_GEN2";
pcie1.ibAtu.create(1);
pcie1.ibAtu[0].$name       = "IB_ATU_CFG0";
pcie1.ibAtu[0].windowSize  = 0xFFFF;
pcie1.ibAtu[0].lowerTarget = "0x2F00";
pcie1.ibAtu[0].lowerBase   = "0x2F00";
pcie1.obAtu.create(4);
pcie1.obAtu[0].$name       = "OB_ATU_CFG0";
pcie1.obAtu[0].lowerBase   = "0x68000000UL";
pcie1.obAtu[0].lowerTarget = "0x68000000UL";
pcie1.obAtu[1].$name       = "OB_ATU_CFG1";
pcie1.obAtu[1].regIndex    = 2;
pcie1.obAtu[1].lowerBase   = "0x7";
pcie1.obAtu[1].lowerTarget = "0x7";
pcie1.obAtu[2].$name       = "OB_ATU_CFG2";
pcie1.obAtu[2].regIndex    = 3;
pcie1.obAtu[2].lowerBase   = "0x68001000";
pcie1.obAtu[2].lowerTarget = "0x68001000";
pcie1.obAtu[3].$name       = "OB_ATU_CFG3";
pcie1.obAtu[3].regIndex    = 4;
pcie1.obAtu[3].lowerBase   = "0x68011000";
pcie1.obAtu[3].lowerTarget = "0x68011000";
pcie1.obAtu[3].windowSize  = 0x7FFFFFF;

ethercat1.$name              = "CONFIG_ETHERCAT0";
ethercat1.instance           = "ICSSG1";
ethercat1.ethphy[0].$name    = "CONFIG_ETHPHY0";
ethercat1.ethphy[1].$name    = "CONFIG_ETHPHY1";
ethercat1.ethphy[1].mdioPort = 3;

pruicss1.iepSyncMode                     = scripting.forceWrite(true);
ethercat1.icss                           = pruicss1;
pruicss1.$name                           = "CONFIG_PRU_ICSS1";
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";

debug_log.enableUartLog                   = true;
debug_log.enableCssLog                    = false;
debug_log.enableMemLog                    = true;
debug_log.enableSharedMemLog              = true;
debug_log.enableSharedMemLogReader        = true;
debug_log.enableLogZoneInfo               = true;
debug_log.uartLog.$name                   = "CONFIG_UART0";
debug_log.uartLog.useMcuDomainPeripherals = true;

mpu_armv71.$name             = "CONFIG_MPU_REGION0";
mpu_armv71.size              = 31;
mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv71.allowExecute      = false;
mpu_armv71.attributes        = "NonCached";

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.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv74.baseAddr          = 0x70000000;
mpu_armv74.size              = 21;

mpu_armv75.$name        = "CONFIG_MPU_REGION4";
mpu_armv75.attributes   = "NonCached";
mpu_armv75.allowExecute = false;
mpu_armv75.size         = 16;
mpu_armv75.baseAddr     = 0xA5000000;

mpu_armv76.$name    = "CONFIG_MPU_REGION5";
mpu_armv76.baseAddr = 0x80000000;
mpu_armv76.size     = 31;

mpu_armv77.$name        = "CONFIG_MPU_REGION6";
mpu_armv77.size         = 20;
mpu_armv77.baseAddr     = 0xA0000000;
mpu_armv77.attributes   = "NonCached";
mpu_armv77.allowExecute = false;

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

mpu_armv79.$name        = "CONFIG_MPU_REGION8";
mpu_armv79.baseAddr     = 0x68000000;
mpu_armv79.size         = 27;
mpu_armv79.allowExecute = false;
mpu_armv79.attributes   = "Device";

mpu_armv710.$name        = "CONFIG_MPU_REGION9";
mpu_armv710.baseAddr     = 0x40000000;
mpu_armv710.allowExecute = false;
mpu_armv710.attributes   = "NonCached";
mpu_armv710.size         = 25;

/**
 * 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.$suggestSolution              = "OSPI0";
flash1.peripheralDriver.OSPI.CLK.$suggestSolution          = "ball.N20";
flash1.peripheralDriver.OSPI.CSn0.$suggestSolution         = "ball.L19";
flash1.peripheralDriver.OSPI.DQS.$suggestSolution          = "ball.N19";
flash1.peripheralDriver.OSPI.D7.$suggestSolution           = "ball.M17";
flash1.peripheralDriver.OSPI.D6.$suggestSolution           = "ball.N18";
flash1.peripheralDriver.OSPI.D5.$suggestSolution           = "ball.P20";
flash1.peripheralDriver.OSPI.D4.$suggestSolution           = "ball.P21";
flash1.peripheralDriver.OSPI.D3.$suggestSolution           = "ball.M21";
flash1.peripheralDriver.OSPI.D2.$suggestSolution           = "ball.M20";
flash1.peripheralDriver.OSPI.D1.$suggestSolution           = "ball.M18";
flash1.peripheralDriver.OSPI.D0.$suggestSolution           = "ball.M19";
ethercat1.PRU_ICSSG1_MDIO.$suggestSolution                 = "PRU_ICSSG1_MDIO0";
ethercat1.PRU_ICSSG1_MDIO.MDC.$suggestSolution             = "ball.Y6";
ethercat1.PRU_ICSSG1_MDIO.MDIO.$suggestSolution            = "ball.AA6";
ethercat1.PRU_ICSSG1_IEP.$suggestSolution                  = "PRU_ICSSG1_IEP0";
ethercat1.PRU_ICSSG1_IEP.EDC_LATCH_IN0.$suggestSolution    = "ball.V7";
ethercat1.PRU_ICSSG1_IEP.EDC_LATCH_IN1.$suggestSolution    = "ball.U13";
ethercat1.PRU_ICSSG1_IEP.EDC_SYNC_OUT0.$suggestSolution    = "ball.W7";
ethercat1.PRU_ICSSG1_IEP.EDC_SYNC_OUT1.$suggestSolution    = "ball.U7";
ethercat1.PRU_ICSSG1_MII_G_RT.$suggestSolution             = "PRU_ICSSG1_MII_G_RT";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD0.$suggestSolution   = "ball.Y7";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD1.$suggestSolution   = "ball.U8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD2.$suggestSolution   = "ball.W8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD3.$suggestSolution   = "ball.V8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXDV.$suggestSolution   = "ball.Y8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXER.$suggestSolution   = "ball.V13";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXLINK.$suggestSolution = "ball.W13";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD0.$suggestSolution   = "ball.AA8";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD1.$suggestSolution   = "ball.U9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD2.$suggestSolution   = "ball.W9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD3.$suggestSolution   = "ball.AA9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXEN.$suggestSolution   = "ball.Y9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD0.$suggestSolution   = "ball.W11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD1.$suggestSolution   = "ball.V11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD2.$suggestSolution   = "ball.AA12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD3.$suggestSolution   = "ball.Y12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXDV.$suggestSolution   = "ball.W12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXER.$suggestSolution   = "ball.AA13";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXLINK.$suggestSolution = "ball.U12";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD0.$suggestSolution   = "ball.AA10";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD1.$suggestSolution   = "ball.V10";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD2.$suggestSolution   = "ball.U10";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD3.$suggestSolution   = "ball.AA11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXEN.$suggestSolution   = "ball.Y11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MR0_CLK.$suggestSolution = "ball.AA7";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MR1_CLK.$suggestSolution = "ball.U11";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MT0_CLK.$suggestSolution = "ball.V9";
ethercat1.PRU_ICSSG1_MII_G_RT.MII_MT1_CLK.$suggestSolution = "ball.Y10";
debug_log.uartLog.MCU_UART.$suggestSolution                = "MCU_USART0";
debug_log.uartLog.MCU_UART.RXD.$suggestSolution            = "ball.A9";
debug_log.uartLog.MCU_UART.TXD.$suggestSolution            = "ball.A8";


Best Regards,
Joao Lima

  • Hi Joao,

    Could you give more details on the error you're seeing? When you say, "technology does not start correctly", do you mean you're not able to scan for the EtherCAT SubDevice using EtherCAT MainDevices or is it like the application build is failing or hitting an assert?

    A couple of things to check on:

    1. Since its sysconfig changes, you can just monitor 0x30090000 Register to see if the firmware is loaded correctly. This register will provide the EtherCAT FW version.
    2.  Make sure the application is running without any asserts. This can be confirmed by pausing the R5F core at multiple instances and see if it is running and not stuck at a particular space.
    3. Make sure the EtherCAT pins are mapped correctly in sysconfig and no mandatory signals are left out.
    We are limited to the version of the sysconfig tool, this is 1.14.0+2667.

    Regards,
    Aaron