From Texas Instruments Wiki
Jump to: navigation, search

RTOS Software Developer Guide ICSS-EMAC_DUAL_EMAC


User Interface




The ICSS DUAL EMAC FIRMWARE serves as an example for Texas Instruments programmable approach to implement a 2 port ethernet mac supporting at 10/100 Mbps. ICSS DUAL EMAC FIRMWARE is standardized to IEEE 802.1 Ethernet Standards. The primary use case of the protocol is to demonstrate basic ethernet functionality via both PRU cores on 10/100 Mbit Ethernet cable. This firmware is fully documented and released in source code. It is open to customers to learn, adapt and enhance the firmware for their application requirements.

Protocol Overview

ICSS DUAL EMAC FIRMWARE is a single port Ethernet MAC (Media Access Control) i.e. Layer 2 of OSI Model. ICSS DUAL EMAC FIRMWARE can be used independently on two PRU's to implement two independent MAC's with two different MAC addresses and two different IP addresses. To provide an analogy, this is somewhat similar to a two port Ethernet PCIe NIC card on a PC, only here, the Ethernet interface is available along with the Host processor on a single SoC. The following are the high level features it supports.

Requirements Remarks
1 ms buffering per port Supported
Host IRQ Supported
Ethernet QoS With 2 queues instead of 8. So, it is not a standard Ethernet QoS implementation.
Statistics Supported
Storm Prevention Supported

Code Organization

ICSS DUAL EMAC FIRMWARE sources can be found under the following directory :


In addition, there is a README.txt which provides high-level over of how the firmware is implemented for network compoments which can be found at:


Building the Firmware

Pre-requisites to Building

  1. Set your environment using Building the Firmware binaries uses the same environment variables as the icss-emac driver library build. Refer to the Processor SDK RTOS Building page for information on setting up your build environment.


To build the firmware binaries:

  1. cd <PDK>/packages/ti/drv/icss_emac
  2. make firm

This will make the firmware binaries which will be located in:


<SOC> indicates the SOC type.

<HOST_CORE> indicates the Host core type on which the built binary can be loaded.

<REVISION> indicates the revision of the firmware binary based on core. (There are 2 revision of PRU ICSS core)

Supported EVMs

The following is a list of EVMS supported and the PRU-ICSS ethernet ports to be used:

EVM Name PRU-ICSS Instance Supported PRU ICSS core revision
icev2AM335x PRU-ICSS instance 1 REV1
idkAM437x PRU-ICSS instance 2 REV1
idkAM571x PRU-ICSS instance 2 REV2
idkAM572x PRU-ICSS instance 2 REV1 & REV2 (Earlier version of AM572x soc had REV1 pru cores while later had REV2 pru cores)
iceK2G PRU-ICSS instance 2 REV2


Please go through the following page for example demonstrating the use of the firmware via icss-emac driver. [1]

Firmware Design Guide

Document Location
ICSS DUAL EMAC FIRMWARE Design Guide <PDK>/packages/ti/drv/icss_emac/firmware/icss_dualemac/docs/ICSS_DUAL_EMAC_Firmware_Design_Guide.pdf

NOTE: For normal use case, there is no need to refer this document. Unless you wish to go through the internal working for firmware and/or wanted to modify it.