PEmicro-erlebniswelt

Programmation de gang avec les programmateurs Cyclone

Une solution de production en volume est souvent basée sur la programmation de groupe simultanée de différentes cartes cibles afin de répondre aux exigences de vitesse et de débit. Ce scénario de programmation peut intégrer des programmateurs Cyclone dans un appareil connecté à un panel de cartes à programmer. La programmation est généralement contrôlée et surveillée depuis un ordinateur local, en particulier lorsque des données dynamiques personnalisées sont ajoutées à l'image binaire principale programmée dans chaque cible.

La solution de programmation de gang de PEmicro consiste à contrôler simultanément de nombreux programmeurs Cyclone via la Cyclone Control Suite. Un mélange d'images de programmation, d'objectifs et de données peut être programmé simultanément dans de nombreux appareils, tout en maintenant un haut niveau de performance, car chaque Cyclone est lui-même un programmeur indépendant.

La Cyclone Control Suite offre plusieurs possibilités pour contrôler les programmations de groupe. La console de contrôle Cyclone est un programme de ligne de commande scriptable avec lequel la programmation de groupe est extrêmement facile à mettre en place et à exécuter. Le Cyclone Control SDK est basé sur une bibliothèque dynamiquement liée (DLL ou SO) et permet un contrôle détaillé de la programmation de groupe à travers de nombreux outils, langues et environnements sur le PC hôte.

Gang_Programming_Cyclone

Les Cyclones peuvent être connectés directement à l'ordinateur hôte via USB ou à distance via Ethernet.

1. Programmation de groupe (Gang Programming) avec la Cyclone Control Console


La manière la plus rapide d'effectuer une programmation de gang est d'utiliser la Cyclone Control Console. La console de contrôle Cyclone est une puissante application de ligne de commande qui permet de contrôler un ou plusieurs cyclones en même temps. Les images de programmation peuvent être ajoutées / supprimées, les paramètres lus / réglés, les processus de programmation lancés et les données dynamiques programmées. L'application de ligne de commande affiche des messages d'état complets et renvoie également un code de résultat qui indique le succès ou l'échec. L'application peut être lancée via un script, une console ou une autre application

Se connecter à plusieurs cyclones

Ouvrir plusieurs cyclones avec la console est facile. transmets soit une liste de noms de cyclones séparés par des virgules au paramètre -cyclone=(par exemple -cyclone=agnes, colossus, hal9000) ou utilise plusieurs paramètres -cyclone (par exemple -cyclone=agnes -cyclone=colossus -cyclone=hal9000). . Les autres opérations de la ligne de commande sont exécutées sur tous les cyclones ouverts, y compris le lancement de la programmation, à l'exception de la programmation de données dynamiques (où le cyclone auquel les données dynamiques doivent être appliquées est indiqué comme partie du paramètre). Voici un exemple d'énumération d'images sur deux cyclones :

2_(1)

Démarrer la programmation de l'image principale sur plusieurs cyclones

La même image peut être lancée sur plusieurs cyclones en même temps, en spécifiant simplement plusieurs cyclones dans la ligne de commande. S'il y a différents jeux d'images sur chaque cyclone, l'utilisation de descriptions d'images compressées est une bonne façon de s'assurer que l'image de programmation correspondante est lancée. Si l'image définie sur chaque cyclone   est identique, le numéro d'image correspond. Par conséquent, le numéro d'image est une autre façon de lancer la même image sur plusieurs Cyclones . Dans l'exemple suivant, l'image de programmation "Green Image v1.0" est lancée simultanément sur trois cyclones différents   . Les cyclones   sont référencés par leur nom (Agnes, Colossus, HAL9000) et l'image est référencée par la description d'image compressée "GreenImagev1.0".

3_(1)

Fournir des données dynamiques supplémentaires pour chaque cible programmée

