0% ont trouvé ce document utile (0 vote)
2 vues13 pages

Cours Lora

Le document présente un cours sur l'installation et l'utilisation de RIOT OS avec la carte Wyres Base, incluant des détails sur le matériel, les branchements, et les outils nécessaires. Il couvre également des aspects pratiques comme le câblage, l'utilisation du ST-LINK, et la réalisation d'un projet hello-world. Les objectifs pédagogiques incluent la maîtrise de la chaîne logicielle et la compréhension des composants matériels associés.

Transféré par

patrick.negoue
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues13 pages

Cours Lora

Le document présente un cours sur l'installation et l'utilisation de RIOT OS avec la carte Wyres Base, incluant des détails sur le matériel, les branchements, et les outils nécessaires. Il couvre également des aspects pratiques comme le câblage, l'utilisation du ST-LINK, et la réalisation d'un projet hello-world. Les objectifs pédagogiques incluent la maîtrise de la chaîne logicielle et la compréhension des composants matériels associés.

Transféré par

patrick.negoue
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

GSI 633  Systèmes d'exploitation et systèmes embarqués

Chaîne RIOT OS, CampusIoT (Wyres), ST-LINK, UART et TP hello-world


Doc (dépôt RIOT-wyres)

Cours niveau 3

15 mai 2026

Table des matières


