Le matériel
Nous utilisons deux kits de développement fournis par Nordic :
Le nRF52840 (référence) est construit à partir d’un Cortex-M4, et implémente plusieurs protocoles de communication, notamment ZigBee qui nous intéresse dans notre projet.
Les outils de programmation
Les workshop de Ferrous Systems fournissent des outils de développement en Rust pour compiler les programmes, programmer la carte, recevoir du logging, etc.
L’essentiel
probe-run
C’est l’utilitaire qu’on utilisera le plus : construit l’exécutable (cargo-run
), programme la carte en utilisant la sonde JTAG (probe-rs
), et récupère les log et les traces de la pile d’exécution via le protocole RTT.
nrfutil
Utilitaire fourni par Nordic, il permet notamment de programmer le dongle (qui ne possède pas de sonde intégrée).
Autres utilitaires
cargo-flash
Permet de programmer la carte en utilisant la sonde JTAG de la carte de développement (utilise probe-rs
).
cargo-embed
Pour visualiser les log via le protocole RTT. (peut servir aussi à programmer la carte grâce à probe-rs
)
cargo-binutils
Fournit nm
, objdump
, objcopy
, etc.
cargo-bloat
Analyse l’espace utilisé dans un fichier ELF (ou équivalent).
nrf-recover
Pour déverrouiller la flash si nécessaire.
Projet de référence
(voir https://embedded-trainings.ferrous-systems.com/from-scratch.html)
Pour commencer un nouveau projet en Rust sur la cible nRF52840, on utilise le projet de référence fourni ici : https://github.com/rust-embedded/cortex-m-quickstart en paramétrant pour un Cortex-M4.
Pour obtenir un HAL pour la carte, on utilise nrf52840-hal.
Si l’on veut allouer des structures de données sur la pile, on utilise heapless.
On peut ensuite utiliser rtt-target dans le projet pour générer des log qui transitent par la sonde.
Si nécessaire, on utilisera aussi le système d’exploitation RTIC.
Notre projet de référence se trouve sur notre dépôt ici : quickstart_project