GNU Arm Embedded Toolchain Version 10-2020-q4-major

Hi,
maybe I just don’t know where to look, but for me it seems there is no new toolchain-gccarmnoneeabi for Windows containing this release:

If there is, please point me to the version number. If it is really missing, could you please package it for us?

Thanks,
Csaba

Per search the latest available version is 1.90301.200702 for arm-none-eabi-gcc 9.3.1 (equivalent 9-2020-q2), so 10-2020-q4 is indeed not package now.

CC @valeros

As a workaround you can always ovewrite the existing files in C:\Users\<user>\.platformio\packages\toolchain-gccarmnoneeabi (without the package.json) or download the toolchain, add the package.json from the old toolchain-gccarmnoneeabi package it with updated version field, pack that and refer to it using platform_packages.

@maxgerhardt What is the official release process for toolchains? Is this community-driven? Given that this is a pretty major toolchain, I would hope that its release is prioritized. Would be happy to contribute if it’s community-driven.

1 Like

Hi @mattk! At the moment all PlatformIO dev-platform use GCC v9.3.1 and there is no official plans to switch the platforms to the latest GCC. Besides ARM doesn’t provide a toolchain package for 32bit ARM systems. As @maxgerhardt rightly pointed out, you can always replace your toolchain locally.

Totally understand. Will explore options. The whole benefit of PlatformIO is its turnkey nature, so I’m hesitant to require our devs to do too much manual modification.

I’m confused by what you mean re: 32-bit support. Could you elaborate @valeros? From the ARM website:

The GNU Arm Embedded Toolchain targets the 32-bit Arm Cortex-A, Arm Cortex-M, and Arm Cortex-R processor families.

Exactly, targets, the compiler will produce binaries for these ARM32 targets (or ARMv7 A/M/R precisely) but the compiler does not run on ARM32 has a host system, just runs on Win32/x86_64 Linux / Mac / aarch64. If we’d e.g. wanted it to run on a Raspberry Pi with a 32-bit OS, then there’s no download for that, and we’d have to self-compile.

Ah yes of course. Makes sense. Was just thinking of my own personal use case, i.e. cross compiling, where this isn’t an issue. Thanks

I don’t understand why this would stop us having a package available for Windows. When I create the package for myself, it is a pain to distribute it to all development PCs involved at all devs in the team.

I don’t think the majority of the users would want ARM32 as host.

But I do think many are interested in using the newest available compiler.

As a workaround, I would suggest to name the package differently, E.G. toolchain-gccarmnoneeabi-ahead.

Assumed I create the package myself. Is there a way to make it public so that others can use it?

With pio account login you can log into your PlatformIO account from the commandline and with pio package publish you can submit it for publication. Then people will be able to access your toolchain package by using platform_packages directives in the platformio.ini such as

platform_packages = 
   csaba/toolchain-gccarmnoneeabi@<version number>

(assuming csaba is the username of the package owner)

Let me know if you need help with this. I’m new to PIO and am still unclear what is community-driven and what is not.

Thanks, @maxgerhardt, this looks very promising!

Thanks, @mattk, I will try this when I get to it, but currently I am quite busy with other things. I don’t know yet whether I need help with this.

As far as I understand, Ivan and Max don’t want to make this centrally, because the new compiler would raise issues with existing libraries, and for the library maintainers it is easier to manage having almost the same compiler version on all platforms. So we have to do it in our user space, without affecting others.

Hey, I got pretty tired of using GCC 7, which is missing some really important optimizations.

I wrote a couple scripts at GitHub - flaviut/platformio-gcc-arm-none-packaging to help create and upload packages of newer GCC versions. I’ll be publishing GCC 10 at PlatformIO Registry, as soon as my uploads are approved.

I’d like to argue against the stance in GNU Arm Embedded Toolchain Version 10-2020-q4-major - #4 by valeros – it’s reasonable for the team to not want to bump the versions on the platforms, but it’s possible to make a wide variety of GCC versions available without much manual work and without changing the version various platforms depend on.

Also, I’d like to publish GCC 11, but the size quota makes it impossible:

-rw-r--r-- 1 user user  771M Mar 25 21:42 toolchain-gccarmnoneeabi-darwin_x86_64-1.110201.220215.tar.gz
-rw-r--r-- 1 user user  821M Mar 25 21:42 toolchain-gccarmnoneeabi-linux_aarch64-1.110201.220215.tar.gz
-rw-r--r-- 1 user user  822M Mar 25 21:42 toolchain-gccarmnoneeabi-linux_x86_64-1.110201.220215.tar.gz
-rw-r--r-- 1 user user 1019M Mar 25 21:44 toolchain-gccarmnoneeabi-windows_amd64-1.110201.220215.tar.gz
1 Like

GNU toolchain for Arm Cortex-M and Cortex-R processors v10.3.1 has been published to the registry

Usage

platform_packages = 
   platformio/toolchain-gccarmnoneeabi@~1.100301.0
1 Like

I appreciate it @ivankravets! Unfortunately it looks like there’s been a packaging issue due to what looks like filesystem path limits:

$ tar tf 1f3d656b6975621ed4d8622dbf476cd0d0edfd24
…
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/nofp/bits/os
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/nofp/bits/st
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/nofp/bits/ti
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/nofp/ext/opt
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/v6-m/nofp/bi
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/v7+fp/hard/b
arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/v7+fp/softfp
…
  1. Please run pio system prune --cache
  2. Remove ~/.platformio/packages/toolchain-gccarmnoneeabi
  3. Try building again.
1 Like

Thank you, this new upload has fixed the issue!

1 Like