Device Firmware Updates (DFU) sur le Nordic nRF52
Nous sommes tous un peu optimistes lorsque nous écrivons du firmware.
En réalité, nous nous attendons généralement à ce que tout se passe bien. Pourtant, même les optimistes savent que tout le monde fait des erreurs et que, même avec un code impeccable, les exigences ou l’environnement peuvent changer — ce qui nécessitera des mises à jour du produit. Certains clients nous ont déjà dit qu’ils ne souhaitaient pas consacrer de temps à intégrer une fonctionnalité DFU à leur produit, estimant que le firmware devait être parfait dès la première version (et livré en un temps record!).
Voici la vérité : à moins d’avoir des ressources illimitées, une application triviale, énormément de temps de tests et une équipe QA de la taille de la NASA, votre firmware ne sera pas parfait du premier coup.
Vous devrez absolument intégrer un mécanisme de mise à jour du micrologiciel dans votre application.
Bonne nouvelle : c’est tout à fait possible sur la plateforme Nordic nRF52.
Dans cet article, vous verrez comment utiliser l’un des exemples Nordic pour mettre à jour un nRF52-DK :
Prérequis :
- Nordic nRF52-DK hardware
- Un téléphone intelligent avec nRF Toolbox app
- Nordic nRF52 command line tools
- Nordic nRFx SDK
- Keil uVision avec le nRF5x MD5 pack ou GNU Maketools
- nRFGo Studio
Étape 1 : Flasher le SoftDevice sur le circuit intégré
Ouvrez nRFGo Studio et connectez votre kit de développement via USB. Activez l’alimentation. Vous devriez voir le kit nRF52 reconnu comme un programmateur Segger. Cliquez dessus, puis ouvrez l’onglet Program SoftDevice.
Programmez ensuite le fichier SoftDevice fourni dans le SDK. Pour le nRF52-DK, le fichier à utiliser est :
/components/softdevice/s132/hex/s132_nrf52_2.0.0_softdevice.hex
Une fois sélectionné, cliquez sur Program.
Dans le journal de sortie, vous devriez voir que le SoftDevice a été programmé avec succès.
Étape 2 : Compiler et flasher l’exemple de Bootloader BLE (Keil)
Dans le SDK Nordic, vous trouverez un projet d’exemple prêt à l’emploi montrant comment effectuer une DFU via BLE. Il se trouve à :
/examples/dfu/bootloader/pca10040/dual_bank_ble_s132/arm5_no_packs/dfu_dual_bank_ble_s132_pca10040.uvprojx
Cet exemple contient le bootloader et le code de DFU.
Double-cliquez sur le projet pour l’ouvrir. Compilez-le (bouton Build ou touche F7).
Note : Vous devrez peut-être installer les packs Keil MDK associés aux dispositifs Nordic Semiconductor.
Assurez-vous que la carte de développement est connectée et sous tension, puis cliquez sur LOAD pour flasher le firmware. Si vous rencontrez des problèmes, vérifiez que vous avez bien la dernière version de nrfjprog.exe installée et que votre variable d’environnement PATH pointe vers le bon exécutable.
Étape 3 : Compiler le projet Heart Rate Sensor et le préparer pour DFU
La prochaine étape consiste à compiler l’application cible et à la préparer pour une mise à jour via BLE.
Compilez le projet, mais ne le flashez pas sur la carte. L’idée est de le transférer via BLE depuis votre téléphone intelligent.
La compilation génère un fichier .hex.
Vous devez ensuite utiliser les utilitaires Nordic pour empaqueter ce fichier dans un format contenant les métadonnées nécessaires (version, CRC, etc.). Cela se fait avec le programme nrfutil.exe.
Dans une fenêtre de commande, placez-vous dans le dossier contenant votre fichier hex compilé et exécutez :
“C:\Program Files (x86)\Nordic Semiconductor\Master Control Panel\3.10.0.14\nrf\nrfutil.exe” dfu genpkg –application-version 1 –application nrf52832_xxaa_s132.hex hrs.zip
Un fichier hrs.zip devrait apparaître dans votre dossier.
Il contient :
- manifest.json
- nrf52832_xxaa_s132.bin
- nrf52832_xxaa_s132.dat
Le fichier manifest.json contient les métadonnées de l’application (version, CRC, SoftDevice requis, etc.).
Le .bin contient l’application elle-même, et le .dat en contient la version binaire des informations de validation nécessaires au bootloader.
Étape 4 : Flasher le nouveau firmware via le bootloader BLE
Il existe plusieurs façons de transférer un firmware sur votre téléphone.
Sur Android, c’est très simple (glisser-déposer).
Sur iOS, c’est un peu plus complexe. La méthode la plus simple consiste à se l’envoyer par courriel, puis à ouvrir la pièce jointe dans l’application nRF Toolbox.
Ouvrez la pièce jointe avec nRF Toolbox : cela la copie dans l’application.
- Ouvrez nRF Toolbox
- Sélectionnez DFU
- Appuyez sur Select Device
- Choisissez la carte détectée comme DfuTarg
- Appuyez sur Select File
- Choisissez le fichier hrs.zip
- Appuyez sur Upload File
Une fenêtre de dialogue confirmera la réussite de la mise à jour DFU.
Références
Nordic SDK Documentation