PEmicro-erlebniswelt

Gang Programming mit Cyclone Programmern

Eine Volumenproduktionslösung basiert häufig auf der gleichzeitigen Gruppenprogrammierung verschiedener Zielplatinen, um die Geschwindigkeits- und Durchsatzanforderungen zu erfüllen. Dieses Programmierszenario kann Cyclone-Programmierer in ein Gerät integrieren, das mit einem Panel von zu programmierenden Karten verbunden ist. Die Programmierung wird üblicherweise von einem lokalen Computer aus gesteuert und überwacht, insbesondere wenn dem Hauptbinärimage, das in jedes Ziel programmiert wird, angepasste dynamische Daten hinzugefügt werden.

Die Gang-Programmierlösung von PEmicro besteht darin, viele Cyclone-Programmierer gleichzeitig über die Cyclone Control Suite zu steuern. Eine Mischung aus Programmierimages, Zielen und Daten kann gleichzeitig in viele Geräte programmiert werden, während ein hohes Leistungsniveau beibehalten wird, da jeder Cyclone selbst ein unabhängig arbeitender Programmierer ist.

Die Cyclone Control Suite bietet mehrere Möglichkeiten zur Steuerung von Gruppenprogrammierungsvorgängen. Die Cyclone Control Console ist ein skriptfähiges Befehlszeilenprogramm, mit dem die Gruppenprogrammierung extrem einfach einzurichten und auszuführen ist. Das Cyclone Control SDK basiert auf einer dynamisch verknüpften Bibliothek (DLL oder SO) und ermöglicht eine detaillierte Steuerung der Gruppenprogrammierung über viele Tools, Sprachen und Umgebungen auf dem Host-PC.

Gang_Programming_Cyclone

Cyclone können direkt über USB oder remote über Ethernet mit dem Host-Computer verbunden werden.

1. Gruppenprogrammierung (Gang Programming) mit der Cyclone Control Console


Der schnellste Weg, um eine Gang-Programmierung durchzuführen, ist die Verwendung der Cyclone Control Console. Die Cyclone Control Console ist eine leistungsstarke Befehlszeilenanwendung, mit der ein oder mehrere Cyclones gleichzeitig gesteuert werden können. Programmierimages können hinzugefügt / entfernt, Einstellungen gelesen / eingestellt, Programmiervorgänge gestartet und dynamische Daten programmiert werden. Die Befehlszeilenanwendung zeigt umfassende Statusmeldungen an und gibt auch einen Ergebniscode zurück, der Erfolg oder Misserfolg anzeigt. Die Anwendung kann über ein Skript, eine Konsole oder eine andere Anwendung gestartet werden

Verbindung zu mehreren Cyclones herstellen

Das Öffnen mehrerer Cyclones mit der Konsole ist einfach. Übergeben Sie entweder eine durch Kommas getrennte Liste von Cyclonenamen an den Parameter -cyclone = (z. B. -cyclone = agnes, colossus, hal9000) oder verwenden Sie mehrere -cyclone-Parameter (z. B. -cyclone = agnes -cyclone = colossus -cyclone = hal9000). . Die anderen Operationen in der Befehlszeile werden auf allen geöffneten Cyclones ausgeführt, einschließlich des Programmierstarts, mit Ausnahme der dynamischen Datenprogrammierung (wobei der Cyclone, auf den die dynamischen Daten angewendet werden sollen, als Teil des Parameters angegeben wird). Hier ist ein Beispiel für die Auflistung von Images auf zwei Cyclones:

2_(1)

Starten der Hauptimagesprogrammierung auf mehreren Cyclones

Das gleiche Images kann auf mehreren Cyclones gleichzeitig gestartet werden, indem einfach mehrere Cyclones in der Befehlszeile angegeben werden. Wenn auf jedem Cyclone unterschiedliche Imagesätze vorhanden sind, ist die Verwendung komprimierter Imagebeschreibungen eine gute Möglichkeit, um sicherzustellen, dass das entsprechende Programmierimage gestartet wird. Wenn das auf jedem Cyclone festgelegte Images identisch ist, stimmt die Imagesnummer überein. Daher ist die Imagenummer eine weitere Möglichkeit, dasselbe Images auf mehreren Cyclones zu starten. Im folgenden Beispiel wird das Programmierimages "Green Image v1.0" auf drei verschiedenen Cyclones gleichzeitig gestartet. Die Cyclones werden namentlich referenziert (Agnes, Colossus, HAL9000) und das Images wird durch die komprimierte Imagebeschreibung "GreenImagev1.0" referenziert.

