Mon Oct 23 20:39:23 CEST 2000
Kent Boortz wrote:
> > Does anyone have any pointers on what it would take to port Erlang
> > to VRTX? (http://www.mentor.com/embedded/vrtxos/index.html)
> > The target system would be an MPC850 running VRTX and it would have
> > only a boot flash - though a ram disk filesystem could be created
> > from the flash image if needed.
> I don't think there is anything written about porting Erlang to a new
> embedded target. There have been prototype ports to some embedded
> operating systems. The only supported embedded port is VxWorks.
> Erlang/OTP is a bit POSIX/Unix oriented but it is possible to port it
> to a non POSIX OS as well, only a bit harder. The Window port shows it
> can be done.
> Some comments:
> - VRTX seem to have a POSIX library and a complete TCP/IP stack so
> the libraries needed are probably there. Erlang put some high
> demands on the socket library so if there are some strange bugs in
> VRTX TCP/IP stack, especially with non blocking I/O, then you will
> probably run into it.
> - All C files, except "beam_emu.c", should compile with any ANSI C
> compiler. We compile "beam_emu.c" with GCC to use a special GCC
> feature that makes the decoding of the Erlang virtual instructions
> twice as fast. But you should be able to compile without GCC if
> you define the preprocessor symbol NO_JUMP_TABLE. You define it by
> running make like
> % gmake TYPE_FLAGS="-g -O2 -DNO_JUMP_TABLE"
> Also note that "beam_emu.c" contains a huge switch statement,
> your C compiler or your machine setup may not be able to handle
> it. If not, try disabling the optimizations first, "-O1" or
> even "-O0" but this will of cause reduce the speed even more.
> I think it is possible to use GCC for compiling to a VRTX target
> but haven't found any real prof of this.
> - I assume you have to cross compile. The usual configure script
> does not handle this. Look at the VxWork specific files and
> do something similar.
> - The Erlang distribution, i.e. how Erlang nodes communicate,
> normally use TCP/IP. But you can write your own driver and enable
> Erlang nodes to use the native message passing in VRTX. I don't
> know how much work this is but the process is documented.
Thanks for the pointers. I'm also evaluating LynxOS (http://www.lynuxworks.com/products/whatislos.html) which appears to be much more POSIX/Unix flavored than VRTX and VxWorks, and fully supports the GNU toolchain.
VRTX & LynxOS have very similar features - the biggest of which are memory protection, deterministic behavior, and interruptable system calls - that VxWorks doesn't.
More information about the erlang-questions