2 I Vorwort I Vorwort • Mit roloFlash können Sie mobil und unabhängig vom PC Ihre Produkte mit verschiedenen Mikrocontrollern flashen. Unter bestimmten Bedin- gungen können auch mehrere Mikrocontroller in Ihrem Produkt geflasht werden. Eine Liste der aktuell unterstützten Mikrocontroller finden Sie im Unterkapitel "Unterstützte Controller von ST Microelectronics".
Seite 6
2 I Vorwort Datei), löschen oder modifizieren. Aus Gründen der Verständlichkeit wird oft nur das „Flashen“ erwähnt, ohne die anderen Möglichkeiten jedesmal zu wiederholen. Zeichen „<“ und „>“ Bei den Beschreibungen der Funktionen und Prozeduren werden die Pa- rameter oft mit „<“ und „>“ eingerahmt. Dieses soll symbolisieren, daß an...
2 II Verpackungsinhalt II Verpackungsinhalt Bitte überprüfen Sie sorgfältig den Lieferumfang: • roloFlash 2 • microSD-Karte - vorbereitet für den Einsatz in Ihrem roloFlash, mit Dokumentation, Beispielen, Firmware und roloBasic-Compiler - zum Einlegen in roloFlash Hinweis: Die microSD-Karte befindet sich entweder im roloFlash einge- steckt oder liegt bei.
2 III Beschreibung III Beschreibung 1 Programmier-Buchse Die 10-polige Programmier-Buchse wird entweder auf einen passenden Stecker des zu programmierenden Targetboards gesteckt oder über einen passenden Adapter mit dem zu programmierenden Targetboard verbun- den. Sie finden auf der Vorderseite des roloFlash direkt über der Buchse eine Pin-1-Markierung.
2 III Beschreibung Signal Signal targetboard RTCK GND Detect 10 Reset Abbildung 1: Draufsicht passender Stecker auf dem Targetboard Hinweis: Es gibt Adapter, um auf bestimmte übliche Programmierstecker-Belegun- gen zu adaptieren. Diese werden bei den entsprechenden Bussen aufge- zählt.
2 III Beschreibung • Alle Leitungen sind mit ESD-Schutzbauteilen ausgestattet, die IEC 61000-4-2 Level 4 (15 kV (air discharge) , 8 kV (contact discharge)) erfüllen. Diese Maßnahmen bieten einen weitgehenden Schutz bei Fehlbedienun- gen wie verpoltes Aufstecken etc. Trotzdem ist nicht ausgeschlossen, daß...
2 III Beschreibung Hinweis: Es gibt Adapter, um auf bestimmte übliche Programmiersteckerbelegun- gen zu adaptieren. Bezeichnung Polzahl Anzahl Reihen Rastermaß [mm] roloFlash-2-Target-Adapter ARM 2,54 JTAG 20p roloFlash-2-Target-Adapter ARM 1,27 Cortex Debug 10p HD roloFlash-2-Universal-Adapter Bis 20 1,27 (SMD) und...
2 III Beschreibung Die Pin-Belegung ist nicht zum 10-poligen ISP-Anschluß von Atmel kom- patibel, auch wenn es mechanisch passen sollte. Hinweis: Die übrigen Signale werden für ISP nicht benötigt und stehen anderen Bussen zur Verfügung. Sie können diese z. B. als GPIO ansprechen.
2 III Beschreibung Signal Signal Data targetboard 10 RST Abbildung 5: Draufsicht passender Stecker auf dem Targetboard Achtung: Die Pin-Belegung ist nicht zu dem 10-poligen ISP-Anschluss von Atmel kompatibel, auch wenn es mechanisch passen sollte.
2 III Beschreibung Wenn Sie das UART-Interface benutzen, dann werden folgende Anschlüs- se für den Bus verwendet: Signal Signal targetboard Abbildung 6: Draufsicht passender Stecker auf dem Targetboard Hinweis: Sofern es keine Überschneidungen mit anderen Pins gibt, können andere...
2 III Beschreibung Signal Signal Vtargetboard Abbildung 7: Draufsicht passender Stecker auf dem Targetboard Hinweis: Sofern es keine Überschneidungen mit anderen Pins gibt, können andere Busse zeitgleich geöffnet werden. Dieses ist bei dieser UART bei JTAG, Atmel PDI und Atmel ISP der Fall.
2 III Beschreibung Signal Signal RTCK GND Detect 10 Reset Abbildung 8: Draufsicht passender Stecker auf dem Targetboard Hinweis: Die Pins TDO und RTCK können nicht als Ausgang benutzt werden.
2 III Beschreibung Ablauf/Verwendung Der Ablauf gliedert sich in zwei Teile: • Vorbereitung der microSD-Karte am PC (z. B. in der Entwicklung) • Flashen der Targetboards (z. B. ungeschultes Personal in der Produkti- on, Kunde oder Techniker im Feldeinsatz) 14 Vorbereitung der microSD-Karte am PC (z. B.
2 III Beschreibung Skript aus benötigten Dateien (z.B. eine „.HEX“-Datei, eventuell benötig- te Loader) auf der microSD-Karte ab. Sie können die Dateien mit den Skripten („.BAS“), die kompilierten Dateien („.BIN“) und den Compiler nach eigenem Ermessen auf dem PC und/oder auf der microSD-Karte speichern.
2 IV Aktualisieren von roloFlash IV Aktualisieren von roloFlash roloFlash verfügt selbst über eine eigene Firmware, die aktualisiert werden kann. Versionsnummern Die Versionsnummer setzt sich aus major und minor zusammen: • major: Major wird angepaßt wenn: - sich die Basic-Schnittelle ändert - grundlegende neue Funktionen hinzugefügt wurden...
Seite 21
2 IV Aktualisieren von roloFlash oder eine vorherige Aktualisierung fehlgeschlagen war. In diesem Fall ist es unerheblich, ob erst der roloFlash auf ein Targetboard aufgesteckt wird und dann die microSD-Karte eingesteckt wird oder die microSD-Karte schon eingesteckt ist. • Es erfolgt keine Überprüfung, ob die Firmware auf der microSD-Karte neuer oder älter ist.
Seite 22
2 IV Aktualisieren von roloFlash Falls die Aktualisierung nicht erfolgreich gewesen sein sollte, verwenden Sie bitte eine frisch unter Windows 7 mit FAT32 formatierte microSD-Kar- te, auf der sich ausschließlich die Datei für die Firmware-Aktualisierung befindet. Hinweis: Für eine Produktion oder beim Weitergeben des roloFlash an Ihre Kunden wird empfohlen, keine Datei für eine Firmware-Aktualisierung auf der mi-...
2 V Liste der mitgelieferten roloBasic-Skripte V Liste der mitgelieferten roloBa- sic-Skripte • Erase-and-Flash Vorbereitung: • Das Skript gibt es jeweils in einer Version für STM32-, AtmelISP und Atmel-PDI-Controller. • Zum Verwenden kopieren Sie bitte die passende Version als RUN.BAS in das Hauptverzeichnis der microSD-Karte.
Seite 24
2 V Liste der mitgelieferten roloBasic-Skripte • Löscht das Target (erase). • Wenn von Ihnen angegeben: Ihre HEX-Datei wird in das Flash des Targets geschrieben und verifiziert. • Nur Atmel: Wenn von Ihnen angegeben: Ihre HEX-Datei wird in das EEPROM des Targets geschrieben und verifiziert.
Seite 25
2 V Liste der mitgelieferten roloBasic-Skripte • Liest die ID(s) des angeschlossenen Targets aus und vergleicht mit den Werten aus der Datenbank. • Wenn die ID(s) nicht stimmen sollte(n) (z. B. anderer Controller), dann wird der weitere Ablauf mit Ausgabe einer Fehlermeldung abgebro- chen •...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) VI roloFlash-API (Liste der Proze- duren und Funktionen) (API = Application Programming Interface) Damit ist die Schnittstelle gemeint, durch die roloBasic Zugriff auf alle rolo- Flash-spezifischen Prozeduren und Funktionen erlangt. Sie können die Prozeduren und Funktionen direkt aufrufen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 1 Interne Datenbank In roloFlash ist eine Datenbank integriert, die zu vielen Targets Informatio- nen enthält. Die Informationen dienen folgenden Zwecken: • Um in roloBasic zu prüfen, ob das gewünschte Target wirklich an- geschlossen ist (z. B.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - ein Datenbank-Handle. Dieses kann benutzt werden, um mittels DB_get Informationen zu diesem Target abzufragen. Exceptions: unknownTarget Target nicht bekannt apiTypeFault Unzulässiger Typ für name 1.2 DB_get Unter Angabe eines bereits mittels DB_getHandle erhaltenden Handles können weitere Informationen abgefragt werden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) DB_FLASHSIZE: Angaben über die Größe des Flashs in Bytes. DB_FLASHPAGESIZE: Angabe einer Page-Größe in Bytes für das Schreiben von Speicher mit bestimmten Page-Größen (z. B. Atmel AVR und Atmel Xmega) DB_EEPROMSIZE: Angaben über die Größe des EEPROMs in Bytes.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Je nach Bus steht dazu eine passende Funktion zur Verfügung, die in dem jeweiligen Kapitel beschrieben ist. • Ein an dem Bus angeschlossener Mikrocontroller (Target) kann erst angesprochen werden, wenn man von dem Bus ein Target-Handle erhalten hat.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - ein busHandle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. getTargetHandle aufzurufen. Exceptions: apiValueRange Unzulässiger Wert für index apiTypeFault Unzulässiger Typ für index resourceUnavailable Der Bus kann nicht geöffnet werden. Mögliche Gründe:...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: invalidHandle Handle ist schon geschlossen apiTypeFault Unzulässiger Typ für busHandle 2.3 Target öffnen targetHandle = getTargetHandle(<bushandle>, <index>, <family>) Ermöglicht den Zugriff auf ein Target und liefert ein Target -Handle. Hinweis: Die Funktion prüft nicht, ob tatsächlich ein Target angeschlossen ist.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Mit diesem Parameter wird festgelegt, welcher Controller-Familie der Controller zugeordnet ist. Der Wert dazu kann direkt angeben wer- den oder gegebenenfalls aus der internen Datenbank ausgelesen werden. Mögliche Familien: ATMELISP, ATMELPDI, STM32F1 etc.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keiner (Prozedur) Exceptions: invalidHandle Das Target-Handle ist schon geschlossen, oder der dazu gehörige Bus wurde schon geschlossen. apiTypeFault Unzulässiger Typ für targetHandle 3 JTAG-Bus 3.1 Bus öffnen busHandle = JTAG_open(<index>, <speed>) Öffnet den JTAG-Bus und initialisiert die Leitungen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - ein busHandle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. getTargetHandle aufzurufen Exceptions: apiValueRange Unzulässiger Wert für index oder speed. apiTypeFault Unzulässiger Typ für index oder speed resourceUnavailable Der Bus kann nicht geöffnet werden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Hinweis: Es kann sein, daß beim Scannen der JTAG-Chain langsamer als der an- gegeben Wert gescannt wird. Der angegebene Wert ist für alle anschlie- ßenden Transfers relevant. Hinweis: Falls Sie die Schnittstelle schon geöffnet haben und dann mittels set- CpuClock den Takt des roloFlash ändern, dann ändert sich auch die Ge-...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: busHandle Das von JTAG_open erhaltenen Bus-Handle. Rückgabewert: - Busgeschwindigkeit in Hz Exceptions: apiTypeFault Unzulässiger Typ für busHandle 3.4 JTAG-Chain scannen idCodes = JTAG_scan(<busHandle>) Führt einen Scan auf dem JTAG-Bus durch und liefert ein Array mit den IDCODEs der gefundenen JTAG-Devices.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 4 Atmel ISP-Bus 4.1 Bus öffnen busHandle = ISP_open(<index>, <speed>) Öffnet den ISP-Bus und initialisiert die Leitungen. Die maximale Busge- schwindigkeit wird auf „speed“ begrenzt. Setzt die Programmiergeschwin- digkeit für das Target.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 4.2 Busgeschwindigkeit ändern ISP_setSpeed(<busHandle>, <speed>) Ändert bei einem bereits geöffneten ISP-Bus die Busgeschwindigkeit. Die maximale Busgeschwindigkeit wird auf „speed“ begrenzt. Setzt die Pro- grammiergeschwindigkeit für das Target. Vorbedingung: - gültiges busHandle...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für speed. apiTypeFault Unzulässiger Typ für busHandle oder speed 4.3 Busgeschwindigkeit abfragen Speed = ISP_getSpeed(<busHandle>) Fragt bei einem bereits geöffneten ISP-Bus die aktuelle Busgeschwindig- keit ab. Diese kann gleich oder geringer als die bei bei ISP_open bzw.
Seite 45
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) gesetzt. D.h.: - Wenn kein Reset angelegt ist, ist die RST-Leitung aktiv high. - Wenn ein Reset angelegt ist, ist die RST-Leitung aktiv low Vorbedingung: - gültiges busHandle Parameter: busHandle Das von ISP_open erhaltene Bus-Handle.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keiner. Exceptions: apiTypeFault Unzulässiger Typ für busHandle 5 Atmel PDI-Bus 5.1 Bus öffnen busHandle = PDI_open(<index>, <speed>) Öffnet den PDI-Bus und initialisiert die Leitungen. Die maximale Busge- schwindigkeit wird auf „speed“ begrenzt. Setzt die Programmiergeschwin- digkeit für das Target.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Verwenden Sie setCpuClock zuerst und öffnen dann erst den Bus. • Oder setzen Sie nach setCpuClock die Busgeschwindigkeit er- neut mittels PDI_setSpeed. Rückgabewert: - ein busHandle. Dieses kann benutzt werden, um weitere Funktionen wie z.B.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Die Geschwindigkeit des Busses, Angabe in Hz. Die unterstützten Werte sind im vorherigen Kapitel (PDI_open) angegeben. Falls die angegebene Frequenz nicht unterstützt wird, dann wird in- tern auf den nächsten möglichen Wert abgerundet.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) busHandle Das von PDI_open erhaltene Bus-Handle. Rückgabewert: - aktuelle Busgeschwindigkeit in Hz. Exceptions: apiTypeFault Unzulässiger Typ für busHandle 6 UART-Interface 6.1 Bus öffnen busHandle = UART_open(<index>, <baudrate>, <dataBits>, <parity>, <stopbits>) Öffnet eine der beiden UART-Schnittstellen und initialisiert die Leitungen.
Seite 51
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Andere Baudraten, zwischen den üblichen, hier aufgezählten Baud- raten, sind ebenso möglich. Sie müssen zwischen den angegebenen Maximal- und Minimalwerten liegen. Tabelle 1: UART0-Interface bei CPU-Clock = 120 Mhz Nominell [Hz] Tatsächlich [Hz]...
Seite 52
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Tabelle 2: UART0-Interface bei CPU-Clock = 24 Mhz Nominell [Hz] Tatsächlich [Hz] Abweichung in % Maximal 375000 375000 250000 250000 230400 230769 0,16 115200 115384 0,16 76800 76923 0,16 57600 57692...
Seite 53
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Tabelle 3: UART1-Interface bei CPU-Clock = 120 Mhz Nominell [Hz] Tatsächlich [Hz] Abweichung in % Maximal 1875000 1875000 1000000 1000000 500000 500000 250000 250000 230400 230769 0,16 115200 115384 0,16 76800...
Seite 54
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Tabelle 4: UART1-Interface bei CPU-Clock = 24 Mhz Nominell [Hz] Tatsächlich [Hz] Abweichung in % Maximal 375000 375000 250000 250000 230400 230769 0,16 115200 115384 0,16 76800 76923 0,16 57600 57692...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Verwenden Sie setCpuClock zuerst und öffnen dann erst den Bus. Rückgabewert: - ein busHandle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. UART_write aufzurufen. Exceptions: apiValueRange Unzulässiger Wert für einen der Parameter apiTypeFault Unzulässiger Typ für einen der Parameter...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Die gewünschte Baudrate in [Hz]. Die unterstützten Werte sind im vorherigen Kapitel (PDI_open) angegeben. Falls die angegebene Frequenz nicht unterstützt wird, dann wird in- tern auf den nächsten möglichen Wert gerundet.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: busHandle Das von UART_open erhaltene Bus-Handle. Rückgabewert: - aktuelle Baudrate in Hz. Exceptions: apiTypeFault Unzulässiger Typ für busHandle 6.4 Schreiben UART_write <busHandle>, <text> Gibt den Text auf der UART-Schnittstelle aus. Der Programmablauf wird dann weitergeführt, wenn die Ausgabe abgeschlossen ist.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) apiTypeFault Unzulässiger Typ für busHandle oder Text 6.5 Lesen data = UART_read(<busHandle>) Holt inzwischen eingelesene Daten ab und stellt diese in einem Char-Ar- ray in roloBasic zur Verfügung. Die Ausführung ist nicht blockierend. Es werden alle bis zu diesem Zeitpunkt eingelesenen Daten zurückgegeben.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Öffnet eine der GPIO-Schnittstellen und initialisiert die Leitung. Der Mode wird wie angegeben eingestellt. Gegebenenfalls ändert sich der Zustand des Pins. Hinweis: - Die Pins TDO und RTCK können nur als Eingang verwendet werden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für einen der Parameter apiTypeFault Unzulässiger Typ für einen der Parameter functionNotSupported Die Pins TDO und RTCK können nur als Input verwendet werden BadArgumentCount Die Anzahl der Argumente stimmt nicht.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - PIN_ACTIVEHIGH: diesen Pin als Ausgang nutzen, jedoch nur high-aktiv treiben. - PIN_PUSHPULL: diesen Pin als Ausgang benutzen level Dieser Wert darf bei mode = PIN_INPUT nicht angegeben werden. Für die anderen Modi gibt der Wert den Ausgangszustand für den Pin an.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) level Ausgangszustand für den Pin Rückgabewert: - keiner (Prozedur) Exceptions: apiValueRange Unzulässiger Wert für level apiTypeFault Unzulässiger Typ für eine der Parameter functionNotSupported Der Pin wird als Eingang genutzt, daher ist die Funktion nicht möglich...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - Ausgelesener Pin Exceptions: apiTypeFault Unzulässiger Typ für busHandle functionNotSupported Der Pin kann nicht ausgelesen werden, da roloFlash den Pin aktiv treibt, siehe obigen Hinweis. 8 Target allgemein Das Target kann sich in folgenden Modi befinden: RunMode Target läuft ganz normal, als ob roloFlash nicht angeschlossen wäre.
Seite 64
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Falls das Target schon im ProgramMode ist, dann wird ebenso eine Abfra- ge gestartet. Das Target bleibt im ProgramMode. Hinweis Atmel PDI-Bus: Unabhängig davon, ob das Target im RunMode oder ProgramMode ist, wird über den PDI-Bus eine Abfrage gestartet.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 8.2 setTargetMode setTargetMode <targetHandle, targetMode> Bringt das Target und roloFlash in den angegebenen Mode Vorbedingung: - gültiges targetHandle Parameter: targetHandle Das Target-Handle auf das anzusprechende Target targetMode Angabe des gewünschten Modes: PROGRAMMODE: Dieser Mode ist Voraussetzung für die meisten...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • runMode: Startet das Target nur, wenn vorher keine Schreibzugriffe auf den Flashspeicher stattgefunden haben. Hinweis Atmel ISP-Bus: • programMode: Falls das Target im RunMode ist, dann wird das Target in den „Programming Enable“-Mode geschaltet und im Reset gehalten.
Seite 67
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) ProgramMode Es wird ebenso ein Reset durchlaufen, dann wieder der ProgramMo- de hergestellt. Zwischenzeitlich kann eine evtl. auf dem Target be- findliche Firmware bereits für kurze Zeit losgelaufen sein. Es wird empfohlen, dieses Kommando nur einzusetzen, wenn dieses ent- weder nicht kritisch ist oder sich noch keine Firmware auf dem Target be- findet.
Seite 68
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) RunMode Es wird kurzzeitig (100 ms) der Reset aktiviert, dann deaktiviert. Das Target läuft daher vom Anfang los. Der RunMode wird beibehalten. ProgramMode Der Reset wird kurzzeitig (3 ms) aufgehoben, dann wieder der Pro- gramMode hergestellt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Der PDI-Bus wird deaktiviert, ein Reset ausgelöst (100 ms), anschlie- ßend der PDI-Bus aktiviert und der ProgramMode wieder hergestellt. Das Target läuft vom Anfang los. Vorbedingung: - gültiges Target-Handle Parameter: targetHandle Das Target-Handle auf das anzusprechende Target Rückgabewert:...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 9.1 Wert in ein Property einer Speicherart schreiben setMemoryMap <targetHandle>, <memType>, <memProperty> <value> Setzt für den angegeben Speichertyp das entsprechende Property auf den angegebenen Wert. Vorbedingung: - gültiges Target-Handle Parameter: targetHandle...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: targetCommunication Die Kommunikation mit dem Target funktioniert nicht. invalidHandle Das Target-Handle ist schon geschlossen, oder der Bus wurde schon geschlossen. FunctionNotSupported Unzulässige Kombination von MemType und Property apiTypeFault Unzulässiger Typ für einen der Parameter.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) MEM_STARTADDR: Startadresse des Speichers MEM_SIZE: Größe des Speichers in Bytes MEM_PAGESIZE: für bestimmte Targets: Größe einer Speicherseite Rückgabewert: - gelesener Wert Exceptions: targetCommunication Die Kommunikation mit dem Target funktioniert nicht. invalidHandle Das Target-Handle ist schon geschlossen, oder der Bus wurde schon geschlossen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keiner (Prozedur) Exceptions: targetWrongMode Target ist nicht im "ProgramMode". invalidHandle Das Target-Handle ist schon geschlossen oder der Bus wurde schon geschlossen. apiTypeFault Unzulässiger Typ für das Target-Handle. 10 Loader Manche Controllerfamilien werden mit Hilfe eines Loaders angesprochen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 11 Target löschen, schreiben, lesen und verifizieren 11.1 EraseFlash eraseFlash Löscht das gesamte Flash des Targets. Bei manchen Targets wird dabei automatisch auch das EEPROM gelöscht (z.B. Atmel-Fuse „EESAVE“). In- formationen dazu finden Sie im jeweiligen Datenblatt des Targets.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 11.2 writeFileToTarget writeFileToTarget <targetHandle>, <filesystem>, <file- name>, <fileformat>, <memType>, <verify>, <startAddr> Schreibt eine Datei in den Speicher des Targets. Vorbedingung: - gültiges Target-Handle - das Target muß im ProgramMode sein. Parameter:...
Seite 76
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) VERIFYONLY: Die Daten werden nur verifiziert (kein Schreiben auf dem Target) WRITEVERIFY: Schreiben und Verifizieren startAddr (optional). Der Parameter ist ausschließlich für das Raw-Format vor- gesehen. Da im Raw-Format in der Datei keine Adresse angegeben ist, muß...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: targetMemoryLayout, Siehe Kapitel „Exceptions des roloFlash“. hexFileSize, hexFileCRC targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht. targetError Es gibt einen Fehler auf dem Target apiTypeFault Unzulässiger Typ für einen der Parameter.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Der Parameter wird ignoriert und sollte mit 0 angegeben werden. filename Es gelten die Bedingungen für Dateinamen, siehe Kapitel 5 “Datei- en“. Falls die Datei schon existieren sollte, dann wird sie überschrie- ben.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: targetMemoryLayout, Siehe Kapitel „Exceptions des roloFlashs“. hexFileSize, hexFileCRC targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht. targetError Es gibt einen Fehler auf dem Target apiTypeFault Unzulässiger Typ für einen der Parameter.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) verify Gibt an, ob ein Verify durchgeführt werden soll. Mögliche Werte sind: WRITEONLY: Schreiben ohne Verify VERIFYONLY: Die Daten werden nur verifiziert (kein Schreiben auf dem Target) WRITEVERIFY: Schreiben und Verifizieren startAddr Die Adresse, an die Daten im Target geschrieben werden sollen.
Seite 81
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - gültiges Target-Handle - das Target muß im ProgramMode sein. Parameter: targetHandle Das Target-Handle auf das anzusprechende Target. memType Gibt an, welcher Speicher gelesen werden soll. Die Angabe ist für das jeweilige Target spezifisch.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: OutOfMemory Es steht nicht genug Speicher zur Verfügung, um das Basic Array anzulegen targetMemoryLayout Siehe Kapitel „Exceptions des roloFlash“. targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • flash, ram, readMemory (für Zugriff auf RAM- und Flash-Speicher) 13 Target Atmel AVR (ISP-Interface) Es werden alle Funktionen der Kapitel „Target allgemein“ bis „Target lö- schen, schreiben, lesen und verifizieren“ inklusive aller Unterkapitel unter- stützt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Ausgelesene Signature. Die Signature wird in einem Byte-Array mit 3 Bytes geliefert. Sie können die Signature mit einer Signature aus der Da- tenbank vergleichen. Exceptions: targetWrongMode Target ist nicht im "ProgramMode".
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht. apiValueRange Unzulässiger Wert für index. invalidHandle Das Target-Handle ist schon geschlossen oder der Bus wurde schon geschlossen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) targetHandle Das Target-Handle auf das anzusprechende Target index Gibt an, welche Fuses bzw. Lock-Bits beschrieben werden sollen. Es gibt dazu die Konstanten FUSES_LOW, FUSES_HIGH, FUSES_EXT und LOCK_BITS. Bei Controllern, die keine Extended-Fuses haben, findet bei FUSES_EXT kein Schreibvorgang statt (es wird keine Exception er- zeugt).
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - gültiges targetHandle - das Target muß im ProgramMode sein. Parameter: targetHandle Das Target-Handle auf das anzusprechende Target value Extended address mode nicht verwenden sonst: Extended address mode verwenden Rückgabewert:...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Unterstützte memTypes beim Lesen: • Flash, EEPROM 14.1 getDeviceId id = getDeviceId(<targetHandle>) Liest die Device-ID des Targets. Anhand dieser lassen sich die verschie- denen Controller unterscheiden. Vorbedingung: - gültiges Target-Handle - das Target muß im ProgramMode sein.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 14.2 readBits values = readBits(<targetHandle>, <index>) Liest die angegebenen Fuses bzw. Lock-Bits aus. Vorbedingung: - gültiges Target-Handle - das Target muß im ProgramMode sein. Parameter: targetHandle Das Target-Handle auf das anzusprechende Target...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht. apiValueRange Unzulässiger Wert für index. invalidHandle Das Target-Handle ist schon geschlossen, oder der Bus wurde schon geschlossen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) index 0: Fuse-Byte 0 1: Fuse-Byte 1 2: Fuse-Byte 2 3: <nicht zulässig> 4: Fuse-Byte 4 5: Fuse-Byte 5 6: <nicht zulässig> 7: Lock-Bits Hinweis: für die Lock-Bits kann auch die Konstante LOCK_BITS verwendet werden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Verzeichnisnamen dürfen maximal aus acht Zeichen bestehen: „XXXXXXXX“. • Ansonsten gelten dieselben Konventionen wie bei Dateinamen. Aktuelles Verzeichnis ist immer das Hauptverzeichnis: • Es gibt kein „change directory“. Der aktuelle Pfad bleibt immer das Hauptverzeichnis.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keiner (Prozedur) Exceptions: apiTypeFault Unzulässiger Typ für filename. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 15.2 fsRemove fsRemove <filesystem>, <filename> Löscht die angegebene Datei oder das angegebene Verzeichnis, falls vor- handen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 15.3 fsMkDir fsMkDir <filesystem>, <dirname> Erzeugt das angegebene Verzeichnis. Falls das Verzeichnis schon exis- tiert, hat die Prozedur keine Wirkung. Vorbedingung: - keine Parameter: filesystem Der Parameter wird ignoriert und sollte mit 0 angegeben werden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keine Parameter: filesystem Der Parameter wird ignoriert und sollte mit 0 angegeben werden. filename Es gelten die Bedingungen für Dateinamen, siehe Kapitel 5 “Datei- en“. Rückgabewert: 0 = Datei existiert nicht...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Es gelten die Bedingungen für Dateinamen, siehe Kapitel 5 “Datei- en“. Rückgabewert: Es wird die Dateigröße zurückgegeben. Exceptions: apiTypeFault Unzulässiger Typ für filename. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiTypeFault Unzulässiger Typ für filename. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 15.7 fsRead a = fsRead(<filehandle>, <position>, <count>) Liest die angegebene Anzahl an Bytes aus der Datei.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für filehandle, position oder count. apiTypeFault Unzulässiger Typ für filehandle, position oder count. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 15.8 fsWrite fsWrite <filehandle>, <position>, <array>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für filehandle, position oder count. apiTypeFault Unzulässiger Typ für filehandle, position oder count. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 15.9 fsTruncate fsTruncate <filehandle>, <len>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 15.10 fsClose fsClose <filehandle> Schließt die Datei. Das angegebene Filehandle wird dadurch ungültig und darf nicht mehr verwendet werden. Vorbedingung: - Gültiges Filehandle mittels fsOpen. Parameter: filehandle Das von fsOpen erhaltene Filehandle.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - keine Parameter: filesystem Der Parameter wird ignoriert und sollte mit 0 angegeben werden. Rückgabewert: - keiner (Prozedur) Exceptions: <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 16 LEDs Immer nur eine LED an: •...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Alle Prozeduren dieses Kapitels sind nicht blockierend. Das bedeutet, dass z. B. ein mit ledRunningLight aktiviertes Lauflicht parallel zur weiteren Ausführung des roloBasic läuft. 16.1 ledOn ledOn <index>, <color> Schaltet die LED auf die angegebene Farbe.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - keine Parameter: - keine Rückgabewert: - keiner (Prozedur) Exceptions: - keine 16.3 ledBlink ledBlink <index>, <color>, <speed> Die LED blinkt mit der angegebenen Geschwindigkeit. Vorbedingung: - keine Parameter: index...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) speed Geschwindigkeit des Blinkens in [ms] Rückgabewert: - keiner (Prozedur) Exceptions: apiValueRange Unzulässiger Wert für index, color oder speed. apiTypeFault Unzulässiger Typ für index, color oder speed. 16.4 ledRunningLight ledRunningLight <from>, <to>, <color>, <speed>...
Seite 105
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für from, to, color oder speed. apiTypeFault Unzulässiger Typ für from, to, color oder speed. 16.5 ledRunningLightOutstanding ledRunningLightOutstanding <from>, <to>, <color>, <speed>, <outstandingLedNumber> Läßt ein Lauflicht laufen, bei der eine bestimmte LED die jeweilig andere Farbe aufweist.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für from, to, color, speed oder outstandingLedNumber. apiTypeFault Unzulässiger Typ für from, to, color, speed oder outstandingLedNumber. 17 Sonstige 17.1 setLogMode setLogMode <logMode> Es wird der Mode für das Loggen (siehe folgendes Kapitel „print“) festge- legt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Hinweis: Default ist der logMode LOGMODE_NORMAL. Empfehlungen: Verwenden Sie LOGMODE__IMMEDIATE nur bei der Fehlersuche. Da jede print-Ausgabe erneut die Datei öffnet, beschreibt und wieder schließt, wird auf der microSD-Karte jedesmal die FAT (file allocation table) be- schrieben.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Der Ausdruck erfolgt an das Ende der Datei „LOG.TXT“. Wenn die Datei noch nicht existiert, dann wird sie erzeugt. Vorbedingung: - keine Parameter: a, b, ... Hier können Zahlen und Arrays ausgeben werden. Beispiel: value = 42 print "Der Wert ist: ", value...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keine Parameter: duration Zeitangabe in ms, die gewartet werden soll. Rückgabewert: - keiner (Prozedur) Exceptions: apiValueRange Unzulässiger Wert für duration. apiTypeFault Unzulässiger Typ für duration. 17.4 getSystemTime t = getSystemTime Ermittelt die abgelaufe Zeit seit Systemstart in ms.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 17.5 getTargetBoardVoltage u = getTargetBoardVoltage Ermittelt die Spannung in mV, die das Targetboard liefert. Vorbedingung: - keine Parameter: - keine Rückgabewert: Ausgelesene Spannung in mV. Exceptions: - keine 17.6 setCpuClock setCpuClock <frequency>...
Seite 111
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Achtung: Bereits geöffnete Busse können dabei Ihren Takt ändern. Den aktuellen Takt können Sie abfragen. Empfehlung: Ändern Sie bei Bedarf den Takt am Anfang Ihres Skriptes. Vorbedingung: - keine Parameter: frequency Angabe in Hz.
2 VII Abfrage von roloFlash Eigenschaften VII Abfrage von roloFlash Eigen- schaften Mit folgenden Systemfunktionen / Systemkonstanten können Sie verschie- dene Informationen Ihres roloFlashs ermitteln. 1 Versionsnummern etc. Name Wert / Bedeutung companyName „halec <http://halec.de>“ deviceName „roloFlash 2“ softwareVersion...
Seite 114
2 VII Abfrage von roloFlash Eigenschaften Aus Log-File entnehmen: serialNumber: 1B9FE86E90B7660F08E387B 2. Ihr Skript soll nur auf diesem roloFlash laufen, andernfalls mit einer Ex- ception abbrechen: if serialNumber <> "1B9FE86E90B7660F08E387B" print "Falscher roloFlash, Abbruch\r\n" throw userException endif Hinweis: Für die Seriennummer wird intern eine vom Chiphersteller vorgegebene eindeutige Device-ID genutzt.
2 VIII Exceptions VIII Exceptions Im Handbuch für das roloBasic finden Sie die genaue Beschreibung, wie Exceptions ausgelöst und wieder gefangen werden können. Wird eine Ex- ception nicht gefangen, wird die Exception mittels der LEDs angezeigt. Falls dabei die Exception keine Zahl darstellt, wird die Exception „excepti- onNotANumber“...
2 VIII Exceptions Name Nummer Bedeutung outOfMemory Zu wenig freier Speicher vorhanden rootstackOverflow Interner Systemfehler nullpointerAccess Interner Systemfehler valueRange Wertbereichsüberschreitung, z.B. bei Zuweisung von Werten an Arrays divisionByZero Division durch 0. Kann bei div oder mod auftreten argumentFault Ungültige Anzahl Argumente beim Aufruf einer roloBasic-Funktion / Prozedur.
2 VIII Exceptions Name Nummer Bedeutung deviceError Es konnte nicht von der microSD-Karte gelesen bzw. auf sie geschrieben werden. badCluster Probleme innerhalb des Dateisystems. Das Dateisystem sollte auf dem PC auf Konsistenz geprüft werden. notMounted Es wurde versucht, auf die microSD-Karte zuzugreifen, obwohl sie nicht angemeldet ist.
Seite 118
Es wurde versucht, ein Image eines anderen Produktes auf den roloFlash zu laden. Beispielsweise wurde versucht, ein Image für roloFlash 1 auf einen roloFlash 2 zu laden. apiValueRange Wertbereichsüberschreitung eines Parameters beim Aufruf einer Api-Funktion / Prozedur . z.B.
Seite 119
2 VIII Exceptions ProgramMode voraus. targetCommunication Ein Kommunikationsfehler mit dem Target. targetMemoryLayout Das Speicherlayout des Controllers ist nicht angegeben worden (setMemoryMap). eraseError Das Löschen des Targets hat nicht funktioniert. targetVerify Beim Zurücklesen von Daten wurde ein Unterschied festgestellt. hexFileSize Die Größe der angegebenen Hex-Datei ist nicht...
2 VIII Exceptions TargetError Das Target hat einen nicht weiter spezifizierten Fehler gemeldet. Bei ARM-Targets können das gesetzte Sticky-Bits sein. writeProtectError Der angesprochene Speicherbereich des Targets ist schreibgeschützt. readProtectError Der angesprochene Speicherbereich des Targets ist lesegeschützt. writeError Es gab einen Fehler beim Beschreiben des angesprochenen Speicherbereichs.
2 IX Bedeutungen von LED-Codes IX Bedeutungen von LED-Codes 1 Normaler Betrieb 1.1 Keine microSD-Karte gefunden LEDs: 1: rot Bedeutung: Keine microSD-Karte gefunden, bzw. die Karte ist nicht mit FAT32 formatiert. Hinweis: Für den normalen Betrieb ist es Voraussetzung, daß beim Anschlie- ßen des roloFlash die microSD-Karte bereits eingelegt ist.
2 IX Bedeutungen von LED-Codes 1: rot: geht am Anfang des Blinkcodes kurz aus und wieder an 2: rot: blinkend, Anzahl entspricht 1000-er der Exception 3: rot: blinkend, Anzahl entspricht 100-er der Exception 4: rot: blinkend, Anzahl entspricht 10-er der Exception...
2 IX Bedeutungen von LED-Codes 2.2 Aktualisierung läuft LEDs: 1: rot 2: grün \ im Wechsel blinkend 3: grün / Bedeutung: Die Aktualisierung läuft. Diese benötigt circa 10-15 Sekunden, bitte nicht abbrechen. 2.3 Aktualisierung mit Erfolg abgeschlossen LEDs: 1: grün 2: grün...
2 IX Bedeutungen von LED-Codes Mögliche Abhilfe: • Aktualisierung nochmals versuchen. • Aktualisierung mit einer anderen Firmware durchführen. 2.5 Aktualisierung fehlerhaft: Datei nicht gefunden LEDs: 1: rot 3: rot Bedeutung: Die Aktualisierung konnte nicht gestartet werden, da keine Datei für die Aktualisierung gefunden wurde.
2 IX Bedeutungen von LED-Codes Es darf nur eine Datei vorhanden sein, die für eine Aktualisierung ge- eignet ist. Überflüssige Dateien bitte entfernen und dann Aktualisie- rung nochmals versuchen. 2.7 Aktualisierung fehlerhaft: Sonstiges LEDs: 1: rot 5: rot Bedeutung: Bei der Aktualisierung schlug etwas fehl.
2 X Spezifikation X Spezifikation 1 Unterstützte Controller von ST Microelectronics Folgende Controller sind in der Datenbank bekannt. Die hier angegebenen Namen können mit DB_getHandle verwendet werden. 1.1 STM32F1 Anschluß über JTAG-Interface. Unterstützte Controller: STM32F100C4, STM32F100C6, STM32F100C8, STM32F100CB, STM32F100R4, STM32F100R6, STM32F100R8, STM32F100RB,...
Seite 132
2 X Spezifikation • Unterstützte Controller STM32F2 mit JTAG-Interface: • alle Derivate • Unterstützte Controller STM32F3 mit JTAG-Interface: • alle Derivate • Unterstützte Controller STM32F4 mit JTAG-Interface: • alle Derivate • Unterstützte Controller der Atmel-AVR-Serie mit ISP-Interface: • AT90 •...