En plus de la programmation des données qui font partie d'une image de programmation, des données supplémentaires peuvent être programmées dans chaque appareil cible. Ces données "dynamiques" peuvent être spécifiées à chaque démarrage d'une image de programmation, de sorte qu'elles peuvent être adaptées cible par cible. Les données dynamiques ont de nombreuses applications : sérialisation par le client, configuration, suivi, codage de la date, etc. Plusieurs ensembles de données dynamiques peuvent être indiqués dans la ligne de commande. Les données peuvent être fournies sous forme de tableau d'octets ou de chaîne de caractères à date zéro.

Dans le cadre du paramètre de programmation de données dynamiques, il faut indiquer le numéro de handle du cyclone. Cela permet de programmer différentes données dynamiques dans des cibles associées à chaque Cyclone ouvert . Si un seul cyclone   est lancé, la valeur 1 est utilisée. Si trois Cyclones étaient spécifiés dans la ligne de commande, ils seraient numérotés 1, 2 et 3 dans la ligne de commande, dans l'ordre de gauche à droite.

La syntaxe pour programmer des données dynamiques sous forme de tableau d'octets est la suivante :

   -putdynamicdata=[numéro de cyclone], [adresse], [données]

La syntaxe pour programmer des données dynamiques sous forme de chaîne de caractères à terminaison zéro est la suivante :

   -putdynamicstring=[numéro de cyclone], [adresse], [chaîne de caractères]

Dans l'exemple suivant, nous programmons à la fois un numéro de série unique généré par l'utilisateur et une chaîne d'adresse IP unique générée par l'utilisateur dans deux destinations différentes, connectées à deux Cyclone différents :

4_(1)

La récupération du succès / de l'erreur résulte de Python / Bash / Batch / etc.

La console de contrôle Cyclone n'affiche pas seulement les informations de réussite et d'erreur sous forme de chaînes de caractères écrites dans la console, mais renvoie également un code d'erreur correspondant au système d'exploitation sur le PC. Une application ou différents langages de script peuvent être utilisés pour tester ce code d'erreur. Un code d'erreur nul indique un fonctionnement réussi, et un code d'erreur non nul indique une erreur.

Voici un exemple de script Python qui permet de récupérer avec succès les informations de réussite / d'erreur à partir de la console de contrôle Cyclone :

Import subprocess
import sys
P=subprocess.run ("cyclonecontrolconsole -cyclone=Agnès -launchimage=green_serial", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print ("STDOUT print :")
print (P.stdout.decode ())
if P.returncode== 0 :
print ("programmed successfully !")
otherwise :
print ("Programmation échouée !! avec code d'erreur" + str (P.returncode))
sys.exit (1)
Voici un exemple de fichier batch Windows qui peut être utilisé pour restaurer avec succès les informations de réussite / d'échec de la console de contrôle Cyclone :

cyclonecontrolconsole -cyclone=Agnès -launchimage=green_serial
When ERRORLEVEL 1 no longer occurs
echo programmed successfully !
finished
:An error has occurred
Echo programming failed ! !!!!
: done
Here is an example of a bash shell script that can successfully restore success / failure information from the Cyclone Control Console :

# ! / bin / bash
cyclonecontrolconsole -cyclone=Agnès -launchimage=green_serial
errorReturn=$ ?
if [$ errorReturn== 0] ; then
  Echo 'Successfully programmed!'
otherwise
  echo 'programming failed ! !!!! with the error code '$ errorReturn
  Exit 1
fi

2. Programmation de groupe avec le Cyclone Control SDK

Le Cyclone Control SDK de PEmicro offre aux développeurs une bibliothèque partagée (DLL ou SO) pouvant être chargée dynamiquement, des exemples de code d'application et une documentation de soutien pour que les applications logicielles personnalisées puissent contrôler directement le Cyclone. Les langues et les environnements tels que C, C ++, Delphi, C #, Java, Python et Labview sont pris en charge.

Les informations sur les données binaires, les informations sur les algorithmes, les processus de programmation et autres paramètres sont stockés ensemble dans une image SAP qui est directement stockée dans la mémoire FLASH du Cyclone. Les processus de programmation peuvent être lancés sur le Cyclone en appuyant sur un bouton. Cependant, le SDK permet à un PC de donner un ordre au Cyclone pour démarrer la même séquence de programmation et de fournir également d'autres fonctions, comme la possibilité d'ajouter des données dynamiques à chaque carte à programmer et la possibilité de récupérer des informations d'erreur.

 
Se connecter à plusieurs cyclones et lancer une image de programmation

Se connecter à plusieurs cyclones via le SDK est très simple. Ci-dessous, tu trouveras un exemple de ce à quoi le code ressemblerait en C :

5

Ici, les processus de programmation sont lancés sur 3 unités de cyclones séparées, connectées au PC hôte. Cela fonctionne même si tous les cyclones sont connectés à un mélange de différents ports ou à distance du PC. Le programme attend alors la fin avant de continuer. En gros, 3 appareils séparés sont programmés en parallèle. De nombreuses unités de cyclones peuvent être contrôlées en parallèle à partir d'un seul PC hôte, car les travaux de programmation sont effectués sur les cyclones eux-mêmes.

 

Fournir des données dynamiques supplémentaires pour chaque cible programmée

Dans l'exemple suivant, un numéro de série est programmé dans chacune des cibles associées aux trois cyclones.

 

6

Pour ce faire, le code appelle la routine "startDynamicDataProgram". Les arguments sont le handle du cyclone renvoyé par "connectToCyclone", l'adresse à programmer (dans ce cas l'adresse 0), la longueur des données à programmer et un tampon de caractères.

 

