A toolchain is always needed. However, this is not something you normally need to think about, or even know about because Arduino IDE is designed to handle all of that for you. The toolchain is normally only something you would need to think about if you were not using an IDE, but instead working directly with the tools (e.g., running GCC commands directly to compile a C++ program).
Now that you have successfully installed the "Silicon Labs" platform, you won't need to think about the toolchain any more (until the time comes to install another platform that has large files hosted via GitHub release assets, or update to the next version of the "Silicon Labs" platform). However, it is a subject that some of us find interesting and valuable to know about. So if you ever are curious about the toolchains, then you are very welcome to ask questions about the subject here on Arduino Forum. Some of the forum helpers are very knowledgeable on that subject matter.
I know because I looked at the entry in the package index that provides the data the Arduino IDE Boards Manager uses to install the platform:
https://downloads.arduino.cc/packages/package_index.json
Here is the entry for the 3.0.0 release of the "Silicon Labs" platform:
{
"name": "Silicon Labs",
"architecture": "silabs",
"version": "2.2.0",
"category": "Silicon Labs",
"url": "https://github.com/SiliconLabs/arduino/releases/download/2.2.0/silabs_arduino_core-2.2.0.zst",
"archiveFileName": "silabs_arduino_core-2.2.0.zst",
"checksum": "SHA-256:6ddf48877a3cdbbe6b5ad422ad0e1a15e50c3fe4e59f0bae33ad613b5e7520bc",
"size": 448097201,
"help": {
"online": "https://github.com/SiliconLabs/arduino"
},
"boards": [
{
"name": "Arduino Nano Matter"
},
{
"name": "SparkFun Thing Plus Matter"
},
{
"name": "xG24 Explorer Kit"
},
{
"name": "xG24 Dev Kit"
},
{
"name": "xG27 Dev Kit"
},
{
"name": "BGM220 Explorer Kit"
},
{
"name": "Ezurio Lyra 24P 20dBm Dev Kit"
},
{
"name": "Seeed Studio XIAO MG24 (Sense)"
}
],
"toolsDependencies": [
{
"packager": "SiliconLabs",
"name": "gcc-arm-none-eabi",
"version": "12.2.rel1"
},
{
"packager": "SiliconLabs",
"name": "openocd",
"version": "0.12.0-arduino1-static"
},
{
"packager": "SiliconLabs",
"name": "simplicitycommander",
"version": "1.16.4"
}
]
},
The toolsDependencies
array defines the toolchain components that Boards Manager should install in addition to the platform.
This element in the toolsDependencies
array specifies a dependency on version 12.2.rel1
of the tool with machine identifier gcc-arm-none-eabi
(ARM GNU Toolchain), which is distributed by the vendor with machine identifier SiliconLabs
(the Silicon Labs company):
{
"packager": "SiliconLabs",
"name": "gcc-arm-none-eabi",
"version": "12.2.rel1"
},
The machine identifier for this specific tool release is SiliconLabs:gcc-arm-none-eabi@12.2.rel1
.
There is a separate entry in the package index for each tool release. Here is the entry for the SiliconLabs:gcc-arm-none-eabi@12.2.rel1
release:
{
"name": "gcc-arm-none-eabi",
"version": "12.2.rel1",
"systems": [
{
"host": "arm64-apple-darwin",
"url": "https://github.com/SiliconLabs/arduino/releases/download/2.0.0/arm-gnu-toolchain-12.2.rel1-darwin-arm64-arm-none-eabi.tar.zst",
"archiveFileName": "arm-gnu-toolchain-12.2.rel1-darwin-arm64-arm-none-eabi.tar.zst",
"checksum": "SHA-256:9e9091454d81fc44ca090f4f5cbffeef8cb3d7541b83381198fc761c62029c41",
"size": "184007579"
},
{
"host": "i686-mingw32",
"url": "https://github.com/SiliconLabs/arduino/releases/download/2.0.0/arm-gnu-toolchain-12.2.rel1-mingw-w64-i686-arm-none-eabi.zst",
"archiveFileName": "arm-gnu-toolchain-12.2.rel1-mingw-w64-i686-arm-none-eabi.zst",
"checksum": "SHA-256:0a8788cc3cdfcf8a03189dafc27c2936834bbbab3efc021eaf41c739eef4c253",
"size": "279987372"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/SiliconLabs/arduino/releases/download/2.0.0/arm-gnu-toolchain-12.2.rel1-darwin-x86_64-arm-none-eabi.tar.zst",
"archiveFileName": "arm-gnu-toolchain-12.2.rel1-darwin-x86_64-arm-none-eabi.tar.zst",
"checksum": "SHA-256:8c9d786e48427229c01df060dbf5ffb926fee39360e4773d0811118baef44506",
"size": "191221203"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/SiliconLabs/arduino/releases/download/2.0.0/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.zst",
"archiveFileName": "arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.zst",
"checksum": "SHA-256:9eb46cf29edb5bcd8b27ae0208f5313c40fd0ff1b8cbbb59cd7aa0c7326d9e5d",
"size": "246980758"
}
]
},
Since the tools are executable binaries, it is necessary to distribute a separate build for each target host architecture. The build of the tool that is made for a macOS Apple Silicon machine will not run on a Windows machine.
The machine identifier for the Windows host machine is i686-mingw32
, so from this I know that you must download the file at this URL:
https://github.com/SiliconLabs/arduino/releases/download/2.0.0/arm-gnu-toolchain-12.2.rel1-mingw-w64-i686-arm-none-eabi.zst
Since it is a bit sketchy to download files from links provided by random strangers on the Internet, instead of giving you that link directly to the file, I instead pointed you to the release release page in Silicon Labs' official GitHub repository, where the link is also listed. That way there was context around the link that would allow you to better evaluate its trustworthiness. I was able to determine that the link would be present on that release page by evaluating the URL and recognizing that the github.com/SiliconLabs/arduino
part of the URL indicated a file in the SiliconLabs/arduino
GitHub repository, that the https://github.com/<owner>/<repository>/releases/download
URL format indicates a GitHub release asset, that the 2.0.0
part of the URL indicated that the asset is in the 2.0.0 release, and that the specific asset is named "arm-gnu-toolchain-12.2.rel1-mingw-w64-i686-arm-none-eabi.zst".
From the package index, we can also determine that:
- the "arm-gnu-toolchain-12.2.rel1-darwin-arm64-arm-none-eabi.tar.zst" release asset is the variant of the ARM GNU Toolchain built for use on macOS Apple Silicon (ARM) host machines.
- the "arm-gnu-toolchain-12.2.rel1-darwin-x86_64-arm-none-eabi.tar.zst" release asset is the variant of the ARM GNU Toolchain built for use on macOS x86 (AKA "Intel") host machines.
- The "arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.zst" release asset is the variant of the ARM GNU Toolchain built for use on Linux x86 host machines.
It probably does often end up that way just because Windows is Windows , but no that is definitely not correct.
Great news!