Dans la préparation d’un drone, j’ai monté les moteurs brushless (sans balais) et les ESC (Electronic Speed Controller ) mais encore faut-il les tester et vérifier que tout fonctionne. C’est possible de le faire en connectant tout le bazar, carte de pilotage et récepteur. Après si ça ne fonctionne pas on est dans la m… parce qu’on ne sait pas d’où ça vient.
J’aime bien monter les éléments d’un ensemble et tester pas à pas le fonctionnement. En général ça permet de détecter plus rapidement les pannes et d’y remédier.
Au sommaire :
Commande d’un moteur Brushless avec ESC par un Raspberry Pi
Moteur Brushless
Les moteurs brushless (sans balais) ont peu a peu envahi de nombreux domaines. On les trouve dans les ventilateurs, les lecteurs de disquette, disque dur, lecteurs de CD/DVD… mais aussi pour des modèles plus puissants sur des machines à laver pour entraîner le tambour, sur des robots…
Par rapport aux moteurs à balai qui possèdent un collecteur sur lequel le courant arrive par deux balais en carbone (ou en cuivre pour les petits modèles) le moteur brushless élimine les problèmes d’usure, d’étincelles, d’oxydation etc. Par contre il nécessite une électronique de commande plus sophistiquée.
Principe
Le moteur brushless utilisé sur les drones est un outrunner, c’est à dire que les bobines sont fixes et que c’est la cage extérieure qui tourne ! Attention à vos doigts 😉 Du point de vue technique ça simplifie énormément le montage puisque la partie alimentée est fixe et que ce sont les aimants qui tournent.
Sur ce schéma de principe (faux et juste fait pour expliquer ce qui se passe, je précise) sur la partie gauche la bobine A reçoit une tension positive qui crée un pôle Nord (bleu) et la bobine B reçoit une tension négative qui crée un pôle Sud (rouge). La bobine A attire l’aimant 1 et repousse l’aimant 2, ce qui fait tourner la cage dans le sens horaire. La bobine B attire l’aimant 3 et repousse l’aimant 4 ajoutant cette force à celle de la bobine A.
Sur l’image de droite, l’ESC a changé les tensions appliquées : la bobine A reçoit maintenant une tension négative qui crée un pôle Sud et va repousser l’aimant 1. La bobine B reçoit une tension positive, elle va repousser l’aimant 3. la cage du moteur continue de tourner. Au cycle d’après l’ESC va alimenter la bobine B et la C, puis la bobine C et la A etc. pour maintenir le moteur en rotation. C’est la vitesse à laquelle l’ESC va modifier les tensions qui va faire tourner le moteur plus ou moins vite.
Il y a bien sur plus de bobines qui sont reliées entre elles en trois groupes, mais le principe est le même.
Et en vrai ?
Vue de dessus d’un moteur brushless de drone. Ici c’est la cage du moteur qui tourne (flèches jaunes). Comme signalé plus haut, il faudra faire attention à vos doigts ! Mais c’est bien de le répéter plusieurs fois ! De même le couple de démarrage fait que le moteur va se déplacer, vous avez tout intérêt à le fixer pour les essais, soit sur le bras du drone, soit comme je l’ai fait, sur un support imprimé en 3D et bien bloqué.
Les bobines sont plus nombreuses que sur le schéma de principe. Plus il y a de bobines, plus la force appliquée à la cage en rotation est grande. On voit en bas à gauche les trois fils qui sortent et comme vous le voyez sur le schéma ça n’a rien à voir avec un servomoteur, les trois fils sont équivalents. Ici le cône de blocage de l’hélice a une couleur noire, il y a aussi des moteurs avec un cône blanc (alu). la vis de serrage a un pas inversé sur un des modèles car sur un drone certains moteurs tournent CW = Clockwise = dans le sens des aiguilles d’une montre et les autres tournent CCW = Counter Clockwise = dans le sens inverse des aiguille d’un montre. Du fait de l’inversion de pas de la vis, le co^ne est toujours en serrage sur l’hélice. Il faudra donc veiller à respecter le sens de rotation prévu par le fabricant.
Sur la vue de dessous on retrouve les 3 fils d’alimentation des bobines et on peut voir les aimants collés sur la cage du rotor. Ce sont ces aimants attirés et repoussés par le champ des bobines qui vont faire tourner le moteur. La mécanique est très réduite puisque la partie électrique est fixe. L’axe de la cage est bloqué par un circlip.
Retour d’information
Le microcontrôleur a besoin de connaître la position du moteur pour le piloter efficacement. Sur certains appareils on trouve un capteur à effet Hall qui déclenche une impulsion à chaque passage d’un aimant (existait sur les lecteurs de disquette). Pour ne pas compliquer le câblage et garder un coût faible, ce n’est pas la solution retenue ici.
En cours de rotation (voir le schéma de principe) une des bobines (à tour de rôle) n’est pas alimentée. Or un aimant qui se déplace crée une tension dans la bobine à proximité (force contre électromotrice). Le microcontrôleur mesure cette tension et peut en déduire la position de la cage du moteur à tout instant.
Commande
La commande des groupes de bobines est réalisée par un pont qui peut être ouvert comme pour la bobine C. dans ce cas aucun courant n’est envoyé à la bobine, par contre le microcontrôleur vient lire la tension sur le fil correspondant. Les aimants induisent une tension qui le renseignement sur la position exacte du rotor.
Les interrupteurs représentés ci-dessus sont dans la réalité des transistors à effet de champ (MOSFET) qui commutent rapidement et supportent le courant demandé par le moteur. Il faudra adapter l’ESC à la consommation du moteur. Ici un modèle 20A devrait suffire pour alimenter ces petits moteurs. Ici le + est envoyé sur la bobine B et le courant revient par la bobine A. Dans la pratique, les MOSFET commutent sans arrêt pour fournir une sorte de courant triphasé sur le 3 fils du moteur.
Chaque ESC comporte un microcontrôleur qui va créer le signal nécessaire pour ouvrir/fermer les MOSFET et alimenter (ou pas) les bobines, contrôler la vitesse de rotation, gérer la surchauffe des MOSFET en diminuant la puissance temporairement…
Il reçoit en entrée un signal PWM qui lui donne la consigne pour la vitesse à donner au moteur. Ce signal provient de la carte pilote (CC3D), il est fonction des ordres de la personne qui pilote le drone, mais aussi des décisions prises par la carte concernant la stabilisation ou autre.
Identification du moteur
Il existe de nombreux modèles de moteurs brushless. Les tailles sont différentes et les vitesses sont adaptées aux utilisations. Ici pour un drone de 250mm j’ai opté pour un 1806–2280KV. Traduction ?
18 c’est le diamètre du moteur en mm (le stator avec les bobines)
06 c’est la taille des aimants en mm
2280KV c’est le nombre de tours par minute et par volt à vide. Donc avec la batterie 3S (11,1 v) que j’ai choisie : 2280 x 11,1 = 25300 tr/min. Plus le KV est élevé, plus la vitesse de rotation est élevée mais plus le couple est faible (petite hélice). Plus le KV est faible plus la vitesse de rotation est faible mais plus le couple est important (grande hélice).
D’autres paramètres interviennent comme le nombre de tours de chaque bobine, le diamètre du fil utilisé, le nombre de pôles etc. mais c’est une autre histoire et si ça vous intéresse vous trouverez plein de sites intéressants et documentés qui en parlent !
ESC (Electronic Speed Controller)
[stextbox id=’warning’ caption=’Pas d’hélice’]TOUS LES TESTS SE FONT SANS HÉLICE ! DANGER !![/stextbox]
Présentation
Sur cette image provenant de Wikipedia, on a la tension de batterie (3S = 11.1v) qui arrive de la droite.
La prise BEC sort du 5volts à destination du récepteur ou autre, le signal PWM est envoyé à l’ESC sur le fil jaune.
A gauche les 3 fils qui vont vers le moteur brushless. A ce sujet j’ai vu des « mecs qui sachent » sur des forums indiquer que ces fils de sortie rouge, jaune et noir vers le moteur brushless transportent l’alim sur le + et le – (rouge et noir) et le signal de commande du moteur brushless sur le fil jaune. Désolé, c’est une grosse connerie (désolé je n’ai pas trouvé d’autre terme, celui-ci s’applique bien dans ce cas). Un moteur brushless n’est pas un servomoteur et ce n’est pas parce que (sur certains ESC) les fils ont la même couleur que ceux des servos qu’ils transportent les mêmes signaux 😉
Un ESC est un contrôleur électronique de vitesse. Il reçoit une information de type PWM (Pulse Width Modulation), la même qu’on envoie aux servos pour les positionner. Sauf qu’ici on ne pilote pas une position, mais la vitesse du moteur.
Les signaux PWM (Pulse Width Modulation)
Sur le Raspberry Pi il y a une seule sortie PWM matérielle (derrière il y a un circuit spécialisé pour générer ces signaux). Par contre toute sortie GPIO peut sortir un signal PWM si elle est commandée par un programme (une bibliothèque) suffisamment rapide. Il faut parfois accepter de légères variations dans le timing car le système peut parfois avoir besoin du processeur. Dans ce cas la gestion du PWM n’est pas prioritaire et peut entraîner un léger « Jitter » qui va se traduire par un léger grognement du servo et éventuellement un tremblement léger de l’axe de sortie. Ce problème n’existe pas si on privilégie le PWM hardware.
Le signal PWM (Modulation de largeur d’impulsion) est un signal à 50Hz (période de 20ms voir ci-dessus). Toutes les 20ms, une impulsion est envoyée. Sa largeur dépend (en radiocommande) de la position du manche (ou du volant pour une voiture). Il faut noter que l’intervalle entre les impulsions n’a pas d’importance ici. C’est bien le temps de la partie haute qui détermine la valeur transmise.
- Si le manche est en bas, une impulsion de 1ms est envoyée. Pour un servo cela lui donne l’ordre de se positionner à gauche. Pour un drone le moteur est à l’arrêt et pour une voiture il est en marche arrière.
- Si le manche est au neutre (au milieu), une impulsion de 1,5ms est envoyée. Pour un servo cela lui donne l’ordre de se positionner au centre. Pour un drone le moteur est à mi vitesse et pour une voiture il est à l’arrêt.
- Si le manche est en haut, une impulsion de 2ms est envoyée. Pour un servo cela lui donne l’ordre de se positionner à droite. Pour un drone le moteur est à fond et pour une voiture il est en marche avant.
En commande proportionnelle, la largeur d’impulsion est proportionnelle à la position du manche ou du volant, ce qui permet de faire varier de façon continue la position du servomoteur de direction ou la vitesse du moteur.
En plus l’ESC vous parle
Lorsque vous le mettez sous tension il fait entendre une mélodie (cliquez pour écouter)
Vous pouvez écouter cette série de bips en cliquant sur ce lien.
Un ESC vous « parle » en émettant des bips, qui sont en fait des bruits émis par le moteur qu’il fait vibrer pour vous informer. Les bips peuvent différer selon la marque et le modèle. Vous pouvez télécharger la doc de l’ESC EMAX que j’utilise en cliquant sur ce lien EMAX BLHeli ESC.
Piloter un ESC
Le pilotage d’un ESC destiné à commander un des moteurs de drone (je fais les tests avec un quadri rotors) est normalement confié à une carte de pilotage. J’ai une CC3D (Copter Control 3D) qui embarque un microcontrôleur STM32 et un capteur MPU-6000. c’est une carte open source, les schémas, liste de pièces etc. sont disponibles en ligne. Le capteur MPU-6000 est un capteur qui combine un gyroscope 3 axes et un accéléromètre 3 axes.
Le récepteur de télécommande (RX à gauche de l’image) reçoit les ordres de la télécommande manipulée par le pilote du drone. Il sort des signaux PWM (un par canal) qui sont envoyés à la carte CC3D (au centre). c’est la carte qui après traitement va commander les ESC et servos (s’il y a des servos). Le pilote donne par exemple l’ordre de tourner vers la droite, c’est la CC3D qui va envoyer les ordres sous forme de PWM aux 4 ESC pour que le drone tourne à droite etc.
On voit la complexité du montage à réaliser, auquel on ajoute encore la télécommande. Les plus téméraires vont brancher tout le bazar et tester. des fois ça arrive à tomber en marche… et des fois, non ! Pour ma part je suis très méfiant et je préfère tester les différentes parties les unes après les autres. Ça permet d’une part de mieux comprendre comment ça fonctionne, et d’autre part de détecter plus rapidement un élément défectueux.
Pour tester chacun des 4 ensembles moteur + ESC, je vais donc envoyer le signal PWM de commande avec un Raspberry Pi. Il y en a toujours (au moins) un sur le bureau, mais j’aurais eu un Arduino ça marchait aussi…
La prise BEC (Battery Eliminator Circuit)
La prise BEC est souvent rencontrée en modélisme. Elle utilise souvent une prise JST à 2 pôles. Ici du fait de la présence d’un fil d’entrée PWM, elle comporte 3 fils. Son nom vient du fait que l’alimentation 5v fournie par cette prise permet d’éliminer une batterie. Par exemple sur un drone, le récepteur devrait être alimenté par une batterie séparée. Ici c’est l’ESP alimenté en 3S (3,7 x 3 = 11,1 volts) qui va fournir ce 5v, éliminant la nécessité d’une batterie supplémentaire.
Sur l’image ci-dessus vous voyez la prise BEC de l’ESC utilisé. Elle est adaptée à la connectique d’un récepteur classique en radio commande. Sur l’ESC on lit qu’il est prévu pour des batteries 2S à 4S. Ce sont des LiPo qui sortent 3,7 volts. L’ESC accepte en entrée de 2×3,7v à 4×3,7volts soit de 7,4 à 14,8volts. Pour ma part j’ai opté pour une batterie 3S de 11,1 volts.
La prise BEC est prévue pour fournir 2 ampères sous 5 volts, largement de quoi alimenter un récepteur de radiocommande sur 2,4GHz et quelques LED de position sur le drone.
[stextbox id=’warning’ caption=’Une seule alim’]Pour éviter des soucis d’alimentation qui pourraient se produire sur un quadri copter, le fil rouge (+5v) de 3 des 4 prises BEC est soigneusement débranché et scotché. En effet les 4 BEC des 4 ESC peuvent fournir des tensions légèrement différents aux alentours de 5v et si on branche les 4 BEC sur le récepteur il peut se passer des trucs bizarres…[/stextbox]
Installer les outils
Pour le pilotage des ESC à partir des GPIO du Raspberry Pi, je suis parti de l’article de Stéphane auquel vous pouvez vous reporter pour avoir plus de détails.
Le pilotage se fait comme vu ci-dessus en envoyant des signaux PWM à l’ESC. Celui-ci les traduit en commandes pour le moteur brushless.
Quel programme installer sur le Raspberry Pi ?
Allez après toutes ces considérations on arrive à la vraie question : « Et comment je fais avec mon Raspberry Pi ? ». Plusieurs solutions existent mais celle qui semble le mieux adaptée pour les tests ESC + Brushless est la bibliothèque servoblaster. Servoblaster est un pilote noyau qui vous permet de contrôler 8 (ou plus) servos avec votre Raspberry Pi. Le servo 0 est relié au GPIO 4, pin 7, c’est celui que je vais utiliser pour la suite de l’article.
Récupérez les programmes sur le github de Richard Ghirst
1 |
git clone git://github.com/richardghirst/PiBits.git |
Rendez vous dans le dossier des programmes
1 |
cd PiBits/ServoBlaster/user |
Modifiez le fichier init-script en supprimant la valeur –idle-timeout=2000 des options par défaut
1 |
nano init-script |
# OPTS= »–idle-timeout=2000″
Mettez un # au début de la ligne
Il faut ensuite modifier servod.c
1 |
nano servod.c |
Rendez vous à la ligne 973 (la commande CTRL C vous indique le numéro de la ligne) et vérifier que vous avez :
1 2 3 4 5 |
if (strstr(modelstr, "BCM2708")) board_model = 1; else if (strstr(modelstr, "BCM2709") || strstr(modelstr, "BCM2835")) board_model = 2; else |
Si le code est différent, modifiez le pour qu’il soit comme ci-dessus.
Il reste à créer le driver et à démarrer le service servoblaster :
1 2 |
make sudo make install |
Vous venez d’installer et de démarrer le service ServoBlaster qui a créé une entrée /dev/servoblaster vous donnant accès au contrôle PWM du GPIO.
pi@raspberrypi:/dev $ ls servo* -al
prw-rw-rw- 1 root root 0 août 22 18:26 servoblaster
-rw-r–r– 1 root root 317 août 22 18:26 servoblaster-cfg
pi@raspberrypi:/dev $ cat servoblaster-cfg
p1pins=7,11,12,13,15,16,18,22
p5pins=
Servo mapping:
0 on P1-7 GPIO-4
1 on P1-11 GPIO-17
2 on P1-12 GPIO-18
3 on P1-13 GPIO-27
4 on P1-15 GPIO-22
5 on P1-16 GPIO-23
6 on P1-18 GPIO-24
7 on P1-22 GPIO-25
Pour vérifier que les commandes sont acceptées tapez en ligne de commande :
pi@raspberrypi:/dev $ echo 0=250 > /dev/servoblaster
pi@raspberrypi:/dev $
Si tout se passe bien, votre servoblaster est fonctionnel et vous pouvez passer à la suite. Arrêtez la sortie PWM 🙂
1 |
echo 0=0 > /dev/servoblaster |
Connecter le moteur et l’ESC
[stextbox id=’warning’ caption=’Fils du moteur’]Ne raccourcissez pas les fils sinon attendez vous à des soucis pour souder les fils ! Le constructeur du moteur a dénudé et étamé son fil émaillé pour faciliter votre travail. Si vous choisissez de raccourcir les fils, il faudra enlever le vernis, étamer le fil convenablement et… ce n’est pas si simple.[/stextbox]
Le Raspberry Pi éteint. Connectez l’ESC au moteur. L’ordre des fils n’a pas d’importance côté moteur… Si le moteur tourne dans le mauvais sens ça se modifie facilement en inversant 2 des 3 fils ou alors via le firmware de la carte de commande CC3D (un peu plus tard).
Reliez le fil noir de la prise BEC à la masse pin 6 du GPIO et le fil jaune au GPIO 4 pin 7. NE RELIEZ PAS LE FIL ROUGE DE LA PRISE BEC.
Pour passer en mode programmation, démarrez le Raspberry Pi et mettez les gaz à fond (j’envoie la valeur 200) pendant le démarrage de l’ESC et la séquence de programmation démarre (voir la notice si vous voulez utiliser cette possibilité). Vérifiez que vous avez un extincteur à proximité (nan, je rigole). Connectez l’ESC à la batterie (attention les courant peuvent être importants). vérifiez tout encore une fois avant de mettre sous tension. Vous êtes responsable de vos manips. L’auteur de l’article ou le blog ne peuvent être tenus pour responsables de vos erreurs.
Test des ESC et des moteurs
Il reste à faire la même manipulation avec les 4 ESC et les 4 moteurs. vous pouvez associer un ESC à un moteur en les numérotant, ce qui peut faciliter le dépannage si un des moteurs ne tourne pas, en croisant les ESC et les moteurs (une seule manip à la fois) et en notant soigneusement les différents tests pour pouvoir faire une déduction…
Vidéo
Conclusion
En chemin pour monter un drone « maison » à partir d’un châssis carbone de 250mm, des ESC et des moteurs de diverses provenances, ce test fait partie de la chaîne de tests permettant d’acquérir des connaissances sur le matériel utilisé.
Sources
- http://stephane.lavirotte.com/perso/rov/esc_brushless_raspberry.html
- https://github.com/richardghirst/PiBits
- https://www.firediy.fr/article/calibrer-ses-esc-avec-un-arduino-drone-ch-3
- https://www.instructables.com/id/Driving-an-ESCBrushless-Motor-Using-Raspberry-Pi/
- https://opwiki.readthedocs.io/en/latest/user_manual/cc3d/cc3d.html
- https://amcp.blog4ever.com/forum/drone-fpv-racing/explication-des-chiffres-pour-les-moteurs-brushless
- https://www.rcteam.fr/fr/blog/comment-choisir-son-moteur-brushless–n14
Bonjour les framboisiers,
Tout d’abord, je trouve cette article formidable et très intéressant.
Je n’ai pas de connaissance très poussée dans le domaine de l’électronique. Mais j’ai toujours eu l’idée de relier une carte électronique avec un moteur était super dangereux sans séparation du courant (via pont de diodes, par exemple).
Je me trompe ?
@+
Bonjour Benoit
j’utilise des RasPi et des moteurs depuis des années sans souci avec des circuits bien conçus
le pont de diodes est plutot destiné au redressement de l’alternatif (vous dites « via pont de diode »)
Avec des moteurs on utilise des ponts en H genre L293D ou L298 effectivement on peut voir un pont de diodes sur les schémas mais elles sont utilisées en protection dans ce cas on ne passe pas par les diodes, elles bloquent les tensions inverses induites lors de la commutation.
on utilise des diodes anti retour avec les moteurs et les relais quand il y a de la commutation pour éviter le retour de tensions dangereuses sur les GPIO
A la coupure d’une tension, une bobine génère un tension inverse qui peut détruire le GPIO (commut de relais, moteur à courant continu avec collecteur rotatif…)
LA solution (en majuscules) c’est l’optocoupleur https://fr.wikipedia.org/wiki/Photocoupleur
comme nos GPIO sortent du numérique en passant par un optocoupleur c’est la lumière qui transmet l’info et on isole galvaniquement le GPIO du moteur ou du relais
on trouve des cartes relais optocouplées sur tous les sites en ligne https://www.amazon.fr/Elegoo-Optocoupleur-%EF%BC%94-Channel-Arduino-Raspberry/dp/B06XKST8XC/
Pour les moteurs c’est plus rare, sauf dans le monde industriel
cdt
françois
Merci François pour ces précisions,
Je me coucherai moins bête qu’hier.
L’optocoupleur n’est pas forcément une bonne solution en sortie de gpio. Sa conso sur le signal numérique est très élevée (en général entre 5 et 15 mA) en comparaison d’un driver (simple npn ou mosfet n, circuit spécialisé …) qui peut se contenter de seulement quelques µA (et qui si besoin peut driver une iso galvanique). De plus, l’opto ne se soustrait pas à la diode de flywheel car si elle est absente entre l’opto et un circuit inductif, c’est l’opto qui dégage tout comme un driver. Il faut savoir que les chances d’avoir un retour de la tension présente sur collecteur ou le drain d’un switch n sur sa base ou sa porte sont quasi nulle même en cas de fusion du bidule. C’est pour ça que dans la vraie vie, on ne trouve quasiment jamais d’optocoupleur directement en sortie de circuit logique. Hormis ça, très bon article (comme d’habitude) qui lève un peu le voile sur le fonctionnement bien particulier de ces brushless
merci « Bud »
oui on peut passer par un transi pour attaquer l’opto. On trouve des opto qui déclenchent à 1 ou 2 mA…
cdt
françois
Bonjour,
Désolé de faire un hors sujet Je suis à la recherche d’un ancien article qui traitait de la commande du type de moteur en jaune (moteur cc) sur la photo ci-dessous. L’article montrait des photos de ce moteur démonté et faisait un lien vers un autre site qui analysait précisément ce moteur en détail. Il me semble que c’était effectivement sur ce site mais je n’arrive pas à la retrouver. Si quelqu’un a le lien et pourrai le partager ce serait sympa!
https://ae01.alicdn.com/kf/HTB1IAEZRpXXXXcIXVXXq6xXFXXXV/Livraison-gratuite-4-lot-paquet-d-c-l-ration-moteur-courant-continu-roues-de-soutien-ch.jpg
Bonjour Michel
pas de souci pour le hors sujet le webmaster est toujours magnanime 🙂
regardez par ici https://www.framboise314.fr/gopigo3-un-rover-avec-un-raspberry-pi/#Euh8230_C8217est_quoi_ces_moteurs_en_fait
et dites moi si vous avez trouvé vos infos
bonne soirée
cdt
françois
Oui merci c’est cet article que je cherchais. J’avais pourtant mis la main dessus mais je n’étais pas descendu assez bas dans l’article, encore désolé.
bonsoir
sil vous plais mr. tu peux me donner le code Commande d’un moteur Brushless avec ESC par un Raspberry Pi.
bonjour
j utilise le pwm, les commandes sont dans l’article…
cdt
francois
Bonjour
Quand je change le code dans servod.c
Ensuite je fais make et une erreur se produit, il m’annonce que strstr n’est pas définie
Avez vous une idée ?
Quand je change le code dans servod.c
Ensuite je fais make et une erreur se produit, il m’annonce que strstr n’est pas définie
Avez vous une idée ?
Je voulais dire modelstr
bonjour
je regarde servod.c
https://github.com/richardghirst/PiBits/blob/master/ServoBlaster/user/servod.c
a priori la ligne 973 a changé, et on n’a plus le texte d’origine
l’article date de 2020 et le fichier a été modifié en 2021…
Donc si vous avez modifié ces lignes
* 1: MEM_FLAG_DISCARDABLE = 1 << 0 // can be resized to 0 at any time. Use for cached data * MEM_FLAG_NORMAL = 0 << 2 // normal allocating alias. Don't use from ARM * 4: MEM_FLAG_DIRECT = 1 << 2 // 0xC alias uncached * 8: MEM_FLAG_COHERENT = 2 << 2 // 0x8 alias. Non-allocating in L2 but coherent * MEM_FLAG_L1_NONALLOCATING = // Allocating in L2 * (MEM_FLAG_DIRECT | MEM_FLAG_COHERENT) c est normal que vous ayez une erreur je ne pourrai pas vous aider plus, modelstr a disparu du programme il faudrait tout reprendre... cdt francois