Vérifier les erreurs

Le SDK Cyclone Control offre à l'utilisateur la possibilité de rechercher des erreurs après avoir terminé une commande de programmation (affiché si checkCycloneExecutionStatus renvoie 0).

7

Pour rechercher les erreurs, appelle la routine "getNumberOfErrors" avec le handle du cyclone comme seul argument. La valeur de retour de cette routine est le nombre d'erreurs dans le cyclone indiqué. Si cette valeur est de 0, il n'y a pas eu d'erreurs. En utilisant la fonction "getErrorCode" avec le handle du cyclone et le numéro d'erreur (1. le nombre d'erreurs), l'utilisateur peut obtenir le numéro de code d'erreur de l'erreur qui s'est produite. Pour plus d'informations, saisis le code d'erreur et transmets-le à la routine "getDescriptionOfErrorCode" dans le Cyclone Control SDK, qui renvoie une description textuelle détaillée de l'erreur.

 

Conclusion

Avec la Cyclone Control Suite de PEmicro en combinaison avec plusieurs Cyclones, il est très facile de créer une configuration de programmation de gang. Comme chaque cyclone est lui-même un programmateur indépendant, un mélange d'images de programmation, d'objectifs et de données peut être programmé simultanément dans de nombreux appareils tout en maintenant un niveau de performance élevé. La console de contrôle Cyclone facilite considérablement la mise en place de la programmation de groupe, tandis que le Cyclone Control SDK permet une adaptation détaillée de la commande de programmation de groupe à partir de nombreux outils, langues et environnements.

Programmeur de cyclones

pemicro cyclone fx universalCyclone FX Universal Header Layout
Cyclone Universal FX
CYCLONE-FX-UNIV
Le PEmicro Cyclone FX Universal est un programmeur autonome pour les processeurs ARM et 8/16/32 bits.

1 369,00 €*
PEmicro cyclone lc universalpemicro cyclone lc universal header layout
Cyclone LC Universel
CYCLONE-LC-UNIV
Le PEmicro Cyclone LC Universal est un programmeur autonome pour les processeurs ARM et 8/16/32 bits.

979,00 €*
pemicro cyclone fx armCyclone FX ARM Header Layout
Cyclone FX ARM
CYCLONE-FX-ARM
Le PEmicro Cyclone FX ARM est un programmeur autonome pour les processeurs ARM.

1 199,00 €*