tree: 311c0950bc37e6a834cfb18ee5c2f4427f89ae34 [path history] [tgz]
  1. include/
  2. src/
  3. CMakeLists.txt
  4. Ethdriver.camkes
  5. README.md
components/Ethdriver/README.md

Ethdriver

This is a a CAmkES component that is intended to abstract over a platform's Ethernet device and multiplex client access to it.

Dependencies

This component needs to be used with the single-threaded module that performs the initialisation process, and client request routing the component relies on. The picotcp-ethernet-async module is an optional dependency which provides helper CAmkES macros and an asynchronous data transfer interface for clients.

Usage

For clients to use the functionality exposed by the component, the clients will have to connect to this CAmkES interface using the seL4Ethdriver connector.

provides Ethdriver client;

There are also some additional configuration options for the DMA that need to be set. To set this, change the following to be a page aligned number, and replace name with the name of the Ethdriver instance.

name.dma_pool = <desired DMA pool size>;

To use the asynchronous data transfer interface, the picotcp-ethernet-async optional module provides several macros to add these extra interfaces, connect the client to the component, and configure the necessary options as well. These are:

picotcp_ethernet_async_server_interfaces(name)

picotcp_ethernet_async_connections(name, client, driver)

picotcp_ethernet_async_configurations(name, client, driver)

Supported platforms

Currently, this component supports the following platforms:

  • i.MX6
  • i.MX8MQ Evaluation Kit
  • TX2
  • Zynq7000
  • pc99, specifically the Intel 82574 and 82580 Ethernet controllers

Additional platforms require a corresponding clock system driver to be implemented in the libplatsupport library of the util_libs repository, and the following CPP defintions to be created in the include folder of this component (if the platform is ARM-based):

  • HARDWARE_ETHERNET_INTERFACES
  • HARDWARE_ETHERNET_INTERFACES
  • HARDWARE_ETHERNET_ATTRIBUTES
  • HARDWARE_ETHERNET_COMPOSITION
  • HARDWARE_ETHERNET_CONFIG
  • and possibly, HARDWARE_ETHERNET_EXTRA_IMPORTS

Limitations

Network performance may be an issue for network-demanding applications that require throughputs close to Gigabit. This is because the Ethdriver by default runs in its own address space and data transfer is done via copying in and out to and from shared memory channels between the Ethdriver and the clients.