[ECOS] Ethernet driver /MPC860 FADS

Claus Jarnik jarnik@esk.fhg.de
Mon Dec 20 02:16:00 GMT 1999


let me first introduce myself. My name is Claus Jarnik and I'm a student
of the Fachhochschule Munich/University of Applied Sciences.
Actually I do my diploma for the Fraunhofer ESK (research institute).
My business is the development of an ethernet driver under eCos for the
Motorola MPC860 (evaluation board: FADS).

Also I want to write something about eCos (if I get enough information
about the purpose of eCos, known commercial Applications and products …)

If you have any interest in my driver (end version is planned to be in
march 2000) I will make the code available to the eCos community.

Right now I might need your help because I got some problems with the
data rate of my driver.
It would be a great help for me if you have any good idea to solve the

I use the eCos cyg_io_read and cyg_io_write function for
receive/transmit data.
(cyg_io_write(cyg_io_handle_t handle, const void *buf, cyg_uint32 *len)

In these functions I copy the data from/to buf with the desired length
This copying (I use memcpy) costs a lot of performance.

For a simple performance test I transmit 50000 ethernet frames  (1518
bytes) from a Linux PC to the FADS board.

This are my data rates for receiving:

Action                             | average data rate| busy errors
Receive and check                  | 1.4 Mbit/s       | 49997
(check if every single byte is ok) |                  |
Receive without check              | 2.8 Mbit/s       | 50001
Without memcpy (no copying of data)| 7.1 Mbit/s       |  3400

Remarks: 64 receive buffer (1520 bytes per buffer), one user task, BSY
INT deactivated, non-blocking read modus

The 7.02 Mbit/s rate would be the best theoretical average data rate
with my driver.
The copying of the received data costs nearly 60% of the theoretical
data rate.

Does eCos support pointer handling with a memory pool (only to handle
pointers to data, not copying the data) because the copying of data from
layer to layer will decrease a lot of performance?

I think a pointer handling from layer to layer would be more effective.

Thank you very much

kind regards

Fraunhofer Einrichtung für 
Systeme der Kommunikationstechnik
Claus Jarnik			Hansastraße 32
				D-80686 München
               			Telefon: +49(0)89/547088-40
		                Telefax: +49(0)89/547088-20

More information about the Ecos-discuss mailing list