emc2 uses nml to communicate between milltask and the user
interface programs such as axis, tkemc, and halui.  nml is based on
buffers with layout set at compile time, and on local systems I believe
that these are actually implemented through a shared memory method.
However, there is also a network mode which can in principle allow the
user interface to operate on a different machine than milltask.

emc2 uses rtapi for software that has to run in realtime, and for
software that is not realtime but must communicate with it (e.g., the
shared memory buffer between milltask and motion).  hal, which relies on
rtapi, is also convenient to use for communication between non-realtime
parts of emc, for instance between pyvcp and halui, because pins can be
connected via signals in an ad-hoc fashion, rather than having to
recompile the software to create new items in the status buffer or new
commands for the command buffer.

sometimes you will see references to 'ulapi'.  'ulapi' is an API which
is a subset of 'rtapi'.  'ulapi' runs in userspace and has no realtime
guarantees.  It allows HAL userspace components to be written without
forcing the programmer to learn two different APIs.

Finally, there is sim_rtapi.  This is an impelementation of enough of
the RTAPI API to run HAL and emc2 which resides entirely in userspace,
does not require the insertion of modules or any other action that can't
be undertaken by regular users, and which provides no realtime
guarantees.  Because this mode cannot directly access hardware, and
because it has no realtime guarantees, it is only useful for debugging
non-hardware-driver components and for running emc's "sim" family of
configurations to test and preview gcode on systems without the realtime
kernel installed.

None of nml, rtapi or ulapi can be dropped from emc without
extensive work and without losing features.  For instance, dropping nml
means rewriting all the user interfaces to use something else in hal or
rtapi for ipc (a mininum of thousands of lines to change and test) and
would lose the (infrequently-used) possibility of a remote UI.  Dropping
hal means losing the flexibility to reconfigure emc in the myriad ways
that are currently possible.  Dropping rtapi means rewriting hal
directly on top of a specific realtime kernel API such as rtai, making
future porting to new environments harder.  Dropping ulapi means
forfeiting the ability to write HAL components in userspace, with no
obvious benefit.

Jeff

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to