ETHFW API Guide
|
Ethernet Firmware is a RTOS based server-client application which runs on Cortex R5F 0 core 0 in main domain of J721E, J7200 and J784S4 SoCs. ETHFW enables multiple client drivers to run independently on the remaining cores in the system. So the multiport CPSW switch present in the Jacinto family devices will be shared among all the participating cores within the SoC. ETHFW owns the CPSW switch and provides remote configuration infrastructure for other processing cores running different operating systems.
Ethernet Firmware is in charge of performing any CPSW switch configuration required by remote cores on their behalf, which it does through its ethremotecfg framework. This framework is based on IPC low-level driver and is located at ethfw/ethremotecfg/ folder. Each and every core participating in the inter core communication creates a local endpoint(s) which are unique per core and will be used a landmarks while sending/receiving messages across cores. These endpoints can be hard-coded or assigned dynamically based on the user requirement.
Message types and endpoints supported by ETHFW are mentioned below:
Endpoint Type | Endpoint Service | Endpoint Owner | Core | Description |
---|---|---|---|---|
Dynamic | Publishes "ti.ethfw.ethdevice" and subscribes "ti.autosar.ethdevice" | ETHFW | Main R5F 0 core 0 (mcu2_0) | Handles the configurations for the remote clients |
Dynamic | Publishes "ti.ethfw.notifyservice" | ETHFW | Main R5F 0 core 1 (mcu2_0) | Sends CPTS HW push events for multi-core Timesync |
Dynamic | Subscribes "ti.ethfw.ethdevice" | Linux client | A72 (mpu1_0) | Requests the remote configurations to server |
Dynamic | Subscribes "ti.ethfw.ethdevice" | QNX io-pkt client | A72 (mpu1_0) | Requests the remote configurations to server |
Static (30U) | Subscribes "ti.ethfw.notifyservice" | QNX io-pkt client | A72 (mpu1_0) | Receives HW push events for QNX client(s) |
Dynamic | Subscribes "ti.ethfw.ethdevice" | RTOS client | Main R5F 0 core 1 (mcu2_1) | Requests the remote configurations to server |
Static (30U) | Subscribes "ti.ethfw.notifyservice" | RTOS client | Main R5F 0 core 1 (mcu2_1) | Receives HW push events for RTOS client(s) |
Static (28U) | Publishes "ti.autosar.ethdevice" | AUTOSAR client | Main R5F 0 core 1 (mcu2_1) | Used to bind AUTOSAR with ETHFW |
Static (38U) | Publishes "ti.autosar.ethdevice" | AUTOSAR client | MCU R5F 0 core 0 (mcu1_0) | Used to bind AUTOSAR with ETHFW |
This table lists all client types supported by Ethernet Firmware, but no assumptions should be made for this table alone regarding remote client concurrency.
Notification are messages sent by Ethernet Firmware to all clients, they are exclusively server-to-client direction.
Notifications | Params | Switch Port Support | MAC Port Support | Description |
---|---|---|---|---|
FWINFO | EthRemoteCfg_DeviceData | Y | Y | ETHFW version info notify |
HWPUSH | EthRemoteCfg_NotifyServiceHwPushMsg | Y | Y | Send CPSW HW push events |
HWERROR | EthRemoteCfg_CommonNotify | Y | Y | Hardware error notify |
HWRECOVERY_COMPLETE | EthRemoteCfg_CommonNotify | Y | Y | Hardware recovery completion notify |
Commands are messages sent by remote clients to Ethernet Firmware for it to taken action on their behalf. All commands are composed of a request (client-to-server direction) and a response (server-to-client direction).