Miosix Toolchain: Difference between revisions

From Miosix Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:
== Information on the Miosix Toolchain ==
== Information on the Miosix Toolchain ==


The Miosix Toolchain is a patched version of the [https://gcc.gnu.org GCC] compiler, [https://www.sourceware.org/newlib Newlib] C library, and libstdc++ library. The patches to the compiler and standard libraries are required to:
The Miosix Toolchain is a patched version of the [https://gcc.gnu.org GCC] compiler, [https://www.sourceware.org/newlib Newlib] C library, and libstdc++ library. The [https://github.com/fedetft/miosix-kernel/tree/master/miosix/_tools/compiler patches] to the compiler and standard libraries are required to:


* Provide thread safety. Cooperation between the compiler and kernel is needed to make certain C/C++ standard library functions and certain C++ language constructs thread safe. For example throwing C++ exception, constructors of static objects, accessing the same FILE * handle from more threads. This cannot be done by the kernel alone and is the primary motivation for the patches.
* Provide thread safety. Cooperation between the compiler and kernel is needed to make certain C/C++ standard library functions and certain C++ language constructs thread safe. For example throwing C++ exception, constructors of static objects, accessing the same FILE * handle from more threads. This cannot be done by the kernel alone and is the primary motivation for the patches.
Line 10: Line 10:
Some of the patches have been contributed upstream, but to date compiling Miosix still requires patches. Patches are updated from time to time, and users are required to upgrade to the latest version of the compiler when necessary. The build system will warn you when it's time to upgrade the compiler.
Some of the patches have been contributed upstream, but to date compiling Miosix still requires patches. Patches are updated from time to time, and users are required to upgrade to the latest version of the compiler when necessary. The build system will warn you when it's time to upgrade the compiler.


== Latest version of the Miosix Toolchain ==
 
== Latest Stable version of the Miosix Toolchain ==
 
Released '''July 29th, 2024'''. This version:
* speed improvements in newlib ''fread'' function (up to 70% faster)
* support for more architectures (Cortex-M0+ and Cortex-M4 variant without FPU)
* GCC kept at version 9.2.0
 
_MIOSIX_GCC_PATCH_MAJOR is set to 3, and _MIOSIX_GCC_PATCH_MINOR is set to '''2''' in this release.
 
* [https://miosix.org/toolchain/MiosixToolchainInstaller9.2.0mp3.2.run Miosix Toolchain Linux] (sha256sum d71fdac28a6fc4a4c0b41e90fb46c3722805b04e1ddb355d0da2f1b67e50ef3e) This is self-installing shell script, run it with
<source lang="bash">sh MiosixToolchainInstaller.run</source>
* [https://miosix.org/toolchain/MiosixToolchainInstaller9.2.0mp3.2.exe Miosix Toolchain Windows] (sha256sum 4182788ccb27e42cd56afe65c7146c601aadcab0b758c9882e4a3cf394c6f622) This is a self-installing .exe
* [https://miosix.org/toolchain/MiosixToolchainInstaller9.2.0mp3.2_Intel.pkg Miosix Toolchain Mac OS (Intel)] (sha256sum 5420a4fdb7aee9337350a77bde4820d983d41c7e193cc7bc90612a58287c6010) Contributed by Daniele Cattaneo, it is a release build of the Miosix toolchain for Mac OS (Intel).
* [https://miosix.org/toolchain/MiosixToolchainInstaller9.2.0mp3.2_ARM.pkg Miosix Toolchain Mac OS (ARM)] (sha256sum dca08d3aff33b06b5b848ca07d5f7d95a17a8ae0bde53f0a6e8fca4f181d4f16) Contributed by Daniele Cattaneo, it is a release build of the Miosix toolchain for Mac OS (ARM).
 
== Old Stable version of the Miosix Toolchain ==


Released '''August 12th, 2020'''. This version:
Released '''August 12th, 2020'''. This version:

Latest revision as of 21:44, 15 September 2024

Information on the Miosix Toolchain

The Miosix Toolchain is a patched version of the GCC compiler, Newlib C library, and libstdc++ library. The patches to the compiler and standard libraries are required to:

  • Provide thread safety. Cooperation between the compiler and kernel is needed to make certain C/C++ standard library functions and certain C++ language constructs thread safe. For example throwing C++ exception, constructors of static objects, accessing the same FILE * handle from more threads. This cannot be done by the kernel alone and is the primary motivation for the patches.
  • Improved speed of the pthread and C++11 thread APIs. For example, by modifying Newlib so that pthread_mutex_t is not a generic opaque pointer but the real struct containing the mutex implementation, a 7x speedup can be achieved for mutexes.
  • Code size and RAM requirement reductions, such as reducing the size of large buffers found in the C stdio library.

Some of the patches have been contributed upstream, but to date compiling Miosix still requires patches. Patches are updated from time to time, and users are required to upgrade to the latest version of the compiler when necessary. The build system will warn you when it's time to upgrade the compiler.


Latest Stable version of the Miosix Toolchain

Released July 29th, 2024. This version:

  • speed improvements in newlib fread function (up to 70% faster)
  • support for more architectures (Cortex-M0+ and Cortex-M4 variant without FPU)
  • GCC kept at version 9.2.0

_MIOSIX_GCC_PATCH_MAJOR is set to 3, and _MIOSIX_GCC_PATCH_MINOR is set to 2 in this release.

  • Miosix Toolchain Linux (sha256sum d71fdac28a6fc4a4c0b41e90fb46c3722805b04e1ddb355d0da2f1b67e50ef3e) This is self-installing shell script, run it with
sh MiosixToolchainInstaller.run
  • Miosix Toolchain Windows (sha256sum 4182788ccb27e42cd56afe65c7146c601aadcab0b758c9882e4a3cf394c6f622) This is a self-installing .exe
  • Miosix Toolchain Mac OS (Intel) (sha256sum 5420a4fdb7aee9337350a77bde4820d983d41c7e193cc7bc90612a58287c6010) Contributed by Daniele Cattaneo, it is a release build of the Miosix toolchain for Mac OS (Intel).
  • Miosix Toolchain Mac OS (ARM) (sha256sum dca08d3aff33b06b5b848ca07d5f7d95a17a8ae0bde53f0a6e8fca4f181d4f16) Contributed by Daniele Cattaneo, it is a release build of the Miosix toolchain for Mac OS (ARM).

Old Stable version of the Miosix Toolchain

Released August 12th, 2020. This version:

  • upgrades GCC to 9.2.0
  • supports the C++11 thread API in Miosix (before only the POSIX one was supported)
  • supports C++14
  • reduces code size of printf-related functions
  • provides many improvements and bug fixes to Miosix userspace processes
  • provides more comprehensive atomic operation support through GCC's libatomic

_MIOSIX_GCC_PATCH_MAJOR is set to 3, and _MIOSIX_GCC_PATCH_MINOR is set to 1 in this release.

You can download it here

  • Miosix Toolchain Linux (sha256sum 2b3b1d69a767d1bd3f8d8d21372fabc109b6be39d6524003f8324dce931a1267) This is self-installing shell script, run it with
sh MiosixToolchainInstaller.run
  • Miosix Toolchain Windows (sha256sum 490c14f6fe53f5473c6e9c6af377f3890254cc72c6a34703d9c77d34b8644d41) This is a self-installing .exe

Updated July 5th, 2023 (fix GDB breakpoints not working due to missing expat). Contributed by Daniele Cattaneo.

Updated February 9th, 2023 (fix GDB not working). Contributed by Daniele Cattaneo, it is a release build of the Miosix toolchain for Mac OS (Intel).

Updated July 9th, 2023. Contributed by Daniele Cattaneo, it is a release build of the Miosix toolchain for Mac OS (ARM).

Installers will automatically detect a previous version of the compiler and uninstall it.

Previous version of the Miosix Toolchain

Released June 8th, 2014. This version provides GCC 4.7.3.

_MIOSIX_GCC_PATCH_VERSION is set to 1 in this release.

No longer supported, if you need it you will have to rebuild this toolchain from sources.