1 Rappel détaillé : installation RIOT et dépôt CampusIoT 3
1.1 RIOT OS et chaîne de compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Pilote ST-LINK et OpenOCD récent . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Compilation dans Docker (option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Cloner RIOT et RIOT-wyres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Console série : droits Linux et tio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Panorama matériel et photographies du tutoriel 4


2.1 Plusieurs cartes Wyres / environnement de labo . . . . . . . . . . . . . . . . . . . . . 4
2.2 Banc typique de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Conguration recommandée (Grove UART, I2C, debug) . . . . . . . . . . . . . . . . 5

3 La carte Wyres Base et le STM32L151 5


3.1 Composants principaux (d'après tutoriel/[Link]) . . . . . . . . . . . . . . . . . . . 5
3.2 STM32L151 : famille, suxes, mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Schématique et lecture de carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Connecteur SWD sur la carte (photos du dépôt) . . . . . . . . . . . . . . . . . . . . 7

4 Rôle du ST-LINK et branchements 7


4.1 Fonctions du programmateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 ST-LINK dongle : en-tête ARM JTAG / SWD . . . . . . . . . . . . . . . . . . . . 7
4.3 Réutiliser le ST-LINK d'une carte Nucleo . . . . . . . . . . . . . . . . . . . . . . . . 9
4.4 Console UART depuis une Nucleo (Grove) . . . . . . . . . . . . . . . . . . . . . . . . 9
4.5 Clone chinois du ST-LINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.6 Vérication USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.7 Sonde 2,54 mm et matériel minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 UART, adaptateur USBsérie et VirtualBox 10


5.1 Rôle de l'UART sur la Wyres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2 Câblage et niveaux logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.3 Lecture sur le PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.4 VirtualBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

6 Connecteur Grove I2C (perspectives) 11


7 Fichiers d'un projet RIOT et sorties de compilation 11
7.1 Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2 main.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.3 Dossier boards/wyres-base/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.4 text, data, bss et chiers binaires (d'après [Link]) . . . . . . . . . . . . . . . . . . . 12

1
8 Synthèse du processus complet 12
9 Travaux pratiques : hello-world 12
9.1 Énoncé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
9.2 Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
9.3 Dépannage fréquent (extrait tutoriel/[Link]) . . . . . . . . . . . . . . . . . . . . . . 12
9.4 Prolongements possibles (autres chapitres du tutoriel) . . . . . . . . . . . . . . . . . 13

10 Références et crédits 13

2
Prérequis et objectifs de la séance
Vous avez déjà suivi un cours sur l'installation de RIOT OS (toolchain ARM, clonage du
CampusIoT/RIOT-wyres :
dépôt RIOT). Ce document prolonge ce travail dans le cadre du dépôt
carte Wyres Base, branchements SWD et UART, outils (openocd, tio), structure d'un projet,
puis un TP hello-world.

Objectifs pédagogiques.
 maîtriser la chaîne logicielle (RIOT + cartes externes wyres-base) ;
 comprendre le STM32L151CC et le rôle du ST-LINK ;
 câbler correctement le programmateur (ociel, Nucleo, ou clone chinois) et la console série ;
 lire les sorties UART et distinguer erreurs OpenOCD / messages applicatifs ;
 interpréter les chiers produits par la compilation (.elf, .bin) ;
 réaliser le TP hello-world et dépanner les erreurs courantes.

Ressource principale. Le tutoriel tutoriel/ du dépôt RIOT-wyres (objectifs LoRa/LoRaWAN,


capteurs, collecte de données, etc.) ; auteur indiqué : Didier Donsez. Les gures de ce PDF pro-
viennent de ce dépôt (voir section 10).

1 Rappel détaillé : installation RIOT et dépôt CampusIoT


1.1 RIOT OS et chaîne de compilation

RIOT est un OS temps réel pour microcontrôleurs. Pour cibler le Cortex-M3 de la Wyres, on
utilise gcc-arm-none-eabi, make, openocd, et souvent gdb-multiarch.
Sous Linux (extraits dututoriel/[Link]) :
sudo apt install git gcc-arm-none-eabi make gcc-multilib \
libstdc++-arm-none-eabi-newlib openocd gdb-multiarch \
doxygen wget unzip python3-serial
make --version
arm-none-eabi-gcc --version
openocd --version

Des versions trop anciennes posent problème (indications types dans le tutoriel : make ≥ 4.0,
arm-none-eabi-gcc ≥ 2021, openocd ≥ 0.11).

1.2 Pilote ST-LINK et OpenOCD récent

 Pilote ST-LINK : STSW-LINK009 ; souvent installé avec STM32CubeProgrammer.


 Le tutoriel décrit aussi la compilation d' OpenOCD depuis les sources pour obtenir une version
récente si le paquet système est vieux.

1.3 Compilation dans Docker (option)

Si la toolchain locale pose problème, RIOT permet de compiler dans un conteneur :

export BUILD_IN_DOCKER=1
cd ~/github/RIOT-OS/RIOT/examples/hello-world/
export BOARD=wyres-base
export EXTERNAL_BOARD_DIRS=~/github/campusiot/RIOT-wyres/boards
make -j4

Voir la documentation RIOT build-in-docker .

3
1.4 Cloner RIOT et RIOT-wyres

mkdir -p ~/github/RIOT-OS && cd ~/github/RIOT-OS


git clone [Link]
mkdir -p ~/github/campusiot && cd ~/github/campusiot
git clone [Link]

La variable suivante indique à RIOT où se trouve la dénition de carte wyres-base :

export EXTERNAL_BOARD_DIRS=~/github/campusiot/RIOT-wyres/boards

Vérier les programmateurs reconnus pour cette carte :

cd ~/github/RIOT-OS/RIOT/examples/hello-world/
export BOARD=wyres-base
export EXTERNAL_BOARD_DIRS=~/github/campusiot/RIOT-wyres/boards
make info-programmers-supported

1.5 Console série : droits Linux et tio


Les adaptateurs USBsérie créent souvent /dev/ttyUSB0. Il faut que l'utilisateur soit dans le
groupe dialout (ou plugdev) et que les droits permettent la lecture/écriture. Le tutoriel recom-
mande tio comme alternative pratique à make term.

2 Panorama matériel et photographies du tutoriel


2.1 Plusieurs cartes Wyres / environnement de labo

La gure 1 (chier [Link] du tutoriel) illustre des congurations de cartes utilisées dans
le parcours CampusIoT.

Figure 1  Exemples de cartes et montages (dépôt RIOT-wyres,


tutoriel/images/[Link]).

4
2.2 Banc typique de développement

La gure 2 montre un poste complet (alimentation, câbles, cartes).

Figure 2  Exemple de banc de développement ([Link]).

2.3 Conguration recommandée (Grove UART, I2C, debug)

La gure 3 est celle que vous avez demandée à mettre en avant : elle synthétise le branchement
Grove UART (console), Grove I2C (extensions capteurs) et le câblage vers le programmateur.

3 La carte Wyres Base et le STM32L151


3.1 Composants principaux (d'après tutoriel/[Link])
La Wyres Base intègre notamment :
 MCU STM32L151CC (STMicroelectronics) ;
 radio LoRa Semtech SX1272 ou SX1272/SX1261 selon révision de carte (voir boards/wyres-base/doc.t
dans le dépôt) ;
 bus UART (connecteur Grove externe), SPI (dont une ligne dédiée à la radio), I2C (Grove) ;
 capteurs : accéléromètre ST LIS2DE12, baromètre/température LPS22HB, phototransistor, mi-
crophone MEMS sur bus I2S ;
 LEDs, bouton, GPIO / PWM sur connecteurs.

3.2 STM32L151 : famille, suxes, mémoire

La série STM32L1 est ultra basse consommation, c÷ur ARM Cortex-M3. Le modèle
STM32L151CC sur la Wyres correspond, selon le tutoriel, à environ 256 ko de ash, 32 ko de
RAM, 8 ko d'EEPROM. Les autres références (L151RB, RC, etc.) partagent l'architecture mais

5
Figure 3  Conguration de développement type ([Link])  lien GitHub.

6
dièrent par tailles mémoire, boîtier ou périphériques : le chier de carte RIOT doit correspondre
au MCU réellement soudé.

3.3 Schématique et lecture de carte

La schématique Wyres Rev B est fournie en PDF dans le dépôt (boards/wyres-base/W_BASE_V2.0_REVB_Sch


Le tutoriel rappelle une astuce : sur beaucoup de cartes, la broche 1 d'un connecteur a une pas-
tille carrée plutôt que ronde. Un guide général pour lire un schéma : DigiKey  How to read a
schematic.

3.4 Connecteur SWD sur la carte (photos du dépôt)

Les gures 4 et 5 proviennent du dossier boards/wyres-base/ : elles aident à identier physi-


quement les broches NRST, GND, VDD, CLK, DIO.

Figure 4  Détail connecteur / repères ([Link]).

4 Rôle du ST-LINK et branchements


4.1 Fonctions du programmateur

Le ST-LINK permet :
1. d' écrire le rmware en ash via le bus SWD ;
2. de déboguer (halt, pas à pas, points d'arrêt) via GDB et OpenOCD ;
3. de réinitialiser la cible (NRST) ;
4. parfois de alimenter la cible en 3,3 V (ne jamais appliquer 5 V sur une entrée 3,3 V-only).

4.2 ST-LINK dongle : en-tête ARM JTAG / SWD

Le tutoriel fournit le schéma de l'en-tête côté programmateur (gure 6).

7
Figure 5  Câblage SWD sur la Wyres ([Link]).

Figure 6  Broches ARM JTAG / SWD du ST-LINK (ARM_JTAG_SWD_Header.png).

8
Broche ST-LINK Signal Wyres Base (connecteur SWD)
15 NRST (reset) Pin 1 : NRST
4 GND Pin 2 : GND
2 VDD_TARGET Pin 3 : VDD
9 SWCLK Pin 4 : CLK
7 SWDIO Pin 5 : DIO

Le tutoriel propose des couleurs de ls (vert, noir, rouge, jaune, bleu) comme repères visuels en
TP.

4.3 Réutiliser le ST-LINK d'une carte Nucleo

Le ST-LINK intégré à une Nucleo peut programmer une Wyres externe. La gure 7 donne le
brochage du connecteur SWD de la Nucleo.

Figure 7  Brochage SWD sur carte Nucleo ([Link]).

Nucleo SWD Signal Wyres Base


1 VDD_TARGET Pin 3 : VDD
2 SWCLK Pin 4 : CLK
3 GND Pin 2 : GND
4 SWDIO Pin 5 : DIO
5 NRST Pin 1 : NRST

4.4 Console UART depuis une Nucleo (Grove)

Grove UART de la
Pour la console sans adaptateur FTDI dédié, le tutoriel indique de relier le
Wyres aux broches TX/RX de la Nucleo (en croisant TX et RX), plus 3,3 V et GND (voir table
dans [Link]).

4.5 Clone chinois du ST-LINK

Les clones bon marché peuvent fonctionner mais sans garantie. Consulter impérativement la
section Branchement du clone chinois. . . et la gure 8.

9
Figure 8  Brochage type d'un clone chinois ([Link]). Ne pas utiliser les
broches 5 V.

4.6 Vérication USB

lsusb
# Exemples de lignes attendues (VID:PID STMicro) :
# 0483:3748 STM32 STLink
# 0483:374b STM32 STLink

Exercice suggéré dans le tutoriel : rechercher sur le Web la signication de USB 0483:3748.

4.7 Sonde 2,54 mm et matériel minimal

Le README du dépôt rappelle le besoin d'une sonde 2,54 mm (rangée simple 5 broches) pour
se brancher sur le connecteur SWD de la Wyres, en plus du ST-LINK et d'un adaptateur USBsérie.

5 UART, adaptateur USBsérie et VirtualBox


5.1 Rôle de l'UART sur la Wyres

L'UART envoie vers le PC les messages du rmware (printf), le shell RIOT, ou les traces de
tests. Le connecteur Grove UART est prévu pour un adaptateur FTDI ou équivalent (CH340,
CP210x, . . .).

5.2 Câblage et niveaux logiques

 TX de la Wyres → RX de l'adaptateur ; RX de la Wyres → TX de l'adaptateur ;


 GND commun obligatoire ;
 respecter le 3,3 V si le bus de la carte est en 3,3 V (ne pas mélanger avec du 5 V TTL).

5.3 Lecture sur le PC

Sous Linux (extrait [Link]) :

10
lsusb
ls /dev/ttyUSB*
tio -L
tio -b 115200 -m INLCRNL /dev/ttyUSB0

Le débit usuel est 115200 bauds, 8N1. L'option -m INLCRNL aide à l'achage des retours ligne selon
terminaux.

5.4 VirtualBox

Si Linux tourne dans une VM, il faut passer explicitement les périphériques USB (ST-LINK
et adaptateur série) au menu Périphériques de VirtualBox, puis vérier avec lsusb dans l'invité.

6 Connecteur Grove I2C (perspectives)


Le connecteur Grove I2C sert à brancher des capteurs ou actionneurs I2C additionnels (voir
chapitre [Link] du tutoriel). La gure 9 illustre le branchement.

Figure 9  Exemple de branchement sur Grove I2C (grove_i2c.jpg).

7 Fichiers d'un projet RIOT et sorties de compilation


7.1 Makefile
Nom de l'application, BOARD, modules (USEMODULE), ags (CFLAGS), et inclusion de [Link]
de RIOT.

11
7.2 main.c
Point d'entrée main(void) : initialisation, boucle, appels aux API RIOT (printf, threads, dri-
vers, etc.).

7.3 Dossier boards/wyres-base/


Dénition des broches, horloges, features pour la cible ; chargé grâce à EXTERNAL_BOARD_DIRS.

7.4 text, data, bss et chiers binaires (d'après [Link])


Après make, la taille achée comporte typiquement :
 text : code exécutable et constantes (y compris table des vecteurs) ;
 data : variables initialisées (occupent la ash et la RAM au démarrage) ;
 bss : variables non initialisées, mises à zéro au démarrage dans la RAM.
Le chier .elf contient le rmware et les symboles de debug. Le chier .bin est l'image écrite en
ash (souvent à l'adresse 0x08000000 sur STM32). Le tutoriel distingue :

make -j4 # compilation


make flash-only # ecriture flash sans recompiler
make flash # compile (si besoin) puis flash

8 Synthèse du processus complet


1. Installer toolchain, OpenOCD, pilotes ST-LINK, droits USB série, tio.
2. Cloner RIOT et RIOT-wyres ; exporter EXTERNAL_BOARD_DIRS.
3. Brancher SWD (5 ls : NRST, GND, VDD si utilisé, SWCLK, SWDIO) selon gures 65.

4. Brancher UART (TX/RX croisés, GND, 3,3 V si nécessaire).

5. Compiler ; asher ; ouvrir tio ou make term.

9 Travaux pratiques : hello-world


9.1 Énoncé

Compiler l'exemple examples/hello-world pour BOARD=wyres-base, asher, et observer les mes-


sages sur l'UART.

9.2 Commandes

cd ~/github/RIOT-OS/RIOT/examples/hello-world
export BOARD=wyres-base
export EXTERNAL_BOARD_DIRS=~/github/campusiot/RIOT-wyres/boards
make -j4
make flash
# Terminal serie (adapter le port) :
tio -b 115200 -m INLCRNL /dev/ttyUSB0

9.3 Dépannage fréquent (extrait tutoriel/[Link])


Si OpenOCD ache par exemple :

Error: init mode failed (unable to connect to the target)

vérier : câblage SWD et masse, alimentation de la Wyres, bonne orientation du connecteur, clone
ST-LINK défectueux, câbles trop longs, ou conit si une autre session occupe le ST-LINK.

12
9.4 Prolongements possibles (autres chapitres du tutoriel)

Pour aller au-delà du hello-world, le même dépôt propose entre autres :


 04  Entrées/sorties ;
 05  Capteurs MEMS ;
 06  LoRa ;
 07  LoRaWAN ;
 08  Collecte et achage des mesures ;
 tests shell, timers, threads, RTC, watchdog, EEPROM, etc. ([Link]).

10 Références et crédits
 Dépôt principal : [Link]
 Tutoriels : [Link]  chiers [Link]
à [Link], [Link] (sommaire et objectifs pédagogiques).
Cours_lora_img/) : [Link], wyres-setup-dev.j
 Images locales utilisées dans ce PDF (dossier
[Link], ARM_JTAG_SWD_Header.png, [Link], [Link],
[Link], [Link], grove_i2c.jpg  toutes sous licence du dépôt
RIOT-wyres.
 Cours RIOT (anglais) : [Link]
 Documentation RIOT : [Link]
 STM32L151CC : [Link]
html
 ST-LINK / debug : [Link]
 Soutiens mentionnés dans le tutoriel : MIAI, Persyval-Lab, Terra Forma, LIG, FabMASTIC
(voir tutoriel/[Link]).

13

Vous aimerez peut-être aussi