adasockets/README-RTEMS.md

2.2 KiB

Building AdaSockets to target RTEMS.

Prerequisites

Build and install a working GNAT/RTEMS toolset and a BSP. Make sure networking and POSIX are enabled. Detailed instructions are available online in the RTEMS Wiki at:

http://www.rtems.org/wiki/index.php/RTEMSAda

Run at least one sample from the RTEMS build (e.g. hello.exe or sample.exe) to confirm that RTEMS itself was properly built.

Build and run the RTEMS hello_world_ada from the ada-examples package using your GNAT/RTEMS development environment.

If everything is working at this point, then you are ready to build AdaSockets.

Generate sockets-constants.ads

Subdirectory: rtems

We will use the RTEMS you installed to build and run a program called constants.exe. The output of this program needs to be saved as sockets-constants.ads. To compile this program use the Makefile.RTEMS.

% RTEMS_MAKEFILE_PATH=install_path_of_BSP make -f Makefile.RTEMS

Then run the program o-optimize/constants.exe on the target hardware. Your saved target board output may end up with DOS style CR/LF's. Run dos2unix on the file to get it back to Unix style.

There is a version of this file generated using psim using a pre-4.8 CVS snapshot of RTEMS which should work on any target. You can use this but you would be safer to generate your own. Consider it an example of how it should look when it works.

Building AdaSockets

Subdirectory: src

Now that you have a sockets-constants.ads, we can build the AdaSockets library. Makefile.adasockets is provided for this step:

% RTEMS_MAKEFILE_PATH=install_patch_of_BSP make -f Makefile.RTEMS

After the library is compiled, it may be installed using the following:

% RTEMS_MAKEFILE_PATH=install_patch_of_BSP make -f Makefile.RTEMS install

Building examples

Subdirectory: examples

After building the sockets package, build the examples the same way

% RTEMS_MAKEFILE_PATH=install_patch_of_BSP make -f Makefile.RTEMS

BUGS:

  • stream_listener core dumps if the endian of the stream_sender is not the same as the listener.
  • multicast does not yet work. This is probably an RTEMS issue.