3_(1)

Bereitstellung zusätzlicher dynamischer Daten für jedes einzelne programmierte Ziel

Zusätzlich zur Programmierung der Daten, die Teil eines Programmierabbilds sind, können in jedes Zielgerät zusätzliche Daten programmiert werden. Diese "dynamischen" Daten können bei jedem Start eines Programmierabbilds angegeben werden, sodass sie Ziel für Ziel angepasst werden können. Dynamische Daten haben viele Anwendungsfälle: Kundengesteuerte Serialisierung, Konfiguration, Nachverfolgung, Datumscodierung usw. In der Befehlszeile können mehrere Sätze dynamischer Daten angegeben werden. Daten können als Array von Bytes oder als nullterminierte Zeichenfolge bereitgestellt werden.

Als Teil des dynamischen Datenprogrammierungsparameters muss die Cyclone-Handle-Nummer angegeben werden. Dadurch können verschiedene dynamische Daten in Ziele programmiert werden, die mit jedem geöffneten Cyclone verbunden sind. Wenn nur ein Cyclone gestartet wird, wird der Wert 1 verwendet. Wenn drei Cyclones in der Befehlszeile angegeben würden, würden sie in der Befehlszeile in der Reihenfolge von links nach rechts als 1, 2 und 3 nummeriert.

Die Syntax zum Programmieren dynamischer Daten als Array von Bytes lautet:

   -putdynamicdata = [Cyclonenummer], [Adresse], [Daten]

Die Syntax zum Programmieren dynamischer Daten als nullterminierte Zeichenfolge lautet:

   -putdynamicstring = [Cyclonenummer], [Adresse], [Zeichenfolge]

Im folgenden Beispiel programmieren wir sowohl eine eindeutige benutzergenerierte Seriennummer als auch eine eindeutige benutzergenerierte IP-Adresszeichenfolge in zwei verschiedene Ziele, die mit zwei verschiedenen Cyclone verbunden sind:

4_(1)

Das Wiederherstellen von Erfolg / Fehler resultiert aus Python / Bash / Batch / etc.

Die Cyclone Control Console zeigt nicht nur Erfolgs- und Fehlerinformationen als in die Konsole geschriebene Zeichenfolgen an, sondern gibt auch einen entsprechenden Fehlercode an das Betriebssystem auf dem PC zurück. Eine Anwendung oder verschiedene Skriptsprachen können verwendet werden, um diesen Fehlercode zu testen. Ein Null-Fehlercode zeigt einen erfolgreichen Betrieb an, und ein Nicht-Null-Fehlercode zeigt einen Fehler an.

Hier ist ein Beispiel für ein Python-Skript, mit dem Erfolgs- / Fehlerinformationen erfolgreich von der Cyclone Control Console wiederhergestellt werden können:

