Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Устранение неполадок

Проблемы с cargo-embed

Большинство проблем с cargo-embed связано с тем, что правила udev в Linux установлены неправильно, так что убедитесь, что вы сделали всё правильно.

Если застряли, можно открыть issue в трекере discovery или зайти в чат Rust Embedded в Matrix или чат probe-rs в Matrix и попросить помощи.

Проблемы с Cargo

“can’t find crate for core”

Симптомы:

   Compiling volatile-register v0.1.2
   Compiling rlibc v1.0.0
   Compiling r0 v0.1.0
error[E0463]: can't find crate for `core`

error: aborting due to previous error

error[E0463]: can't find crate for `core`

error: aborting due to previous error

error[E0463]: can't find crate for `core`

error: aborting due to previous error

Build failed, waiting for other jobs to finish...
Build failed, waiting for other jobs to finish...
error: Could not compile `r0`.

To learn more, run the command again with --verbose.

Причина:

Вы забыли установить нужную цель (target) для вашего микроконтроллера thumbv7em-none-eabihf.

Решение:

Установите нужную цель.

$ rustup target add thumbv7em-none-eabihf

Не удаётся прошить устройство: No loadable segments were found in the ELF file

Симптомы:

> cargo embed
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.04s
      Config default
      Target /home/user/embedded/target/thumbv7em-none-eabihf/debug/examples/init
 WARN probe_rs::flashing::loader: No loadable segments were found in the ELF file.
       Error No loadable segments were found in the ELF file.

Причина:

Cargo должен знать, как собрать программу и как её скомпоновать под требования целевого устройства. Поэтому нужно задать правильные параметры в файле .cargo/config.toml.

Решение:

Добавьте файл .cargo/config.toml с правильными параметрами:

[build]
target = "thumbv7em-none-eabihf"

[target.thumbv7em-none-eabihf]
runner = "probe-rs run --chip nRF52833_xxAA"
rustflags = [
  "-C", "linker=rust-lld",
]

Подробности см. в разделе Настройка для встраиваемой разработки.