Git Product home page Git Product logo

real-time-cpp-toolchains's Introduction

real-time-cpp-toolchains

This repository provides information and links to GNU/GCC toolchains synchronized with real-time-cpp. They can be used (among other purposes) for building the reference application (ref_app) for embedded targets and the examples on Win* and/or *nix.

Supported Toolchain Targets

GCC target location
arm-none-eabi ARM(R) GNU Toolchain
avr ckormanyos/avr-gcc-build
riscv32-unknown-elf embecosm
rl78-unknown-elf ckormanyos/gcc-rl78-unknown-elf
rx-elf ckormanyos/gcc-rx-elf
v850-unknown-elf ckormanyos/gcc-v850-unknown-elf
x86_64-w64-mingw32 nuwen distro
xtensa-esp32-elf espressif/crosstool-NG

Further details

The references usually include GNU/GCC toolchains built to run on Win* and also toolchains built to run on *nix (and maybe others). The Win* versions, in particular, can be used by developers who optionally run the builds in the real-time-cpp repository on Win* batches or in Microsoft(R) VisualStudio(R). Other standalone uses for any of these toolchains are, of course, possible.

The toolchains are typically completely moveable, entirely dependency-free (no DLLs), and built to run out-of-the-box.

Finding/Extracting the GNU/GCC Toolchains

Consult the links for the relevant toolchain(s) either in the table above or in the ref_app/tools/Util/msys64/usr/local directory.

Consider, for instance, the gcc-avr toolchain. It available in the release(s) of ckormanyos/avr-gcc-build.

The entire content of the relevant toolchain's directory are intended to be moved or copied to the corresponding ref_app folder in real-time-cpp.

In steps:

  • Move or Copy: real-time-cpp-toolchains/ref_app/tools -> real-time-cpp/ref_app/tools.
  • Identify: real-time-cpp/ref_app/tools/Util/msys64/usr/local.
  • Find toolchain folder, for example: gcc-13.2.0-avr.
  • Populate gcc-13.2.0-avr with toolchain retrieved from release or similar.
  • Use a similar process if a different toolchain is needed (like for ARM(R), or others).

These steps are depicted in the images below.

Move or Copy tools

Populate Toolchain

Using GNU/GCC Toolchains in the ref_app VS Solution

With the toolchain(s) and tools in place, we are now ready to build with MSVC.

The GNU/GCC toolchains harmonize for use with the real-time-cpp repository.

  • Clone (or get zip of) the real-time-cpp repository, which is the main companion code for the book.
  • Consult the toolchain's notes in the real-time-cpp-toolchains repository, which is this repository.
  • Get the needed toolchain from its release or third-party location. Save it and extract its archive.
  • Move or copy the extracted toolchain to the corresponding location in the real-time-cpp repository directory tree.
  • Open the ref_app.sln VisualStudio(R) solution as shown below.
  • Select the solution configuration and rebuild it. The results are placed in the temporary ref_app/bin directory

real-time-cpp-toolchains's People

Contributors

ckormanyos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

cesar-urteaga

real-time-cpp-toolchains's Issues

modernize rl78-unknown-elf-gcc and 64-bit double

At the moment, rl78-unknown-elf-gcc is at version 8.5. Modernize rl78-gcc and along the way, ensure that 64-bit double works.

Associated issue with v8.5 there is trouble linking with the l (for long double) versions of <cmath> functions, as revealed in the trapezoid integral example of real-time-cpp.

Consider separate each big toolchain into Git submodule

Each compressed GCC toolchain is quite large. Consider separating each big toolchain into its own Git submodule.

Handle this in instructions for getting/cloning and also in CI. This would streamline CI for real-time-cpp to some extent.

Wrong value for --host and --build in configs

The wrong value for --host and --build has been used in configs when building binutils and GCC. Misspelling of x86_64-w64-mingw32, where the second part was erroneously x64 has led to successful GCC builds, but awkward configurations. This is present in arm, rx, rl78 and will be corrected presently.

Remove this last remaining dependency on libwinpthread-1.dll

Building GCC on mingw64 still requires one DLL, which is libwinpthread-1.dll. Try to remove this last remaining dependency.

Is it certain that all of GMP, MPFR, MPC, ISL, LIBICONV have been built staticaly and without the presencs of this DLL in mingw64?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.