CODIUM NR+ — Guide de démarrage

Construit sur l'Opener Initiative
L'Opener Initiative développe une implémentation open source de la pile DECT NR+. Codium Electronique est membre de son Technical Steering Group (TSG) : les cartes NR+Gate et NR+Node font tourner la pile Opener dès la sortie de la boîte, et leur support matériel est maintenu avec les exemples Opener.
Les cartes


| NR+Gate — passerelle sink FT | NR+Node — nœud capteur sans fil | |
|---|---|---|
| Hôte | Rockchip RK3566 (4× Cortex-A55), 2 Go de RAM, Linux basé sur Ubuntu | nRF9151 Cortex-M33, Zephyr RTOS |
| Radio NR+ | Nordic nRF9151, connecteur antenne SMA | Nordic nRF9151, connecteur antenne U.FL / IPEX |
| Périphériques | LTE Fibocom MA510, GNSS u-blox MAX-M10S, Wi-Fi 5 + BT 5.0, Ethernet 10/100 | nRF54L15 (BLE 5.4 / NFC), SHT40, LSM6DSL, LIS2MDL, PMIC nPM1300, 2 Mo de flash |
| Alimentation | PoE IEEE 802.3at (injecteur fourni) | Charge USB-C, batterie Li-ion (JST PH) |
| Cibles Zephyr | cod_nrp_gw/nrf9151/ns | cod_nrp_node/nrf9151/nscod_nrp_node/nrf54l15/cpuapp |
| Programmation | J-Link sur le port Tag-Connect pour le premier flash, puis OpenOCD sur le RK3566 via GPIO-SWD — à distance, sans sonde | SEGGER J-Link sur le port SWD |
| Logs nRF9151 | RTT relayé sur le port 9090, UART sur /dev/ttyS7 | RTT via le J-Link |
Flasher l'exemple Opener
L'exemple dectnrp-driver du dépôt opener-samples pilote directement la couche physique DECT NR+ : deux cartes avec le même firmware se synchronisent et s'échangent un ping-pong toutes les 3 s. Les définitions de cartes proviennent du module Codium SDK (codz-sdk), récupéré par west.
Mettre en place l'environnement
Prérequis : les dépendances Zephyr et le SEGGER J-Link Software Pack. Le manifest fige nRF Connect SDK en version v3.4.0.
git clone https://github.com/Opener-Initiative/opener-samples && cd opener-samples
python3 -m venv .venv && source .venv/bin/activate && pip install west
west init -l samples && west update && west zephyr-export
west packages pip --install -- -c constraints.txt
west sdk install
west config build.dir-fmt "{source_dir}/../../build/{board}/{app}"
west config build.sysbuild trueCompiler
Les deux cartes compilent le même exemple ; seule la cible change.
APP=samples/dectnrp-driver
OPTS="-DEXTRA_DTC_OVERLAY_FILE=boards/nrf9151dk_nrf9151_ns.overlay \
-DEXTRA_CONF_FILE=boards/nrf9151dk_nrf9151_ns.conf"
west build -p -b cod_nrp_gw/nrf9151/ns $APP -- $OPTS # NR+Gate
west build -p -b cod_nrp_node/nrf9151/ns $APP -- $OPTS # NR+NodePremier flash (J-Link)
Chaque nRF9151 a d'abord besoin du firmware modem PHY DECT NR+ (mfw-nr+-phy_nrf91x1_2.0.0), puis de l'application. Connectez un J-Link au port SWD de la carte — sur la NR+Gate, son connecteur Tag-Connect.
nrfutil device recover
nrfutil device program --firmware mfw-nr+-phy_nrf91x1_2.0.0.zip
west flash -d build/cod_nrp_node/nrf9151/ns/dectnrp-driver # ou build/cod_nrp_gw/...Le firmware modem DECT NR+ est distribué par Nordic Semiconductor : demandez-le à votre contact commercial Nordic.
Reflasher la NR+Gate à distance
Une fois le firmware modem en place, le nRF9151 de la passerelle peut être reprogrammé via le serveur OpenOCD embarqué (voir Programmation et débogage distants du nRF9151), avec n'importe quel client GDB — sans sonde :
arm-zephyr-eabi-gdb build/cod_nrp_gw/nrf9151/ns/dectnrp-driver/zephyr/zephyr.elf \
-ex "target extended-remote <IP>:3333" -ex "monitor reset halt" \
-ex "load build/cod_nrp_gw/nrf9151/ns/dectnrp-driver/zephyr/tfm_merged.hex" \
-ex "monitor reset run" -ex "detach" -ex "quit"Chaque carte affiche SYNCHRONIZED dans son log RTT dès qu'elle entend l'autre, puis affiche le message Hello World! reçu.
Hôte Linux de la passerelle
Se connecter en SSH
La passerelle obtient son adresse en DHCP sur Ethernet, et fait tourner son propre point d'accès Wi-Fi. Son nom embarque le numéro de série imprimé sur le boîtier.
| Élément | Valeur |
|---|---|
| Nom d'hôte | nrp-gw-<SERIAL> |
| Point d'accès Wi-Fi | SSID nrp-gw-<SERIAL>, mot de passe NRP-GW-<SERIAL>, passerelle sur 192.168.22.1 |
| Connexion | utilisateur codium, mot de passe codium (également dans les groupes sudo et gpio) |
| SSH | ssh codium@192.168.22.1 via le point d'accès Wi-Fi, ou ssh codium@<IP> avec l'adresse DHCP Ethernet |
| Console série | ttyS2, 1 500 000 bauds |
Changez le mot de passe par défaut (passwd) avant de connecter la passerelle à un réseau partagé.
Lire les données GNSS
Le u-blox MAX-M10S diffuse des trames NMEA sur /dev/ttyS9 à 9600 bauds :
minicom -b 9600 -D /dev/ttyS9 # $GNRMC, $GNGGA, ... (sortie : Ctrl-A X)Démarrer le modem LTE
Le Fibocom MA510 n'est pas alimenté au démarrage : il faut pulser sa ligne de mise sous tension, puis laisser ModemManager établir le bearer (remplacez <operator_apn> par l'APN de votre opérateur).
sudo gpioset -c gpiochip3 -t 1s,0 29=1 # pulse de mise sous tension, ~15 s pour l'énumération
mmcli -L # le modem doit apparaître comme /Modem/0
sudo mmcli -m 0 --simple-connect="apn=<operator_apn>"
sudo mmcli -b 0 # statut du bearer, adresse IP
ping -c 3 codium.frLe port AT du modem est /dev/ttyUSB1 (115200 bauds). Pour une connexion persistante, créez plutôt un profil NetworkManager : sudo nmcli con add type gsm ifname ttyUSB1 con-name LTE gsm.apn <operator_apn>.
Programmation et débogage distants du nRF9151
La configuration OpenOCD cod-nrp-gw.cfg (dans /usr/share/openocd/site/) pilote les lignes SWD et reset du nRF9151 via linuxgpiod. Démarrez le serveur sur la passerelle, lié à son adresse réseau ; la configuration RTT optionnelle relaie les logs du nRF9151 :
openocd -f cod-nrp-gw.cfg -c "bindto <IP>" -f cod-nrp-gw-rtt.cfg| Port | Service | Utilisation depuis votre poste |
|---|---|---|
| 3333 | Serveur GDB | arm-zephyr-eabi-gdb zephyr.elf -ex "target extended-remote <IP>:3333" |
| 4444 | Telnet | telnet <IP> 4444, puis reset halt, program <file>.hex verify reset |
| 9090 | Relais RTT | nc <IP> 9090 — log Zephyr en direct |
| — | Log UART | sur la passerelle : minicom -b 115200 -D /dev/ttyS7 |
Dans VS Code, utilisez cortex-debug avec "servertype": "external", "gdbTarget": "<IP>:3333" (exemple dans le README du Codium SDK).