Seite 4
5.5 led_runningLightOutstanding..............92 6 Abfrage von roloFlash-Eigenschaften............93 6.1 Versionsnummern etc. ................93 6.2 sys_serialNumber...................93 7 Sonstige......................94 7.1 sys_setLogMode..................94 7.2 print......................96 7.3 delay.......................97 7.4 sys_getSystemTime................97 7.5 getTargetBoardVoltage................98 7.6 sys_setCpuClock..................99 7.7 sys_getCpuClock..................100 7.8 setBitBlock....................100 7.9 getBitBlock....................102 VII Exceptions.....................104 1 Exceptions des roloBasic................104 2 Exceptions des Dateisystems..............105 3 Vom Benutzer ausgelöste Exceptions............106 4 Exceptions des roloFlash................106 VIII Bedeutungen von LED-Codes..............110...
Seite 5
2 AVR 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“.
2 AVR 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 AVR II Verpackungsinhalt II Verpackungsinhalt Bitte überprüfen Sie sorgfältig den Lieferumfang: • roloFlash 2 AVR • 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 AVR III Beschreibung III Beschreibung 1 Programmier-Buchse Die 6-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 AVR III Beschreibung 1.2 Pin-Belegung Atmel ISP-Interface Wenn Sie das ISP-Interface benutzen, dann werden folgende Anschlüsse für den Bus verwendet: Signal Signal MISO targetboard MOSI Abbildung 2: Draufsicht auf ISP-Stecker eines Targetboards Die Pin-Belegung ist direkt für den von Atmel verwendeten ISP-Program-...
2 AVR III Beschreibung Die Pin-Belegung ist direkt für den von Atmel verwendeten TPI-Program- mierstecker passend, sie können roloFlash direkt und ohne Adapter auf- stecken. Hinweis: Es gibt folgende Adapter, um auf bestimmte übliche Programmierstecker- Belegungen zu adaptieren: Bezeichnung...
2 AVR III Beschreibung Signal Signal UPDI-DATA targetboard Abbildung 5: Draufsicht auf UPDI-Stecker eines Targetboards Die Pin-Belegung ist direkt für den von Atmel verwendeten UPDI-Pro- grammierstecker passend, sie können roloFlash direkt und ohne Adapter aufstecken.
2 AVR III Beschreibung 3 Spannungsbereich roloFlash wird vom Targetboard aus über Pin 2 (V ) versorgt. Dabei targetboard paßt roloFlash alle Datenleitungen auf diese Spannung an. Spannungsbereich: 2,0 Volt - 5,5 Volt 4 Elektrische Schutzmaßnahmen roloFlash ist geschützt gegen: •...
2 AVR III Beschreibung 7 Typischer Ablauf / Verwendung Der übliche Ablauf bei der Verwendung von roloFlash 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) 7.1 Vorbereitung der microSD-Karte am PC...
2 AVR III Beschreibung • Sie benennen die Datei in „RUN_V06.BIN“ um oder rufen statt „rbc_V06.exe“ die Batchdatei compile_V06.bat auf, welche aus „RUN_V06.BAS“ ein „RUN_V06.BIN“ erzeugt. Danach legen Sie die Da- tei „RUN_V06.BIN“ zusammen mit den vom Skript aus benötigten Datei- en (z.B.
2 AVR 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-Schnittelle ändert •...
Seite 17
2 AVR 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 und dann die microSD-Karte eingesteckt wird oder die microSD-Karte schon eingesteckt ist.
Seite 18
2 AVR 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.
2 AVR 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 Skript 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 20
2 AVR V Liste der mitgelieferten roloBasic- Skripte • 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. • Schreibt in die LOG.TXT-Datei Versionsnummern etc. des roloFlash: •...
Seite 21
2 AVR V Liste der mitgelieferten roloBasic- Skripte Funktion: • Startet ein Lauflicht von LED 1 zu LED 4, um einen Flash-Vorgang darzustellen. • Löscht eine eventuell vorhandene vorherige LOG.TXT-Datei. • Öffnet den jeweiligen Bus zum Target. • Liest aus der internen Datenbank des roloFlash spezifische Informati- onen für den von Ihnen angegebenen Controller aus, darunter die ID...
2 AVR V Liste der mitgelieferten roloBasic- Skripte • Passen Sie bitte anschließend in der Datei den Namen Ihres Targets und die Dateinamen der HEX-Datei an. Zusätzlich zur Angabe einer HEX-Datei für den Flashspeicher können Sie auch eine weitere HEX- Datei für das EEPROM angeben.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) VI roloFlash-API (Liste der Proze- duren und Funktionen) Mit API (Application Programming Interface) ist die Schnittstelle gemeint, durch die roloBasic Zugriff auf alle roloFlash-spezifischen Prozeduren und Funktionen erlangt. Sie können die Prozeduren und Funktionen direkt aufrufen.
2 AVR 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 AVR 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) DB_EEPROMSIZE: Angaben über die Größe des EEPROMs in Bytes. DB_EEPROMPAGESIZE: Angabe einer Page-Größe in Bytes für das Schreiben von EEPROM mit bestimmten Page-Größen (z. B. At- mel Xmega) DB_DEVICEID: Angabe der Device ID bzw. Signature (z. B. Atmel) (Array mit 3 Bytes).
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) • Die Verbindung zu einem Target-Handle kann auch wieder ge- schlossen werden. • Ein Bus kann auch geschlossen werden. In diesem Fall werden die betroffenen Leitungen wieder hochohmig. 2.1 bus_open busHandle = bus_open(<busType>, <index>, <speed>...)
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Falls die angegebene Frequenz nicht unterstützt wird, dann wird in- tern auf den nächsten möglichen Wert abgerundet. Rückgabewert: - ein busHandle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. target_open aufzurufen.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - keiner (Prozedur) Exceptions: invalidHandle Handle ist schon geschlossen apiTypeFault Unzulässiger Typ für busHandle 2.3 bus_setSpeed bus_setSpeed(<busHandle>, <speed>) Ändert bei einem bereits geöffneten Bus die Busgeschwindigkeit. Die ma- ximale Busgeschwindigkeit wird auf „speed“ begrenzt. Falls an diesem Bus ein Target angeschlossen ist, dann ergibt sich hieraus die Program- miergeschwindigkeit für das Target.
2 AVR 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 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - Busgeschwindigkeit in Hz Exceptions: apiTypeFault Unzulässiger Typ für busHandle 2.5 Atmel ISP-Bus Allgemeine Informationen zu Bussen finden Sie im übergeordneten Kapi- tel. Hier wird darauf aufbauend auf das spezifische Verhalten bei dem ISP-Bus eingegangen.
Seite 32
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) des roloFlash abhängig. 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...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - ein busHandle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. getTargetPresent 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) resetMode - PIN_ACTIVELOW: - Wenn kein Reset angelegt ist, ist die RST-Leitung hochohmig. - Wenn ein Reset angelegt ist, ist die RST-Leitung aktiv low. - PIN_ACTIVEHIGH: - Wenn kein Reset angelegt ist, ist die RST-Leitung hochohmig.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 2.6.1 bus_open(TPI, …) und verfügbare Geschwindigkeiten busHandle = bus_open(TPI, <index>, <speed>) Öffnet den TPI-Bus und initialisiert die Leitungen. Die maximale Busge- schwindigkeit wird auf „speed“ begrenzt. Setzt die Programmiergeschwin- digkeit für das Target.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 2.6.2 Reset-Mode einstellen bus_resetMode <busHandle> <resetMode> Setzt für den TPI-Bus den Reset-Mode. Nach dem Öffnen des TPI-Busses ist der ResetMode auf pushpull ge- setzt. D.h.: - Wenn kein Reset angelegt ist, ist die RST-Leitung aktiv high.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) - PIN_INVERTED: - Wenn kein Reset angelegt ist, ist die RST-Leitung aktiv low. - Wenn ein Reset angelegt ist, ist die RST-Leitung aktiv high. Hinweis: - Die resetModes PIN_ACTIVEHIGH und PIN_INVERTED sind gegen- über der üblichen Reset-Funktion invertiert und ziehen die Leitung für ei-...
Seite 41
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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. Bei maximaler CPU-Clock = 120 Mhz werden die folgenden Busge- schwindigkeiten unterstützt:...
Seite 42
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 107142 105633 104166 102739 101351 100000 Bei minimaler CpuClock = 24 Mhz werden die folgenden Busge- schwindigkeiten unterstützt: 1500000 750000 500000 375000 300000 250000 214285 187500 166666 150000 136363 125000...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 2.8 Atmel UPDI-Bus Allgemeine Informationen zu Bussen finden Sie im übergeordneten Kapi- tel. Hier wird darauf aufbauend auf das spezifische Verhalten bei dem UPDI-Bus eingegangen. 2.8.1 bus_open(UPDI, …) und verfügbare Geschwindigkei - busHandle = bus_open(UPDI, <index>, <speed>)
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) • Oder setzen Sie nach sys_setCpuClock die Busgeschwindigkeit erneut mittels bus_setSpeed. Rückgabewert: - ein Bus-Handle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. getTargetPresent aufzurufen. Exceptions: apiValueRange Unzulässiger Wert für index oder speed.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.1 target_open targetHandle = target_open(<busHandle>, <index>, <fami- ly>) 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. Falls das geprüft werden soll, kann target_getPresent verwendet werden.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - ein Target-Handle. Dieses kann benutzt werden, um weitere Funktionen wie z.B. target_getPresent aufzurufen. 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...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: invalidHandle Das Target-Handle ist schon geschlossen, oder der dazu gehörige Bus wurde schon geschlossen. apiTypeFault Unzulässiger Typ für targetHandle Parameter: targetHandle Das Target-Handle auf das anzusprechende Target Rückgabewert: 0 = kein Target gefunden...
Seite 49
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Hinweis Atmel PDI-Bus und Atmel UPDI-Bus: Unabhängig davon, ob das Target im RunMode oder ProgramMode ist, wird über den PDI-Bus/UPDI-Bus eine Abfrage gestartet. Das Target ver- bleibt im jeweiligen Modus. Ein Reset findet nicht statt.
2 AVR 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. Die Prozedur target_setMode wechselt den Betriebsmodus.
Seite 51
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Das Target-Handle auf das anzusprechende Target targetMode Angabe des gewünschten Modus: PROGRAMMODE: Dieser Modus ist Voraussetzung für die meisten weiteren Funktionen mit dem Target, insbesondere für das Beschrei- ben des Flashspeichers. Dabei kann je nach Targetfamilie das Tar- get gestoppt werden.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) • runMode: Der „Programming Enable Mode“ wird aufgehoben, der Reset wird weggenommen. Das Target läuft danach sofort los. • Befindet sich das das Target in dem „Programming Enable Mode“ und roloFlash wird abgezogen, dann verbleibt das Target in diesem Mode.
Seite 53
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Hinweis Atmel ISP-Bus: Der „Programming Enable Mode“ wird aufgehoben, der Reset wird wegge- nommen. Das Target läuft damit nach einem Reset los. RunMode Es wird kurzzeitig (100 ms) der Reset aktiviert, dann deaktiviert. Das Target läuft daher vom Anfang los.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Es wird kurzzeitig (100 ms) der Reset aktiviert, dann deaktiviert. Das Target läuft daher vom Anfang los. Der RunMode wird beibehalten. ProgramMode Der PDI-Bus wird deaktiviert, ein Reset ausgelöst (100 ms), anschlie- ßend der PDI-Bus aktiviert und der ProgramMode wieder hergestellt.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Ein guter Ansatzpunkt dazu sind die Beispielskripte. 3.6.1 target_setMemoryMap target_setMemoryMap <targetHandle>, <memType>, <memPro- perty> <value> Setzt für den angegeben Speichertyp das entsprechende Property auf den angegebenen Wert. Vorbedingung: - gültiges Target-Handle...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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. FunctionNotSupported Unzulässige Kombination von MemType und...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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 Rückgabewert: - gelesener Wert Exceptions: targetCommunication Die Kommunikation mit dem Target funktioniert nicht.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - 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. 3.7 Target löschen, schreiben, lesen und verifizieren 3.7.1 target_erase...
Seite 59
2 AVR 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 (optional) Die Art des Speichers, der gelöscht werden soll. Zulässige Werte: •...
2 AVR 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 61
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) memType 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 AVR 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 AVR 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.
2 AVR 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 AVR 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 66
2 AVR 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 AVR 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) In den Dokumenten des Herstellers werden über die verschiedenen Con- troller die Begriffe „Device ID“ und „Signature“ benutzt.Unabhängig davon wird bei roloFlash immer von einer Device ID ausgegangen. Vorbedingung: - gültiges Target-Handle - das Target muß...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: targetHandle Das Target-Handle auf das anzusprechende Target index 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 70
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) – Falls Sie einen durch Lock-Bits gesperrten Chip bearbeiten wollen, führen Sie als erstes ein target_eraseFlash aus. Dieses setzt auch die Lock-Bits wieder zurück. Vorbedingung: - gültiges Target-Handle - das Target muß im ProgramMode sein.
2 AVR 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 oder value invalidHandle Das Target-Handle ist schon geschlossen oder der Bus wurde schon geschlossen.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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 einen der Parameter. 3.9 Atmel TPI (TPI-Interface) Es werden alle Funktionen der Kapitel „Target allgemein“...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Ausgelesene Fuses bzw. Lock-Bits. 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: targetHandle 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) • EEPROM 3.10.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.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 3.10.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 AVR 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 AVR 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) • USERSIGNATURE Unterstützte memTypes beim Lesen: • FLASH • EEPROM • USERSIGNATURE 3.11.1 target_getDeviceId id = target_getDeviceId(<targetHandle>) Liest die Signature / Device ID des Targets. Anhand dieser lassen sich die verschiedenen Controller unterscheiden.
2 AVR 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 TargetHandle.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 10: Lock-Bits Hinweis: für die Lock-Bits kann auch die Konstante LOCK_BITS verwendet werden. Rückgabewert: Ausgelesene Fuses bzw. Lock-Bits. Exceptions: targetWrongMode Target ist nicht im "ProgramMode". targetCommunication Die Kommunikation mit dem Target funktioniert nicht.
Seite 83
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 4 Dateien Dateinamen: • Dateinamen müssen der 8.3-Regel folgen: „XXXXXXXX.YYY“. • Es sind nur die Zeichen „A“ - “Z“, “0“ - “9“, sowie „_“ und „-“ zulässig. • Es dürfen nur Großbuchstaben verwendet werden.
2 AVR 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 „Dateien“. Rückgabewert: - keiner (Prozedur) Exceptions: apiTypeFault Unzulässiger Typ für filename.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - keiner (Prozedur) 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>...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiTypeFault Unzulässiger Typ für dirname. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 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.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Ermittelt die Größe der angegebenen Datei. Vorbedingung: - Datei existiert. Parameter: filesystem Der Parameter wird ignoriert und sollte mit 0 angegeben werden. filename Es gelten die Bedingungen für Dateinamen, siehe Kapitel „Dateien“.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 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 ein Filehandle zum Zugriff auf die Datei (z. B. für fs_read und fs_write) zurückgegeben.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: Array of Byte mit den gelesenen Daten. Das Array hat die Größe von count. Falls nicht mehr genügend Daten zu lesen waren, ist das Array entsprechend kleiner. Wird am Dateiende oder darüber hinaus versucht zu lesen, wird ein leeres Array mit der Größe 0 zurückgegeben.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - keiner (Prozedur) 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>...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für filehandle. apiTypeFault Unzulässiger Typ für filehandle oder len. <diverse Exceptions des Siehe Kapitel „Exceptions des Dateisystems“. Dateisystems> 4.10 fs_close fs_close <filehandle> Schließt die Datei. Das angegebene Filehandle wird dadurch ungültig und darf nicht mehr verwendet werden.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Stellt sicher, dass alle Daten, die evtl. noch nicht auf die Karte geschrie- ben wurden, nun geschrieben werden. Es wird empfohlen, wenn Schreib- zugriffe auf die Karte stattfinden, diese Prozedur anschließend aufzurufen.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Nicht blockiernd: • Alle Prozeduren dieses Kapitels sind nicht blockierend. Das bedeutet, dass z. B. ein mit led_runningLight aktiviertes Lauflicht parallel zur weiteren Ausführung des roloBasic läuft. 5.1 led_on led_on <index>, <color>...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Schaltet alle LEDs aus. Vorbedingung: - keine Parameter: - keine Rückgabewert: - keiner (Prozedur) Exceptions: - keine 5.3 led_blink led-blink <index>, <color>, <speed> Die LED blinkt mit der angegebenen Geschwindigkeit.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) COLOR_GREEN bzw. COLOR_RED 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.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Rückgabewert: - keiner (Prozedur) 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>...
Mit folgenden Systemfunktionen / Systemkonstanten können Sie verschie- dene Informationen Ihres roloFlashs ermitteln. 6.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 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Beispiel: 1. Einmalig die Seriennummer ermitteln: print "serialNumber: ", sys_serialNumber, "\r\n" Aus Log-File entnehmen: serialNumber: 1B9FE86E90B7660F08E387B 2. Ihr Skript soll nur auf diesem roloFlash laufen, andernfalls mit einer Ex- ception abbrechen: if sys_serialNumber <>...
Seite 100
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) - keine Parameter: logMode: LOGMODE_OFF: print-Ausgaben werden unterdrückt. LOGMODE_NORMAL: Die Datei wird geöffnet und bleibt geöffnet. Print-Ausgaben werden zwischengespeichert und gelegentlich in die Datei geschrieben. Am Ende des Skripts werden noch gespeicherte Daten geschrieben und die Datei geschlossen.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für logMode. apiTypeFault Unzulässiger Typ für logMode. 7.2 print print <a>, <b>, ... Es werden die Parameter a, b etc. ausgedruckt. Die Anzahl der Para- meter ist beliebig.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 7.3 delay delay <duration> Es wird die angegebene Zeitdauer in ms abgewartet. Erst danach kehrt die Prozedur zurück. Vorbedingung: - keine Parameter: duration Zeitangabe in ms, die gewartet werden soll.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Parameter: - keine Rückgabewert: Systemzeit in [ms]. Exceptions: - keine 7.5 getTargetBoardVoltage u = getTargetBoardVoltage Ermittelt die Spannung in mV, die das Targetboard liefert. Vorbedingung: - keine Parameter: - keine Rückgabewert:...
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 7.6 sys_setCpuClock sys_setCpuClock <frequency> Es wird der interne CPU-Takt des roloFlash geändert. • ein höherer Takt benötigt mehr Energie vom Targetboard • ein niedriger Takt benötigt evtl. längere Zeit, um das roloBasic- Skript inkl.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) Exceptions: apiValueRange Unzulässiger Wert für frequency. apiTypeFault Unzulässiger Typ für frequency. 7.7 sys_getCpuClock u = sys_getCpuClock Ermittelt den aktuellen Takt des roloFlash in Hz. Vorbedingung: - keine Parameter: - keine Rückgabewert:...
Seite 106
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) • Aus dem SourceArray wird immer von Position 0 an gelesen. • Sollte das Source- oder das DestArray nicht die mit length angege- bene Anzahl an Bits beinhalten bzw. aufnehmen können, dann wer- den entsprechend weniger Bits kopiert.
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) 7.9 getBitBlock destArray = getBitBlock <sourceArray, position, length> Liefert ein Array, in dem die mit length angegebene Anzahl an Bits aus dem destArray von der angegebenen Position enthalten sind. •...
Seite 108
2 AVR VI roloFlash-API (Liste der Prozeduren und Funktionen) destArray mit den kopierten Daten. Die Größe richtet sich nach der ange- gebenen length. Der Typ enspricht dem Typ vom sourceArray (Array of char, Array of int oder Array of long).
2 AVR 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 AVR 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...
2 AVR VII Exceptions truncateError Das Kürzen einer Datei mittels fs_truncate ist fehlgeschlagen. illegalCluster Probleme innerhalb des Dateisystems. Das Dateisystem sollte auf dem PC auf Konsistenz geprüft werden. fileLocked Es wurde versucht, eine bereits geöffnete Datei ein zweites Mal zu öffnen. Evtl. wurde ein fs_close vergessen.
Seite 112
2 AVR VII Exceptions exceptionIsNotANumber Es wurde eine Exception erzeugt, die keine Zahl ist, und innerhalb des roloBasic nicht mehr gefangen wurde. In diesem Fall wird die Original-Exception verworfen und durch diese Exception ersetzt. Das kann nur durch vom Benutzer erzeugte Exceptions auftreten, da alle anderen Funktionen ausschließlich die hier beschriebenen numerischen...
Seite 113
2 AVR VII Exceptions targetCommunication Ein Kommunikationsfehler mit dem Target. targetMemoryLayout Das Speicherlayout des Controllers ist nicht angegeben worden (target_setMemoryMap). eraseError Das Löschen des Targets hat nicht funktioniert. targetVerify Beim Zurücklesen von Daten wurde ein Unterschied festgestellt. targetAlignment Das Speicheralignment des Targets wurde nicht eingehalten.
Seite 114
2 AVR VII Exceptions valueNotAllowed Es wurde versucht, einen unzulässigen Wert zu verwenden (siehe target_setMemoryMap). timeoutError Die aufgerufene Funktion dauert zu lange. Evtl. liegt ein Problem mit dem Target vor. Falls nach einem solchen Fehler mit dem Target weitergearbeitet werden soll, kann es nötig sein, das Target-Handle vorab zu schließen und neu...
2 AVR 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 AVR 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 AVR 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 AVR 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 AVR 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 AVR IX Spezifikationen IX Spezifikationen 1 Unterstützte Controller von Atmel Folgende Controller sind in der Datenbank bekannt. Die hier angegebenen Namen können mit DB_getHandle verwendet werden. 1.1 AVR (ISP-Interface) Anschluß über ISP-Interface. Unterstützte Controller: AT90CAN128, AT90CAN32, AT90CAN64, AT90PWM1,...
Seite 124
2 AVR IX Spezifikationen • Programmierung des Mikrocontrollers über 6-polige ISP-/TPI-/PDI-/ UPDI-Buchse. Diese kann direkt auf den 6-poligen ISP-, TPI-, PDI- oder UPDI-Stecker aufgesteckt werden. Alternativ steht ein Adapter auf den 10-poligen ISP-Stecker, sowie ein 1:1-Adapter für den Ein- satz von Flachbandkabeln zur Verfügung.