SynDEx Frequently Asked Questions
Is SynDEx free?
SynDEx is not (yet) a free software in the sense of the Free
Software Foundation, as all sources are not
distributed. However, SynDEx is freely available for
non-commercial use. You may download and use it, provided that
you agree with the
TCL_init or TK_init failed : can't find a usable init.tcl
This error message means that the SynDEx binary executable cannot find the
Tcl/Tk initialization script, which is expected to be found in a directory
given in the TCL_LIBRARY environment variable.
This mostly happens when you try to start SynDEx by executing
directly its binary executable located in the syndex/bin
directory, and the TCL_LIBRARY or TK_LIBRARY environment
variable is not set.
Start SynDEx as recommended in the README file, by executing the
syndex shell-script, which sets all the required environment
variables before executing the SynDEx binary executable.
Where can I find publications about AAA/SynDEx?
We recommend to read first
these 4 articles.
There is also a
complete list of our publications, in reverse
Where can I find a documentation about SynDEx?
web documentation is the main repository for all SynDEx
documentations and available sources.
SynDEx also includes a (limited) on-line documentation in its
Tcl/Tk interface (look at the Help menu in the menu bar of the
Where can I find documentations for m4, gcc, make...?
and other GNU utilities, may be found at
GNU web server
Why is chronometric logging presently limited to monoprocessor architectures?
When the Chrono option is checked (menu Code), SynDEx
generates macro-executives intended to support chronometric
logging at runtime, stored in the local memory of each
processor (macros Chrono_), and chronometric logs collection
during the finalization phase of the application, from all
processors up to the "root" processor's mass memory (macros
saveFrom_ and saveUpto_).
The Chrono_ macro is defined in the C.m4x executive kernel,
which is dedicated to C-programmed architectures. The
Chrono_ macro generates calls to the Unix "gettimeofday"
system function, but this may be easily changed by the user
redefining the macro Chrono_GetTime_ (see comments in the
"Chronometric logging" section in C.m4x).
The saveFrom_ and saveUpto_ macros, which should be defined
in TCP.m4x, have not yet been developped. Therefore
chronometric logs cannot be collected in an architecture
with more than one processor.
I am a beginner CyCab user: how do I start?
- Read the article
it is about the "old" (first prototype) CyCab, and about
the "old" (version 4) SynDEx, it gives a good overall
- Have a look at the AAA/SynDEx
- Read the 3 first chapters
- Read the
Download and install SynDEx.
- Download and install the MPC555 cross-compiler.
is already installed on AFS machines at INRIA (only on
PC/Linux machines for now, but it may be installed on
SUN/Solaris and DEC/Alpha machines if needed); to use
it, add to your path the directory
/usr/local/src/users/lavarenn/mpc555/@sys/bin (if the
command "echo $shell" returns "/bin/tcsh", add to your
"~/.login" file the line "set path = ($path
/usr/local/src/users/lavarenn/mpc555/@sys/bin)"; if you
use another shell, you should know how to do that for
your shell). The MPC555 cross-compiler executables are
all prefixed with "ppc-elf32-" (for example,
"ppc-elf32-gcc" is the executable name of gcc). The man
files are provided.
If your machine is not under
AFS, you must download from
sources of the "GNUPro Toolchain", read carefully its
documentation, and configure with the options
"--target=ppc-elf32 --with-newlib" before compiling;
decide yourself where you want to install the
cross-compiler (option "--prefix=somePath").
- Read the README file, which recommends a reading order
of other files in the SynDEx distribution, to guide you
gradually in writing your application "operations"; copy
the examples in your home directory, and test them: do
- Create your own application by copying and modifying
the "CyCab" example application (soon available in the
cycab directory). Save your modified application as
"myappli" for example (menu File/SaveAs); hereunder,
substitute each reference to "myappli" by your own
Generate your application
executive (menu Adequation/Genexec), to get four files:
"myappli.m4", "root.m4", "f555.m4", and "r555.m4".
Rename the file "cycab.m4x" to "myappli.m4x", and inside
it substitute in the macro-definitions "f555_ProcID_"
and "r555_ProcID_" the processor identifiers specific to
your CyCab (these identifiers are given by Robosoft).
- Write your application specific "operations", for
example in C: they MUST NOT access global variables,
they may only compute their output arguments (functional
result or passed by reference) from their input
arguments (passed by value or by reference). In your
"myappli.m4x" application specific file, write a macro
for each application specific "operation" of your own;
if you have followed carefully step 4 above, it is an
- In the GNUmakefile file (copied from the CyCab
example), change the line "A=cycab" by "A=myappli", and
read carefully the comments explaining how to separately
compile and link the source files coding your
application specific "operations".
- Everything is now ready for the "make" command to automatically:
- translate "myappli.m4" into the makefile
- compile separately the source file(s) of your
application specific operations
- translate "root.m4" into "root.s", compile it into
"root.386", and link it into "root", the PC
executable part of your application
- translate "f555.m4" into "f555.s", compile it into
"f555.555", link it into "f555.elf" (and generate
the link-map "f555.elf.map"), convert it into "f555"
in the SynDEx loader format
- as above, substituting "f555" by "r555"
- load and execute your distributed application with
the command "./root f555 r555"
Is there a SynDEx tutorial for beginners?
The SynDEx tutorial is available
Last update: 2009/08/07