Seite 5
VII Exceptions.....................146 1 Exceptions des roloBasic................146 2 Exceptions des Dateisystems..............147 3 Exceptions des roloFlash................148 4 Vom Benutzer ausgelöste Exceptions............151 VIII Bedeutungen von LED-Codes..............152 1 Normaler Betrieb..................152 1.1 Keine microSD-Karte gefunden............152 1.2 Exception aufgetreten................152 2 roloFlash-Aktualisierung................153 2.1 Warten auf microSD-Karte für Aktualisierung........153 2.2 Aktualisierung läuft................154 2.3 Aktualisierung mit Erfolg abgeschlossen..........154 2.4 Aktualisierung fehlerhaft: Dateifehler...........154...
2 I Vorwort I Vorwort • Mit roloFlash können Sie mobil und unabhängig vom PC Ihre Produkte mit verschiedenen Mikrocontrollern flashen. Unter bestimmten Bedingungen können auch mehrere Mikrocontroller in Ihrem Produkt geflasht werden. Eine Liste der aktuell unterstützten Mikrocontroller finden Sie im Kapitel „Spezifikationen“.
Seite 7
2 I Vorwort Außer „Flashen“ können Sie Ihre Mikrocontroller (Target) auch auslesen (und z. B. als HEX-Datei speichern), verifizieren (z. B. gegen eine HEX- 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.
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 Hinweis: Es gibt zahlreiche Adapter, um die Pin-Belegung des roloFlash auf ver- schiedene übliche Programmierstecker-Belegungen anzupassen; diese werden bei den entsprechenden Bussen aufgelistet. Darüber hinaus gibt es einen Universal-Adapter: Bezeichnung Pins Reihen Rastermaß [mm] roloFlash-2-Universal-Adapter 1-20...
2 III Beschreibung Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- belegungen zu adaptieren: Bezeichnung Pins Rei- Rastermaß [mm] roloFlash-2-Target-Adapter ARM JTAG 20p 2,54 roloFlash-2-Target-Adapter ARM Cortex Debug 10p HD 10 1,27 roloFlash-2-Universal-Adapter 1-20 1-2 1,27 (SMD) u.
2 III Beschreibung Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- belegungen zu adaptieren: Bezeichnung Pins Rei- Rastermaß [mm] roloFlash-2-Target-Adapter ARM JTAG 20p 2,54 roloFlash-2-Target-Adapter ARM Cortex Debug 10p HD 10 1,27 roloFlash-2-Universal-Adapter 1-20 1-2 1,27 (SMD) u.
2 III Beschreibung Hinweis: Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- Belegungen zu adaptieren: Bezeichnung Pins Reihen Rastermaß [mm] roloFlash-2-Target-Adapter Atmel ISP/TPI 6p 6 2,54 roloFlash-2-Target-Adapter Atmel ISP/TPI 2,54 roloFlash-2-Universal-Adapter 1-20 1,27 (SMD) und 2,54 (thru-hole) 1.5 Pin-Belegung Atmel TPI-Interface Wenn Sie das TPI-Interface benutzen, dann werden folgende Anschlüsse...
2 III Beschreibung Hinweis: Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- Belegungen zu adaptieren: Bezeichnung Pins Reihen Rastermaß [mm] roloFlash-2-Target-Adapter Atmel ISP/TPI 6p 6 2,54 roloFlash-2-Target-Adapter Atmel ISP/TPI 2,54 roloFlash-2-Universal-Adapter 1-20 1,27 (SMD) und 2,54 (thru-hole) 1.6 Pin-Belegung Atmel PDI-Interface Wenn Sie das PDI-Interface benutzen, dann werden folgende Anschlüsse...
2 III Beschreibung Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- Belegungen zu adaptieren: Bezeichnung Pins Reihen Rastermaß [mm] roloFlash-2-Target-Adapter Atmel PDI 6p 2,54 (Hinweis: Dieser Adapter ist auch für Atmel UPDI geeignet) roloFlash-2-Universal-Adapter 1-20 1,27 (SMD) und 2,54 (thru-hole) 1.7 Pin-Belegung Atmel UPDI-Interface...
2 III Beschreibung Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- Belegungen zu adaptieren: Bezeichnung Pins Reihen Rastermaß [mm] roloFlash-2-Target-Adapter Atmel PDI 6p 2,54 (Hinweis: Dieser Adapter ist auch für Atmel UPDI geeignet) roloFlash-2-Universal-Adapter 1-20 1,27 (SMD) und 2,54 (thru-hole) 1.8 Pin-Belegung UART-Interface 0...
2 III Beschreibung 1.9 Pin-Belegung UART-Interface 1 Wenn Sie das UART-Interface benutzen, dann werden folgende Anschlüs- se für den Bus verwendet: Signal Signal Vtargetboard Abbildung 9: Draufsicht auf passenden Stecker eines Targetboards Hinweis: Sofern es keine Überschneidungen mit anderen Pins gibt, können andere...
2 III Beschreibung Signal Signal RTCK GND Detect Reset Abbildung 10: Draufsicht auf passenden Stecker eines Targetboards Hinweis: Die Pins TDO und RTCK können nicht als Ausgang benutzt werden.
2 III Beschreibung 5 LEDs Fünf programmierbare zweifarbige (rote und grüne) LEDs. Mit den LEDs können Sie z. B. • ein grünes Lauflicht laufen lassen, das den Flashvorgang darstellt. • mit Rot Fehlermeldungen ausgeben. 6 microSD-Kartenslot Für eine microSD- oder microSDHC-Karte, die das abzuarbeitende Skript (RUN_V06.BIN) sowie die zu flashenden Dateien enthält.
Seite 21
• Ihre roloBasic-Datei muß mit einer Magic-Cookie-Zeile anfangen. Diese lautet: #roloFlash 2, v06.* Der Anfang „#roloFlash 2“ muß vorhanden sein, andernfalls wird der Compiler das Übersetzen verweigern. Die Angabe der Versionsnummer, z.B. „v06.*“ ist optional, wird aber empfohlen. Diese entspricht dem Major-Teil der Softwareversion des roloFlash.
2 III Beschreibung wendete roloFlash wählt die zu seiner Firmware passende „RUN_Vxx.- BIN“-Datei aus. 7.2 Flashen der Targetboards Z. B. ungeschultes Personal in der Produktion Hier ist der Ablauf denkbar einfach: • Targetboard mit Energie versorgen. • roloFlash auf den passenden Stecker des Targetboards aufstecken oder die Verbindung mit einem Adapter herstellen.
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 roloBasic-Schnittstelle ändert.
Seite 24
2 IV Aktualisieren von roloFlash aufgesteckt und anschließend die microSD-Karte eingesteckt wird. 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.
Seite 25
2 IV Aktualisieren von roloFlash Falls die Aktualisierung nicht erfolgreich gewesen sein sollte, verwenden Sie bitte eine frisch unter Windows 7 oder höher mit FAT32 formatierte mi- croSD-Karte, auf der sich ausschließlich die Datei für die Firmware-Aktua- lisierung befindet. Hinweis: Für eine Produktion oder die Weitergabe des roloFlash an Ihre Kunden...
2 V Liste der mitgelieferten roloBasic-Skripte V Liste der mitgelieferten roloBa- sic-Skripte • Hello world • scripts\hello-world\RUN_V06.BAS • Zusätzlich befindet sich dieses Script und die kompilierte RUN_V06.BIN bei Auslieferung im Hauptverzeichnis der SD-Karte. Vorbereitung: • Zum Verwenden kopieren Sie bitte das Skript als RUN_V06.BAS in das Hauptverzeichnis der microSD-Karte.
Seite 27
2 V Liste der mitgelieferten roloBasic-Skripte • Zum Verwenden kopieren Sie bitte das Skript als RUN_V06.BAS in das Hauptverzeichnis der microSD-Karte. • Starten Sie den Compiler mittels „compile_V06.bat“, um aus der RUN_V06.BAS die benötigte RUN_V06.BIN zu erzeugen. Funktion: • Löscht eine eventuell vorhandene vorherige LOG.TXT-Datei.
Seite 28
2 V Liste der mitgelieferten roloBasic-Skripte • Zum Verwenden kopieren Sie bitte die passende Version als RUN_V06.BAS in das Hauptverzeichnis der microSD-Karte. • Passen Sie bitte anschließend in der Datei den Namen Ihres Targets und die Dateinamen der HEX-Datei an (bei Atmel: Zusätzlich zur An- gabe einer HEX-Datei für den Flashspeicher können Sie auch eine...
Seite 29
2 V Liste der mitgelieferten roloBasic-Skripte • Read • Im Verzeichnis scripts\STM32: • STM32_F1_F3\JTAG\read\RUN_V06.BAS • STM32_F1_F3\SWD\read\RUN_V06.BAS • STM32_F2_F4_F7\JTAG\read\RUN_V06.BAS • STM32_F2_F4_F7\SWD\read\RUN_V06.BAS • STM32_H7\JTAG\read\RUN_V06.BAS • STM32_H7\SWD\read\RUN_V06.BAS • scripts\Microchip_Atmel\AVR\ISP\read\RUN_V06.BAS • scripts\Microchip_Atmel\AVR\TPI\read\RUN_V06.BAS • scripts\Microchip_Atmel\AVR\PDI\read\RUN_V06.BAS • scripts\Microchip_Atmel\AVR\UPDI\read\RUN_V06.BAS • Vorbereitung: • Das Skript gibt es jeweils in einer Version für STM32-, Atmel ISP-, TPI-, PDI- und UPDI-Controller.
Seite 30
2 V Liste der mitgelieferten roloBasic-Skripte • Liest aus der internen Datenbank des roloFlash spezifische Informati- onen für den von Ihnen angegebenen Controller aus, darunter die ID in Form einer Signature bzw. einer Device-ID (bei Atmel ISP / TPI / PDI / UPDI) oder eines oder mehrerer IDCODEs (bei einem STM32- Controller zwei IDCODEs für Core- und BoundaryScan-Controller),...
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. Prozeduren: Prozeduren haben keinen Rückgabewert.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Zusammensetzung von mehrere Wörtern in Namen von Funktio- nen, Prozeduren und Variablen: der erste Buchstabe des Na- mens (und des ersten Wortes nach einem Unterstrich ("_")) ist ein Kleinbuchstabe, jedes weitere Wort fängt mit einem Groß- buchstaben an.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) name Name des Targets. Es kann sein, daß der Name in der Datenbank verkürzt abgespeichert ist. Das ist dann der Fall, falls es mehrere Targets gibt, die sich z.B. nur in der Gehäuseform unterscheiden und ansonsten gleiche Parameter haben.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Mögliche Werte für property sind: DB_NAME: Name des Targets. (Dieser kann kürzer sein als der Name, der zur Ermittlung des dbHandles angegeben wurde) DB_FAMILY: Ein Wert, der die Zugehörigkeit zu einer bestimmten Familie angibt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Dieses gilt auch, wenn an dieser Schnittstelle prinzipbedingt nur ein einzi- ger Mikrocontroller angeschlossen sein kann (z. B. wird die ISP-Schnitt- stelle für Atmel AVR als Bus aufgefaßt). • Grundsätzlich muß ein Bus erst geöffnet werden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • JTAG • • • • UPDI • • UART index Gibt an, der wievielte Bus geöffnet werden soll. Der erste Bus hat den Index 0. speed Die Geschwindigkeit des Busses, Angabe in Hz. Die unterstützten Busgeschwindigkeiten sind von der CPU-Clock (sys_setCpuClock) des roloFlash abhängig.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Schließt den entsprechenden Bus. Die betroffenen Leitungen werden da- bei abgeschaltet. Sollten auf dem Bus noch geöffnete Targets vorhanden sein, dann werden diese abgetrennt und die Target-Handles ungültig. Vorbedingung: - gültiges BusHandle...
Seite 38
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - gültiges busHandle Parameter: busHandle Das von bus_open erhaltenen Bus-Handle. speed Die Geschwindigkeit des Busses, Angabe in Hz. Die unterstützten Busgeschwindigkeiten sind von der CPU-Clock (sys_setCpuClock) des roloFlash abhängig. Verfügbare Busgeschwindigkeiten finden Sie im jeweiligen Unterkapitel für den verwendeten Bus.
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 2.4 bus_getSpeed Speed = bus_getSpeed(<busHandle>) Fragt bei einem bereits geöffneten Bus die aktuelle Busgeschwindigkeit ab. Diese kann gleich oder geringer sein als die bei bei bus_open bzw.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 2.5.1 JTAG-Chain Es werden JTAG-Chains mit bis zu 10 JTAG-Devices unterstützt. Mit der Funktion bus_scan kann die JTAG-Chain untersucht werden. Als Ergebnis steht ein Array mit den gefundenen IDCODEs zur Verfügung.
Seite 41
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Bei maximaler CPU-Clock = 120 Mhz werden die folgenden Busge- schwindigkeiten unterstützt: 15000000 7500000 5000000 3750000 3000000 2500000 2142857 1875000 1666666 1500000 1363636 1250000 1153846 1071428 1000000 937500 882352 833333 789473...
Seite 42
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 21802 20775 19762 18750 17730 16722 15706 14705 13698 12690 11682 10676 9671 8670 7668 6666 5664 4662 3661 2660 1659 Bei minimaler CpuClock = 24 Mhz werden die folgenden Busge- schwindigkeiten unterstützt:...
Seite 43
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Falls Sie die Schnittstelle schon geöffnet haben und dann mittels sys_setCpuClock den Takt des roloFlash ändern, dann ändert sich auch die Geschwindigkeit des Busses. Daher wird empfohlen: • Verwenden Sie sys_setCpuClock zuerst und öffnen dann erst den Bus.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Das von bus_open erhaltenen Bus-Handle auf den JTAG- oder SWD-Bus. Hinweis: Falls das Taget schon im JTAG-Mode ist, dann erfolgt keine Änderung. Auswirkungen dieses Befehls auf Targets, die kein SWD beherrschen, ins- besondere keinen ARM-Kern haben, sind unbekannt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - gültiges busHandle Parameter: busHandle Das von bus_open erhaltenen Bus-Handle auf den JTAG- oder SWD-Bus. Hinweis: Falls das Target schon im SWD-Mode ist, dann erfolgt keine Änderung. Auswirkungen dieses Befehls auf Targets, die kein SWD beherrschen, ins- besondere keinen ARM-Kern haben, sind unbekannt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Führt einen Scan auf dem JTAG- bzw. SWD-Bus durch und liefert ein Ar- ray mit den IDCODEs der gefundenen JTAG- / SWD-Devices. Vorbedingung: - gültiges busHandle Parameter: busHandle Das von bus_open erhaltene Bus-Handle.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) busHandle Das von bus_open erhaltene Bus-Handle. index Der Index des JTAG-Devices in der JTAG-Chain, welches angespro- chen werden soll. drWidth Angabe der Breite des DR-Registers. Rückgabewert: - keiner (Prozedur) Exceptions: apiValueRange Unzulässiger Wert für index oder drWidth.
Seite 48
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) busHandle Das von bus_open erhaltene Bus-Handle. scanType IR-Scan oder DR-Scan: DRSCAN: DR-Scan mit der bei bus_configure angegebenen Breite IRSCAN: IR-Scan mit der bei bus_scan ermittelten Breite dataArray Ein Array vom Typ char, int oder long mit genug Elementen, damit die benötigte Anzahl an Bits zur Verfügung stehen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 2.5.8 bus_write (Nur SWD-Bus) bus_write <busHandle>, <apacc_dpacc>, <armRegister>, <data> Versendet einen SWD-Transfer. Vorbedingung: - gültiges busHandle Parameter: busHandle Das von bus_open erhaltene Bus-Handle. apacc_dpacc write als APACC- oder DPACC: APACC: write als APACC...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - keiner (Prozedur) Exceptions: apiValueRange Unzulässiger Wert für apacc_dpacc oder armRegister. apiTypeFault Kein gültiges BusHandle auf den JTAG-Bus. 2.5.9 bus_read (Nur SWD-Bus) bus_write <busHandle>, <apacc_dpacc>, <armRegister, <data> Empfängt einen SWD-Transfer.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Hinweise: - Hiermit können Sie mit SWD-Devices direkt kommunizieren, auch wenn diese von roloFlash nicht unterstützt werden. - Wenn Sie mit dem Target kommunizieren, was auch von roloFlash bear- beitet werden soll, dann sind Wechselwirkungen nicht auszuschliessen.
Seite 52
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: busType ISP für IPS-Bus. index Muß 0 sein. speed Die Geschwindigkeit des Busses, Angabe in Hz. Die unterstützten Busgeschwindigkeiten sind von der CPU-Clock (sys_setCpuClock) des roloFlash abhängig. Bei maximaler CPU-Clock = 120 Mhz werden die folgenden Busge- schwindigkeiten unterstützt:...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Hinweis: Falls Sie die Schnittstelle schon geöffnet haben und dann mittels sys_setCpuClock den Takt des roloFlashs ändern, dann ändert sich auch die Geschwindigkeit des Busses. Daher wird empfohlen: • Verwenden Sie sys_setCpuClock zuerst und öffnen dann erst den Bus.
Seite 55
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - gültiges busHandle Parameter: busHandle Das von bus_open erhaltene Bus-Handle. resetMode - PIN_ACTIVELOW: - Wenn kein Reset angelegt ist, ist die RST-Leitung hochohmig. - Wenn ein Reset angelegt ist, ist die RST-Leitung aktiv low.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 2.7 Atmel TPI-Bus Allgemeine Informationen zu Bussen finden Sie im übergeordneten Kapi- tel. Hier wird darauf aufbauend auf das spezifische Verhalten bei dem TPI- Bus eingegangen. 2.7.1 bus_open(TPI, …) und verfügbare Geschwindigkeiten busHandle = bus_open(TPI, <index>, <speed>)
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 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. Mögliche Gründe: - Der Bus wurde bereits geöffnet - ein anderer Bus wurde geöffnet, und das gleichzeitige Öffnen ist nicht möglich...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - Wenn kein Reset angelegt ist, ist die RST-Leitung hochohmig. - Wenn ein Reset angelegt ist, ist die RST-Leitung aktiv high. - PIN_PUSHPULL: - Wenn kein Reset angelegt ist, ist die RST-Leitung aktiv high.
Seite 61
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - keine Parameter: busType PDI für PDI-Bus. index Muß 0 sein. speed Die Geschwindigkeit des Busses, Angabe in Hz. Die unterstützten Busgeschwindigkeiten sind von der CPU-Clock (sys_set- CpuClock) des roloFlash abhängig.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 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. Mögliche Gründe: - Der Bus wurde bereits geöffnet - ein anderer Bus wurde geöffnet, und das gleichzeitige Öffnen ist nicht möglich...
Seite 64
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) CpuClock) des roloFlash abhängig. Bei maximaler CPU-Clock = 120 Mhz werden die folgenden Busge- schwindigkeiten unterstützt: 500000 483870 468750 454545 441176 428571 416666 405405 394736 384615 375000 365853 357142 348837 340909...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Busgeschwindigkeit wird von Atmel mit 100 kHz angegeben. Bei An- gabe von kleineren Werten wird auf 100 kHz aufgerundet. Hinweis: Falls Sie die Schnittstelle schon geöffnet haben und dann mittels sys_setCpuClock den Takt des roloFlashs ändern, dann ändert sich auch die Geschwindigkeit des Busses.
Seite 66
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keine Parameter: busType UART für Uart-Schnittstelle index - 0 für UART0-Interface - 1 für UART1-Interface baudrate Baudrate, Angabe in Hz. Die möglichen Baudraten sind von der ver- wendeten UART und von der CpuClock abhängig.
Seite 67
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Tabelle 1: UART0-Interface bei CPU-Clock = 120 Mhz Nominell [Hz] Tatsächlich [Hz] Abweichung in % Maximal 3750000 3750000 3000000 3000000 2000000 2000000 1000000 1000000 500000 500000 250000 250000 230400 230769 0,16...
Seite 68
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 69
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 70
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. bus_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) Rückgabewert: - keiner (Prozedur) Exceptions: apiTypeFault Unzulässiger Typ für busHandle oder Text 2.10.3 bus_read data = bus_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) get geschehen dann unter Angabe dieses Target-Handles. Bei roloFlash wird grundsätzlich jede Schnittstelle, über die ein Target geflasht werden kann, als Bus aufgefasst. Dieses gilt auch, wenn an dieser Schnittstelle prinzipbedingt nur ein einziger Mikrocontroller angeschlossen sein kann (z.
Seite 74
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) index Gibt an, welches Target auf dem Bus geöffnet werden soll. Die Zähl- weise ist vom Bus abhängig. In den meisten Fällen sind die Targets durchnumeriert – das erste Target hat den Index 0.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für index apiTypeFault Unzulässiger Typ für busHandle oder index invalidHandle Das BusHandle ist ungültig (z.B. schon geschlossen) 3.2 target_close target_close <targetHandle> Schließt das entsprechende Target. Vorbedingung: - gültiges Target-Handle...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.3 target_getPresent value = target_getPresent(<targetHandle>) Ermittelt, ob ein Target angeschlossen ist. Der Betriebsmodus bleibt dabei unverändert. Es findet auf jeden Fall eine Kommunikation mit dem Target statt, so daß man eine aktuelle Information erhält.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) targetHandle Das Target-Handle auf das anzusprechende Target Rückgabewert: 0 = kein Target gefunden 1 = Target gefunden Exceptions: invalidHandle Das Target-Handle ist schon geschlossen, oder der Bus wurde schon geschlossen. apiTypeFault Unzulässiger Typ des Target-Handles...
Seite 78
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Das Target kann sich in folgenden Betriebsmodi befinden: RunMode Target läuft ganz normal, als ob roloFlash nicht angeschlossen wäre. ProgramMode Target kann programmiert werden. Andere Prozeduren bzw. Funktionen sind auf einen bestimmten Modus angewiesen.
Seite 79
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • ProgramMode: Hat keinen Einfluss darauf, ob das Target gerade läuft oder steht. Es werden hier Initialisierungen für den Zugriff auf den Spei- cher des Targets durchgeführt. • RunMode: Startet das Target nur, wenn vorher keine Schreibzugriffe auf den Flashspeicher stattgefunden haben.
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. apiTypeFault Unzulässiger Typ für das Target-Handle 3.5 target_restart target_restart <targetHandle>...
Seite 81
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) das Target-Handle zum Target und fordern Sie ein neues Target-Handle ! Reset aktivieren: handle = GPIO_open(GPIO_RST, PIN_PUSHPULL, 0) ! 100 ms im Reset bleiben: delay 100 ! GPIO schliessen, damit wird der Reset aufgehoben:...
Seite 82
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) ! Quarz aktivieren, damit höhere ! Programmiergeschwindigkeit möglich target_writeBits(targetHandle, FUSES_LOW, value) ! Durch target_restart die Änderung aktivieren target_restart targetHandle bus_setSpeed(bushandle, 1000000) ! z.B. 1 MHz target_writeFromFile ... Hinweis Atmel PDI-Bus: Der Reset ist zwar Teil des PDI-Busses, wird aber bei PDI nicht als Reset genutzt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: targetHandle Das Target-Handle auf das anzusprechende Target Rückgabewert: - keiner (Prozedur) Exceptions: targetCommunication Die Kommunikation mit dem Target funktioniert nicht. invalidHandle Das Target-Handle ist schon geschlossen, oder der Bus wurde schon geschlossen.
Seite 84
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: targetHandle Das Target-Handle auf das anzusprechende Target memType die gewählte Speicherart: FLASH: Flash-Speicher RAM: RAM-Speicher EEPROM: EEPROM-Speicher memProperty das gewählte Property: MEM_STARTADDR: Startadresse des Speichers MEM_SIZE: Größe des Speichers in Bytes MEM_PAGESIZE: für bestimmte Targets: Größe einer Speicherseite...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.6.2 target_getMemoryMap Value = target_getMemoryMap(<targetHandle>, <memType>, <memProperty>) Ermittelt für den angegebenen Speichertyp den Wert für das entsprechen- de Property. Vorbedingung: - gültiges targetHandle Parameter: targetHandle Das Target-Handle auf das anzusprechende Target memType die gewählte Speicherart:...
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) 3.7 Loader Manche Controllerfamilien können mit Hilfe eines Loaders angesprochen werden. Dabei muß vor dem Nutzen bestimmter Funktionen erst ein Loader in den RAM-Speicher des Targets gebracht und gestartet werden. Je nach Tar- get ist der Loader bereits innerhalb des roloFlash vorhanden oder muß...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Bestimmte Teile des RAMs werden verändert. Eigenschaft mit Loader ohne Loader Flash- erheblich Langsamer geschwindigkeit schneller trifft nicht zu für Atmel ISP, TPI, PDI oder UPDI RAM des Targets wird benutzt wird nicht benutzt und nicht verändert...
Seite 89
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - gültiges Target-Handle - das Target muß im ProgramMode sein. Parameter: targetHandle Das Target-Handle auf das anzusprechende Target memType (optional) Die Art des Speichers, der gelöscht werden soll. Zulässige Werte: •...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht. invalidHandle Das Target-Handle ist schon geschlossen, oder der Bus wurde schon geschlossen. apiTypeFault Unzulässiger Typ für das Target-Handle.
Seite 91
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Gibt an, welcher Speicher beschrieben werden soll. Die Angabe ist für die jeweilige Targetfamilie spezifisch und ist in den jeweiligen Ka- piteln beschrieben. verify Gibt an, ob ein Verify durchgeführt werden soll. Mögliche Werte sind:...
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 „Dateien“. Falls die Datei schon existieren sollte, dann wird sie überschrieben. fileformat Gibt an, in welchem Format die Daten geschrieben werden sollen.
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) 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 96
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 die jeweilige Targetfamilie spezifisch und ist in den jeweiligen Kapiteln beschrieben.
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.
Seite 98
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) MemTypes: Unterstützte memTypes beim Schreiben: • FLASH • RAM (auch für Zugriff auf Register) Unterstützte memTypes beim Lesen: • Flash • RAM (auch für Zugriff auf Register) • READMEMORY (für Zugriff auf RAM- und Flash-Speicher, sowie...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.9.1 target_setVoltageForParallelism (Nur STM32F2, STM32F4 und STM32F7) target_setVoltageForParallelism <targetHandle>, <volta- ge> Gibt bekannt, mit welcher Spannung in mV das Target versorgt ist. Daraus wird der anzuwendende Flash-Parallelismus ermittelt und eingestellt. Vorbedingung: - gültiges Target-Handle...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: FunctionNotSupported Die Funktion wird nur für die Familien STM32F2 STM32F4 und STM32F7 unterstützt. apiValueRange Unzulässiger Wert für voltage. invalidHandle Das Target-Handle ist schon geschlossen oder der Bus wurde schon geschlossen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) externer Spannungsversorgung für das Programmieren wird nicht unterstützt. Rückgabewert: - keiner (Prozedur) Hinweis: Diese Prozedur ist alternativ zu target_setVoltageForParallelism. Sollte der Parallelismus vom Loader nicht unterstützt werden, dann wird der Loader nicht verwendet.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: FunctionNotSupported Die Funktion wird nur für die Familien STM32F2, STM32F4, STM32F7 und STM32H7 unterstützt. invalidHandle Das Target-Handle ist schon geschlossen oder der Bus wurde schon geschlossen. 3.9.4 target_setLoaderPreference target_setLoaderPreference <targetHandle>, <loaderPre- ference>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Wenn Sie diese Funktion nicht aufrufen, wird nach Möglichkeit ein Loader benutzt. Wurde bei STM32F2, STM32F4, STM32F7 oder STM32H7 ein Parallelismus eingestellt, den der Loader nicht unterstützt, dann wird der Loader nicht benutzt. Bei STM32L0, STM32L1 und STM32WB wird gene- rell kein Loader verwendet.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: invalidHandle Das Target-Handle ist schon geschlossen oder der Bus wurde schon geschlossen. apiTypeFault Unzulässiger Typ für einen der Parameter. 3.10 Target Atmel AVR (ISP-Interface) Es werden alle Funktionen der Kapitel „Target allgemein“ bis „Target lö- schen, schreiben, lesen und verifizieren“...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: targetHandle Das targetHandle auf das anzusprechende Target Rückgabewert: Ausgelesene Device ID bzw. Signature. Die Device ID wird in einem Byte- Array mit 3 Bytes geliefert. Sie können die Device ID mit einer Device ID aus der Datenbank vergleichen.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Gibt an, welche Fuses bzw. Lock-Bits gelesen werden sollen. Es gibt dazu die Konstanten FUSES_LOW, FUSES_HIGH, FUSES_EXT und LOCK_BITS. Bei Controllern, die keine Extended-Fuses haben, ist der ausgelese- ne Wert bei FUSES_EXT unbestimmt (es wird keine Exception er- zeugt).
Seite 107
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - das Target muß im ProgramMode sein. Hinweis: Manche Änderungen der Fuses sind erst nach einem Reset wirksam bzw. mittels target_readBits sichtbar. Näheres finden Sie dazu im Hand- buch des jeweiligen Targets. Sie können dazu das Kommando target_restart verwenden.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.10.4 target_setExtendedAddressMode target_setExtendedAddressMode <targetHandle>, <value> Für Controller mit 256 kB Flash oder mehr ist der normale Befehlssatz zum Programmieren über das ISP-Interface nicht mehr ausreichend. Es wird dann ein Extended Address Mode benötigt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.11 Atmel TPI (TPI-Interface) Es werden alle Funktionen der Kapitel „Target allgemein“ bis „Target lö- schen, schreiben, lesen und verifizieren“ inklusive aller Unterkapitel unter- stützt. Es wird kein Loader verwendet. MemTypes: Unterstützte memTypes beim Schreiben:...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Ausgelesene Device ID bzw. Signature. Die Device ID wird in einem Byte- Array mit 3 Bytes geliefert. Sie können die Device ID mit einer Device ID aus der Datenbank 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) Das Target-Handle auf das anzusprechende Target index 0: Fuse Byte 0 bzw. Configuration Byte Lock-Bits: für die Lockbits values Zu schreibende Werte. Rückgabewert: - keiner (Prozedur) Exceptions: targetWrongMode Target ist nicht im "ProgramMode".
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.12.1 target_getDeviceId id = target_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.
Seite 114
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 index 0: Fuse-Byte 0 1: Fuse-Byte 1 2: Fuse-Byte 2 3: <nicht zulässig>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.12.3 target_writeBits target_writeBits <targetHandle>, <index>, <values> Schreibt die angegebenen Fuses bzw. Lock-Bits. Vorsicht: – Setzen Sie die Lock-Bits erst, nachdem Sie alle anderen Zugriffe auf den Chip ausgeführt haben. – Falls Sie einen durch Lock-Bits gesperrten Chip bearbeiten wollen, führen Sie als erstes ein target_eraseFlash aus.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 7: Lock-Bits Hinweis: für die Lock-Bits kann auch die Konstante LOCK_BITS verwendet werden. values Zu schreibende Werte. Rückgabewert: - keiner (Prozedur) Exceptions: targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.13.1 target_getDeviceId id = target_getDeviceId(<targetHandle>) Liest die Signature / Device ID des Targets. Anhand dieser lassen sich die verschiedenen Controller unterscheiden. Hinweis: In den Dokumenten des Herstellers werden über die verschiedenen Con- troller die Begriffe „Device ID“...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.13.2 target_readBits values = target_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 (aus Hersteller Dokumentation zu ATtiny417/817) 0: WDTCFG 1: BODCFG 2: OSCCFG 3: <nicht zulässig> 4: TCD0CFG 5: SYSCFG0 6: SYSCFG1 7: APPEND 8: BOOTEND 9: <nicht zulässig> 10: 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) • Es dürfen nur Großbuchstaben verwendet werden. Verzeichnisnamen: • Verzeichnisnamen dürfen maximal aus acht Zeichen bestehen: „XXXXXXXX“. • Ansonsten gelten dieselben Konventionen wie bei Dateinamen. Aktuelles Verzeichnis ist immer das Hauptverzeichnis: •...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Es gelten die Bedingungen für Dateinamen, siehe Kapitel „Dateien“. Rückgabewert: - keiner (Prozedur) Exceptions: apiTypeFault Unzulässiger Typ für filename. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 4.2 fs_remove fs_remove <filesystem>, <filename>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: fileNotFound Die angegebene Datei existiert nicht. apiTypeFault Unzulässiger Typ für filename. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 4.3 fs_mkDir fs_mkDir <filesystem>, <dirname> Erzeugt das angegebene Verzeichnis. Falls das Verzeichnis schon exis- tiert, hat die Prozedur keine Wirkung.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 4.4 fs_fileExists bool fs_fileExists(<filesystem>, <filename>) Prüft, ob die angegebene Datei existiert. Vorbedingung: - keine Parameter: filesystem Der Parameter wird ignoriert und sollte mit 0 angegeben werden. filename Es gelten die Bedingungen für Dateinamen, siehe Kapitel „Dateien“.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: filesystem Der Parameter wird ignoriert und sollte mit 0 angegeben werden. filename Es gelten die Bedingungen für Dateinamen, siehe Kapitel „Dateien“. Rückgabewert: Es wird die Dateigröße in Bytes zurückgegeben. Exceptions: apiTypeFault Unzulässiger Typ für filename.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Es wird ein Filehandle zum Zugriff auf die Datei (z. B. für fs_read und fs_write) zurückgegeben. Das Filehandle wird außerdem zum Schlie- ßen der Datei (fs_close) benötigt. Exceptions: apiTypeFault Unzulässiger Typ für filename.
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> 4.8 fs_write fs_write <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> 4.9 fs_truncate fs_truncate <filehandle>, <len>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 4.10 fs_close fs_close <filehandle> Schließt die Datei. Das angegebene Filehandle wird dadurch ungültig und darf nicht mehr verwendet werden. Vorbedingung: - Gültiges Filehandle mittels fs_open. Parameter: filehandle Das von fs_open 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> 5 LEDs Immer nur eine LED an: •...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 5.1 led_on led_on <index>, <color> Schaltet die LED auf die angegebene Farbe. Vorbedingung: - keine Parameter: index Nummer der LED color COLOR_GREEN bzw. COLOR_RED Rückgabewert: - keiner (Prozedur) Exceptions: apiValueRange Unzulässiger Wert für index oder color.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: - keine Rückgabewert: - keiner (Prozedur) Exceptions: - keine 5.3 led_blink led-blink <index>, <color>, <speed> Die LED blinkt mit der angegebenen Geschwindigkeit. Vorbedingung: - keine Parameter: index Nummer der LED color COLOR_GREEN bzw.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 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. 5.4 led_runningLight led_runningLight <from>, <to>, <color>, <speed> Läßt ein Lauflicht laufen.
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. 5.5 led_runningLightOutstanding led_runningLightOutstanding <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. 6 GPIO-Interface 6.1 GPIO_open busHandle = GPIO_open(<index>, <mode>, <level>) Öffnet eine der GPIO-Schnittstellen und initialisiert die Leitung. Der Mode wird wie angegeben eingestellt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - PIN_INPUT: diesen Pin als Eingang benutzen - PIN_ACTIVELOW: diesen Pin als Ausgang nutzen, jedoch nur low- aktiv treiben. - 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.
Seite 137
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - gültiges busHandle Parameter: busHandle Das von GPIO_open erhaltenen Bus-Handle. mode - PIN_INPUT: diesen Pin als Eingang benutzen - PIN_ACTIVELOW: diesen Pin als Ausgang nutzen, jedoch nur low- aktiv treiben.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 6.3 GPIO_set GPIO_set <busHandle>, <level> Setzt den GPIO-Pin auf den angegebenen Level. Vorbedingung: - gültiges busHandle Parameter: busHandle Das von GPIO_open erhaltene Bus-Handle. level Ausgangspegel für den Pin (0 oder 1) Rückgabewert:...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - gültiges busHandle Hinweis: Die Funktion steht nur zur Verfügung, wenn roloFlash die Leitung nicht selber treibt: - bei mode = PIN_INPUT - bei mode = PIN_ACTIVELOW und level = 1...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) 7.1 Versionsnummern etc. Name Wert / Bedeutung sys_companyName „halec <https://halec.de>“ sys_deviceName „roloFlash 2“ bzw. „roloFlash 2 AVR“ sys_softwareVersion Versionsnummer der Firmware sys_hardwareVersion Versionsnummer der Hardware sys_bootloaderVersion Versionsnummer des Bootloaders sys_imageVersion roloFlash erwartet das vom Compiler erzeugte Image in dieser Version.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) throw userException endif Hinweis: Für die Seriennummer wird intern eine vom Chiphersteller vorgegebene eindeutige Device-ID genutzt. 8 Sonstige 8.1 sys_setLogMode sys_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) Rückgabewert: - keiner (Prozedur) 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) Es werden die Parameter a, b etc. ausgedruckt. Die Anzahl der Para- meter ist beliebig. Der Ausdruck erfolgt an das Ende der Datei „LOG.TXT“. Wenn die Datei noch nicht existiert, dann wird sie erzeugt.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Vorbedingung: - 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. 8.4 sys_getSystemTime t = sys_getSystemTime Ermittelt die abgelaufe Zeit seit Systemstart in ms.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) - keine 8.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 8.6 sys_setCpuClock sys_setCpuClock <frequency>...
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Der Takt bei Start des roloFlash ist für niedrigen Energieverbrauch auf 24 MHz eingestellt. 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.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Ermittelt den aktuellen Takt des roloFlash in Hz. Vorbedingung: - keine Parameter: - keine Rückgabewert: Ausgelesener Takt in Hz. Exceptions: - keine 8.8 setBitBlock setBitBlock <destArray, sourceArray, position, length> Kopiert die mit length angegebene Anzahl an Bits vom Anfang des sour- ceArrays an die angegebene Bitposition im destArray.
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: destArray Array (Array of char, Array of int oder Array of long), in das die Daten an die angegebene Position kopiert werden sollen. sourceArray Array (Array of char, Array of int oder Array of long), aus dem die Da- ten von Position 0 an kopiert werden sollen.
Seite 149
2 VI roloFlash-API (Liste der Prozeduren und Funktionen) • Die Größe des gelieferten Arrays ist exakt ausreichend um die mit length angegebene Anzahl an Bits aufnehmen zu können. Unge- nutzte Bits sind auf 0 gesetzt. • Sollte das Source Array nicht die mit length angegebene Anzahl an Bits beinhalten, dann werden entsprechend weniger Bits kopiert.
2 VII Exceptions VII 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 VII 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.
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 154
2 VII Exceptions LEDs (Hinweis: die Fehlernummer ist exakt 200 größer als die entsprechende Exception des roloBasic: valueRange) imageNotFound Die microSD-Karte konnte zwar eingebunden werden, jedoch nicht die Datei RUN_V06.BIN gefunden werden. apiBadArgumentCount Ungültige Anzahl Argumente beim Aufruf einer Api- Funktion / Prozedur.
Seite 155
2 VII Exceptions resourceUnavailable Die angeforderte Ressource ist nicht verfügbar. Dieses kann beim Öffnen eines Busses passieren, falls schon ein anderer Bus geöffnet hat, der zumindest teilweise auf die gleichen Ressourcen zugreift. Insbesondere tritt diese Exception auf, wenn der gleiche Bus zweimal geöffnet wird.
2 VII Exceptions 4 Vom Benutzer ausgelöste Exceptions • Der Benutzer kann mittels throw selbst Exceptions auslösen. Diese können numerisch sein und bestehende Werte mitnutzen, z. B.: throw rangeError • Um vom Benutzer erzeugte Exceptions von den anderen Exceptions besser unterscheiden zu können, können andere Exceptionnummern verwendet werden.
2 VIII Bedeutungen von LED-Codes VIII 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 VIII 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 VIII 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 VIII 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 VIII 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 IX Spezifikationen IX Spezifikationen 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 STM32F0 Anschluß über SWD-Interface. STM32F030C6, STM32F030C8, STM32F030CC, STM32F030F4, STM32F030K6, STM32F030R8, STM32F030RC, STM32F031C4,...
2 IX Spezifikationen 3 Technische Daten • Unterstützte Controller der STM32-Serie über JTAG- oder SWD-In- terface: • STM32F0: alle Derivate (nur SWD-Interface) • STM32F1: alle Derivate • STM32F2: alle Derivate • STM32F3: alle Derivate • STM32F4: alle Derivate • STM32F7: alle Derivate •...