This is the mail archive of the ecos-discuss@sourceware.cygnus.com mailing list for the eCos project. See the eCos home page for more information.


[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]

Re: ecos on ARM



>>>>> "Mohan" == Mohan Pakkurti <pakku@mediaone.net> writes:

    Mohan> So... this might be a naive question, is there any
    Mohan> documentation info what is involved to integrate a new cpu?

There are two aspects to doing a processor port of eCos. The first is
to port eCos itself. The second is to get the right tools.

Porting to a new processor mainly involves implementing a new
architectural HAL package. There are existing packages for the
MN10300, TX39, and PowerPC processors which can be used as a starting
point. An initial specification of the eCos HAL is available online,
http://sourceware.cygnus.com/ecos/docs-1.1/ref/ecos-ref/the-ecos-hardware-abstraction-layer-hal.html
As you might expect, the work involved in porting eCos is very similar
to the work involved in porting any embedded operating system:
hardware initialization, interrupt handling, processor exceptions,
context switching, etc.

It is worth pointing out that the HAL specification is still expected
to evolve somewhat. Three ports is not enough to guarantee that the
specification provides a true abstraction of all processors. The
documentation includes information about some things that we know are
missing.

In addition to the architectural HAL package it will be necessary to
do a platform HAL package, in other words to provide the support for
an actual development board. This involves issues such as board
initialization, diagnostics, possibly gdb support, and linker scripts.
There are existing platform HAL packages for the stdeval1, jmr3904,
and Cogent boards, and for various simulators.

As time allows and as the system evolves we will be producing better
documentation for doing both processor and platform ports, but right
now this is all that is available.


Unfortunately porting eCos itself is only part of the effort: it is
also necessary to get a set of tools which provide the necessary
functionality. eCos relies on a relatively new extension to the g++
compiler, constructor priority ordering, which allows us to control
the order in which static C++ objects get constructed. For example it
is possible to specify that a scheduler object gets created before any
thread objects. There are a number of other compiler extensions which
are very useful for eCos development, especially selective linking.

At this stage the only toolchain which is known to provide all of the
required functionality is the set of development tools which can be
downloaded from http://sourceware.cygnus.com/ecos, and this has only
been tested for the three architectures currently supported. We hope
to rectify this situation as soon as possible and provide tools that
are known to work for many more processors, but right now we cannot
guarantee this.

This may not have been the news you were hoping for, but I do not want
anybody to start on a new port of eCos without understanding the
problems that may arise. I hope that these issues can be resolved in a
matter of weeks, but cannot give any specific dates just yet.


Bart Veer // eCos net maintainer