Se rendre au contenu
CAN XL · Linux

Le CAN XL arrive sous Linux : développement du pilote via SocketCAN

CAN XL sous Linux avec SocketCAN

L'introduction du CAN XL (CAN with eXtended frame Length) ne se limite pas à des défis de couche physique. Sous Linux, la communication CAN est façonnée depuis des années par SocketCAN, le framework réseau CAN unifié du noyau — qui évolue à nouveau pour accueillir les nouveaux formats de trame, paramètres de temps et fonctions de contrôleur.

Cet article adopte le point de vue du développement de pilote pour le CAN XL sous Linux : comment les concepts SocketCAN existants ont été étendus, quels défis surgissent au passage du prototype au matériel réel, et pourquoi la configuration du pilote devient centrale une fois que contrôleurs et transceivers CAN XL ne sont plus théoriques.

Étendre les API et pilotes CAN pour le CAN XL

Les contrôleurs et les transceivers étendus CAN XL apportent de nouvelles fonctions et de nouvelles restrictions à gérer par l'API. De nouveaux éléments — l'acceptance field (AF), le service data unit type (SDT) et les virtual CAN network identifiers (VCID) — doivent être renseignés et évalués par l'application. Côté pilote, il faut fournir les options de configuration du débit XL supplémentaire et du transceiver mode switch (TMS) pour des débits jusqu'à 20 Mbit/s. Ces extensions doivent être conçues pour que l'utilisateur réutilise son savoir-faire des configurations CAN et CAN FD.

Banc de développement CAN XL : interface PEAK, cartes et oscilloscope
Le banc de développement CAN XL : interface PEAK, cartes d'évaluation et oscilloscope.

Du prototype au matériel réel

Le support CAN XL de base a été introduit dans Linux 6.1 en décembre 2022, fournissant l'API utilisateur avec toutes les structures de données et des pilotes CAN virtuels. Cela a permis le développement d'outils pour lire, écrire, générer ou capturer du trafic CAN XL, ainsi que des implémentations de preuve de concept des protocoles CiA 611-1, 611-2 et 613-3.

Avec l'arrivée de « vrai » matériel CAN XL, la question de la configuration spécifique du pilote a gagné en importance. Côté Linux, un premier PoC de NXP a démarré dès 2022 sur une carte FPGA Terasic DE1-SOC, sous Ubuntu 16.04, avec trois cœurs IP BOSCH XCANB. Deux cartes ont ensuite été portées sous Ubuntu 22.04.4 LTS et le noyau Linux Mainline le plus récent. Bien que cet environnement Linux 6.9 ait réussi un test d'intégration CiA 613-3 lors d'un plug-fest en mai 2024, la configuration des contrôleurs CAN XL devait encore être fixée à la compilation.

Mesure à l'oscilloscope d'une trame CAN XL
Mesure à l'oscilloscope d'une trame CAN XL en mode commuté.

Le bundle PCAN-USB XL marque le début

Le travail d'intégration de la configuration du pilote a été dopé par la sortie, en avril 2025, du bundle tout-en-un pour débuter avec le CAN XL : une nouvelle interface PCAN-USB XL accompagnée de la version early access de PCAN-Explorer 7 pour Windows 11. Ce PCAN XL Starter Bundle a non seulement apporté un nouveau matériel CAN XL pour les tests d'interopérabilité, mais aussi un retour utilisateur sur l'ergonomie et la configuration du CAN XL sur un autre système d'exploitation.

Mode mixte CAN CC / CAN FD / CAN XL
Fonctionnement en mode mixte CAN CC / CAN FD / CAN XL sur un même bus.

Une prise en main facilitée par PCAN-Explorer 7

Les réglages de débit CAN CC/FD/XL — avec calculs de compensation du délai de l'émetteur, de la signalisation d'erreur et des calculs PWM en cas de commutation de mode du transceiver CAN XL — se sont révélés très utiles pour appréhender les effets réels de la norme ISO CAN publiée. Outre la visualisation des restrictions de configuration CAN XL par le Bitrate Manager, PCAN-Explorer 7 donne accès à tous les contenus de trame spécifiques au CAN XL, jusqu'aux bits SEC et RRS, que certains outils concurrents n'affichent pas par défaut.

Ces tests d'interopérabilité ont nourri un retour précoce aux développeurs du pilote Linux PEAK, impliqués dans les discussions sur l'API de configuration CAN XL de Linux. Cela a aidé à définir des options simples qui n'exposent que les réglages nécessaires et dérivent automatiquement certaines options du contrôleur (par ex. la signalisation d'erreur). La configuration du pilote CAN XL étant publiquement disponible depuis Linux 6.19, ce n'est qu'une question de temps avant que le PCAN-USB XL soit pris en charge dans le noyau Mainline — offrant une solution CAN XL plug-and-play complète avec tous les outils Linux compatibles, y compris Wireshark.

Configuration CAN XL dans PCAN-Explorer 7
Configuration et analyse du CAN XL dans PCAN-Explorer 7.
Bitrate Manager de PCAN-Explorer 7
Le Bitrate Manager visualise les restrictions de configuration des débits CAN XL.
Options de configuration CAN XL via SocketCAN
Options de configuration simplifiées du CAN XL côté pilote Linux / SocketCAN.

À propos de SocketCAN

SocketCAN est l'implémentation officielle du CAN dans le noyau Linux. Il fournit un ensemble de pilotes et un framework réseau permettant la communication CAN via l'API socket BSD standard : les bus CAN sont traités comme des interfaces réseau, avec des concepts familiers plutôt que des API propriétaires. Contribué au noyau en 2008, il est maintenu depuis par le Dr Oliver Hartkopp, en contact avec le CAN dès 1996 chez Bosch, puis pionnier du support CAN sous Linux chez Volkswagen (projet open source depuis 2006).

Neutralisé