Für den Fall, daß Ihre benötigen Dateien zusammen kleiner als die Flash-Disk sind (siehe Handbuch, aktuell 640 kByte für v07.AA), können Sie alles auf die Flash-Disk kopieren und anschließend roloFlash ohne SD-Karte benutzen. Dies bringt Ihnen folgenden Vorteile:
- Die SD-Karte kann nicht entfernt, verloren oder ausgetauscht werden.
- Ihre Hex-Datei befindet sich nicht auf einer SD-Karte.
- Damit gibt es weniger Fehlerquellen und eine erhöhte Sicherheit für Ihre Daten.
Dazu empfehlen wir folgenden Ablauf:
Testen Sie Ihren Ablauf erst wie gewohnt mit einer SD-Karte. Sie haben eine RUN.BIN auf der SD-Karte zum Ausführen, wahrscheinlich auch eine oder mehrere Dateien zum Flashen. Zur Vereinfachung gehen wir im Folgenden von FLASH.HEX aus.
Erstellen Sie auf der SD-Karte einen Ordner „TO_RF” und kopieren Sie alle benötigten Daten aus dem vorherigen Schritt in diesen Ordner.
Erstellen Sie auf der SD-Karte im Hauptverzeichnis eine weitere RUN_V07.BIN, die die Daten aus dem „TO_RF”-Ordner in die Flash-Disk kopieren soll. Dazu finden Sie hier am Ende des Dokuments im Anhang die Prozedur copyFile, die Sie in eine roloBasic-Datei z.B. wie folgt kopieren:
! -- copy "FLASH.HEX" from SD-card (folder TO_RF) to FlashDisk (root folder):
copyFile SDCARD, "TO_RF/FLASH.HEX", FLASHDISK, "FLASH.HEX"
! -- copy "RUN_V07.BIN" from SD-card (folder TO_RF) to FlashDisk (root folder):
copyFile SDCARD, "TO_RF/RUN_V07.BIN", FLASHDISK, "RUN_V07.BIN"
Übersetzen Sie die roloBasic-Datei in die Datei RUN_V07.BIN im Hauptverzeichnis der SD-Karte.
Legen Sie die SD-Karte in roloFlash ein und führen die im Hauptverzeichnis erzeugte RUN_V07.BIN mit Hilfe eines beliebigen Targets einmal aus.
Entfernen Sie die SD-Karte und testen nun den Ablauf ohne SD-Karte.
Eine eventuell auf der Flash-Disk befindliche RUN_V07.BIN wird vorranging vor einer RUN_V07.BIN auf der SD-Karte ausgeführt.
Dazu gibt es zwei Möglichkeiten:
Es gibt in der RUN_V07.BIN auf der Flash-Disk eine Prüfung, ob eine SD-Karte mit einer RUN_V07.BIN existiert. Falls ja, wird die Ausführung dort gestartet. Dies kann z.B. so erreicht werden:
if mediaExists(SDCARD)
if fileExists(SDCARD, "RUN_V07.BIN")
chain(SDCARD, "RUN_V07.BIN")
endif
endif
Sie flashen die roloflash-Firmware erneut auf den roloFlash. Dabei wird der komplette Inhalt der Flash-Disk und Flash-Vars gelöscht.
procedure copyFile fsSrc, filenameSrc, fsDst, filenameDst
sys_setCpuClock 120000000
dataSize = fs_fileSize(fsSrc, filenameSrc)
fs_create fsDst, filenameDst, dataSize
src = fs_open(fsSrc, filenameSrc)
dst = fs_open(fsDst, filenameDst)
blockSize = 512
filePos = 0
retval = 1
do while dataSize > 0
mySize = blockSize
if mySize > dataSize
mySize = dataSize
endif
a = fs_read(src, filePos, mySize)
fs_write dst, filePos, a
filePos = filePos + mySize
dataSize = dataSize - mySize
loop
fs_close dst
fs_close src
end