- прошиваю через USB, запоминаю название этого COM-порта
- для прошивки использую этот пакет
- PROFIT!
Программирование Arduino с помощью Rust
Привет!
Дошли руки и появилось настроение написать статью как я стал прошивать Arduino Nano через Rust.
Как всё это выглядит
А теперь по порядку
Подключаю плату к компьютеру, затем надо установить все необходимые зависимости для avr-hal, ну и сам Rust, разумеется. Следуя инструкции к пакету выполняю все шаги и делаю:
cargo build
Если не установлена нужная настройка фичи (в виде вашей платы), то пакет это сообщит и спросит наш выбор. У меня настройка выглядит так:
features = ["arduino-nano"]
После написания программы необходимо ее залить с помощью команды:
cargo run
Настройки прошивалки можно посмотреть в файле .cargo/config.toml У меня он выглядит так:
[build]
target = "avr-specs/avr-atmega328p.json"
[target.'cfg(target_arch = "avr")']
runner = "ravedude nano -cb 57600 -P COM5"
[unstable]
build-std = ["core"]
Дополнительные настройки платы формируются пакетом автоматически. Посмотреть можно по этому пути avr-specs/avr-atmega328p.json
{
"arch": "avr",
"atomic-cas": false,
"cpu": "atmega328p",
"data-layout": "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8",
"eh-frame-header": false,
"exe-suffix": ".elf",
"executables": true,
"late-link-args": {
"gcc": [
"-lgcc"
]
},
"linker": "avr-gcc",
"llvm-target": "avr-unknown-unknown",
"max-atomic-width": 8,
"no-default-libraries": false,
"pre-link-args": {
"gcc": [
"-mmcu=atmega328p"
]
},
"target-c-int-width": "16",
"target-pointer-width": "16"
}