There is a strange error Error: "Unrecognized ABI" when downloading UF2 to the pico board. So a total re-installation after removing both .cargo and .rustup directories.

  • install rust
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ rustup target add thumbv6m-none-eabi 
$ rustup target add thumbv7m-none-eabi
$ rustup target add thumbv8m.main-none-eabi
$ rustup target add thumbv8m.main-none-eabihf
  • then install cargo-binutils
$ cargo install cargo-binutils
Installed package `cargo-binutils v0.4.0` (executables `cargo-cov`, `cargo-nm`, `cargo-objcopy`, `cargo-objdump`, `cargo-profdata`, `cargo-readobj`, `cargo-size`, `cargo-strip`, `rust-ar`, `rust-as`, `rust-cov`, `rust-ld`, `rust-lld`, `rust-nm`, `rust-objcopy`, `rust-objdump`, `rust-profdata`, `rust-readobj`, `rust-size`, `rust-strip`)

In the end, it seems that the latest rust is in use somehow.

$rustc --version
rustc 1.90.0 (1159e78c4 2025-09-14)

If the toolchain for pico is specified in rust-toolchain.toml as follows:

[toolchain]
channel = "1.81"
targets = [ "thumbv7em-none-eabihf", "thumbv7m-none-eabi", "thumbv6m-none-eabi" ]
profile = "minimal"
components = [ "rustfmt", "rust-analyzer", "clippy" ]

then everything is OK.

Run $ rustup show, we could find the following:

name: 1.81-aarch64-apple-darwin
active because: overridden by '/Users/wb/proj/rust/rust-study/rust-toolchain.toml'