Import subprocess
import sys
P = subprocess.run ("cyclonecontrolconsole -cyclone = Agnes -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 ("Programming failed !!! with error code" + str (P.returncode))
sys.exit (1)
Here is an example of a Windows batch file that can be used to successfully restore success / failure information from the Cyclone Control Console:

cyclonecontrolconsole -cyclone = Agnes -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 = Agnes -launchimage = green_serial
errorReturn = $?
if [$ errorReturn == 0]; then
  Echo 'Successfully programmed!'
otherwise
  echo 'programming failed !!!!! with the error code '$ errorReturn
  Exit 1
fi

2. Gruppenprogrammierung mit dem Cyclone Control SDK

Das Cyclone Control SDK von PEmicro bietet dem Entwickler eine dynamisch ladbare gemeinsam genutzte Bibliothek (DLL oder SO), Beispielanwendungscode und unterstützende Dokumentation, damit benutzerdefinierte Softwareanwendungen den Cyclone direkt steuern können. Sprachen und Umgebungen wie C, C ++, Delphi, C #, Java, Python und Labview werden unterstützt.

Binärdateninformationen, Algorithmusinformationen, Programmiervorgänge und andere Einstellungen werden zusammen in einem SAP-Image gespeichert, das direkt im FLASH-Speicher des Cyclone gespeichert wird. Programmiervorgänge können per Knopfdruck auf dem Cyclone gestartet werden. Das SDK ermöglicht es einem PC jedoch, dem Cyclone einen Befehl zum Starten derselben Programmiersequenz zu erteilen und auch andere Funktionen bereitzustellen, z. B. die Möglichkeit, Dynamik hinzuzufügen Daten zu jeder zu programmierenden Karte und die Möglichkeit, Fehlerinformationen wiederherzustellen.

 
Herstellen einer Verbindung zu mehreren Cyclones und Starten eines Programmierabbilds

Das Herstellen einer Verbindung zu mehreren Cyclones über das SDK ist sehr einfach. Unten finden Sie ein Beispiel dafür, wie der Code in C aussehen würde:

5

Hier werden die Programmiervorgänge auf 3 separaten Cyclone-Einheiten gestartet, die an den Host-PC angeschlossen sind. Dies funktioniert auch dann, wenn alle Cyclones an einer Mischung verschiedener Ports oder entfernt vom PC angeschlossen sind. Das Programm wartet dann auf den Abschluss, bevor es fortfährt. Im Wesentlichen sind 3 separate Geräte parallel programmiert. Viele Cyclone-Einheiten können parallel von einem einzelnen Host-PC aus gesteuert werden, da die Programmierarbeiten an den Cyclones selbst durchgeführt werden.

 

Bereitstellung zusätzlicher dynamischer Daten für jedes einzelne programmierte Ziel

Im folgenden Beispiel ist eine Seriennummer in jedes der mit den drei Cyclones verbundenen Ziele programmiert.

 

6

Zu diesem Zweck ruft der Code die Routine „startDynamicDataProgram“ auf. Die Argumente sind das von "connectToCyclone" zurückgegebene Cyclone-Handle, die zu programmierende Adresse (in diesem Fall die Adresse 0), die Länge der zu programmierenden Daten und ein Zeichenpuffer.

 

Auf Fehler prüfen

Das Cyclone Control SDK bietet dem Benutzer die Möglichkeit, nach Abschluss eines Programmierbefehls nach Fehlern zu suchen (angezeigt, wenn checkCycloneExecutionStatus 0 zurückgibt).

7

Um nach Fehlern zu suchen, rufen Sie die Routine "getNumberOfErrors" mit dem Cyclone-Handle als einzigem Argument auf. Der Rückgabewert dieser Routine ist die Anzahl der Fehler im angegebenen Cyclone. Wenn dieser Wert 0 ist, gab es keine Fehler. Durch Verwendung der Funktion „getErrorCode“ mit dem Cyclone-Handle und der Fehlernummer (1. die Anzahl der Fehler) kann der Benutzer die Fehlercode-Nummer des aufgetretenen Fehlers abrufen. Für weitere Informationen geben Sie den Fehlercode ein und übergeben Sie ihn an die Routine „getDescriptionOfErrorCode“ im Cyclone Control SDK, die eine detaillierte Textbeschreibung des Fehlers zurückgibt.

 

Fazit

Mit der Cyclone Control Suite von PEmicro in Kombination mit mehreren Cyclones ist es sehr einfach, ein Gang-Programmier-Setup zu erstellen. Da jeder Cyclone selbst ein unabhängig arbeitender Programmierer ist, kann eine Mischung aus Programmierimages, Zielen und Daten gleichzeitig in viele Geräte programmiert werden, während ein hohes Leistungsniveau beibehalten wird. Die Cyclone Control Console erleichtert die Einrichtung der Gruppenprogrammierung erheblich, während das Cyclone Control SDK eine detaillierte Anpassung der Gruppenprogrammierungssteuerung aus vielen Tools, Sprachen und Umgebungen ermöglicht.

Cyclone Programmer

7.08 %
pemicro cyclone fx universalCyclone FX Universal Header Layout
Cyclone Universal FX
CYCLONE-FX-UNIV
Der PEmicro Cyclone Universal FX (U-Cyclone-FX) ist eine Standalone Programmer für ARM und 8/16/32 bit Prozessoren.

1.300,00 €* 1.399,00 €*
2 %
PEmicro cyclone lc universalpemicro cyclone lc universal header layout
Cyclone LC Universal
CYCLONE-LC-UNIV
Der PEmicro Cyclone LC Universal (U-Cyclone) ist eine Standalone Programmer für ARM und 8/16/32 bit Prozessoren.

979,00 €* 999,00 €*
pemicro cyclone fx armCyclone FX ARM Header Layout
Cyclone FX ARM
CYCLONE-FX-ARM
Der PEmicro Cyclone FX ARM ist ein Standalone Programmer für ARM Prozessoren.

1.199,00 €*