We want to create a project to transfer EtherNet/IP data to another core for processing.
Therefore, I am trying to transfer data using IPC.
The following configuration is assumed.
1. r5fss0-0 "EtherNet/IP communication"
2. r5fss0-1 "Application processing"
We have incorporated IPC processing into our EtherNet/IP projects.
However, when we try to operate IPC (ipc_rpmsg_echo) and PRU-ICSSG (EtherNet/IP), a data abort "HwiP_data_abort_handler" occurs.
We did some research and found that the MPU settings were affecting it.
Data abort no longer occurs when the region for IPC (0x701D0000) is deleted in the MPU setting of "example.syscfg".
Of course, data transfer by IPC will not be possible.
Region for IPC:
mpu_armv75.$name = "CONFIG_MPU_REGION4";
mpu_armv75.attributes = "Device";
mpu_armv75.allowExecute = false;
mpu_armv75.baseAddr = 0x701D0000;
mpu_armv75.size = 16;
As a side note, In "ethernetip_adapter_demo", 64KB from 0x70000000 is used for communication with PRU-ICSSG as MPU setting.
Region for PRU-ICSSG:
mpu_armv75.$name = "CONFIG_MPU_REGION4";
mpu_armv75.size = 16;
mpu_armv75.baseAddr = 0x70000000;
mpu_armv75.attributes = "Cached+Sharable";
So I have some questions.
Q.1 When using PRU-ICSSG (EtherNet/IP) and IPC, how should the MPU be set?
Q.2 Is there an example project using PRU-ICSSG and IPC?
We are looking forward to your reply.