README.md 3.41 KB
Newer Older
Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Introduction
============

This repository contains RTEMS scaffolds that cover the development workflows
required for ESA projects. The Makefiles and the example sources demonstrate
(for now) how to:

* support both debug and release compilations
* support compilation for native and emulated FPU usage

Application sources
-------------------
The sources of your project must be set inside the Makefile, in the FPU_SRC and
NONFPU_SRC variables. As their names suggest, you add a file in the FPU_SRC list
if you want it to be compiled for native FPU use (i.e. without `-msoft-float`).
Whether native FPU compilation is performed on it or not, is selected during 
build time, by the FPU=1 Makefile parameter (see below)

Compilation options
-------------------

You can control 3 orthogonal options (for now):

* Debug/Release mode:

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
26 27
Use the `CFG` Makefile parameter:

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
28 29 30 31 32 33 34 35 36 37 38
    $ make CFG=debug
    ...
    $ ls -l bin.debug/
    -rwxr-xr-x 1 user user 645273 Mar 16 17:43 fputest

    $ make CFG=release
    ...
    $ ls -l bin.release/
    -rwxr-xr-x 1 root root  47860 Mar 16 17:48 fputest
    -rwxr-xr-x 1 root root 585178 Mar 16 17:48 fputest.debug

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
39 40
If no `CFG` option is passed, the default is Debug compilation.

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
41 42 43 44 45 46
Notice that in release compilation, the process creates a small binary (containing
only the executable code) and separately, the debug information - for loading
from inside GDB via the `file` command.

* Native FPU usage for the FPU_SRC sources:

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
47
To use native FPU compilation for the FPU_SRC list of source files, use the `FPU` Makefile parameter:
Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
48 49 50

    $ make CFG=release FPU=1

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
51 52 53 54 55 56 57 58
To use emulation (default, if `FPU` option is not passed) pass 0:

    $ make CFG=release FPU=0

or just

    $ make CFG=release

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
* Verbosity:

Compilation messages follow the semantics of the Linux kernel compilations,
emitting short messages by default (CC for compilation, LD for linking):

    $ touch src/task1.c
    $ make
    [CC] objs.debug/FPU_task1.o
    [LD] bin.debug/fputest

If you want to see the complete commands used, invoke `make` with V=1:

    $ touch src/task1.c
    $ make V=1
    sparc-rtems4.8-gcc -c -B/home/user/development/rtems/sparc-rtems4.8/leon3/lib \
        -specs bsp_specs -qrtems -nodefaultlibs -mcpu=cypress -DBSP_leon3  -g -Wall \
        -D_DEBUG -I/home/user/development/build/rtems-impr/testsuites/support/include \
        -I src -msoft-float -o objs.debug/FPU_task1.o src/task1.c
    sparc-rtems4.8-gcc -g -o bin.debug/fputest objs.debug/NONFPU_init.o \
        objs.debug/NONFPU_printk.o objs.debug/NONFPU_leon3.o objs.debug/FPU_task1.o \
        -msoft-float -B/home/user/development/rtems/sparc-rtems4.8/leon3/lib \
        -specs bsp_specs -qrtems -nodefaultlibs -mcpu=cypress -DBSP_leon3  \
        -nodefaultlibs -Wl,--wrap,_IO_Initialize_all_drivers \
        /home/user/development/rtems/sparc-rtems4.8/leon3/lib/libno_event.a \
        /home/user/development/rtems/sparc-rtems4.8/leon3/lib/libno_msg.a \
        /home/user/development/rtems/sparc-rtems4.8/leon3/lib/libno_sem.a \
        /home/user/development/rtems/sparc-rtems4.8/leon3/lib/libno_timer.a \
        /home/user/development/rtems/sparc-rtems4.8/leon3/lib/libno_rtmon.a \
        /home/user/development/rtems/sparc-rtems4.8/leon3/lib/libno_ext.a \
        -Wl,--start-group -lrtemscpu -lio -lno_event -lno_msg -lno_sem -lno_timer \
        -lno_rtmon -lno_ext -lrtemsbsp -llibc -lrtemscpu -Wl,--end-group \
        -Wl,--script=linkcmds -B/tmp/edilibtmp/edilib/library -lgcc