Catégories
Non classé

Découverte du matériel et des outils

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *