Progswitch für mySmartUSB unter Linux
Vor gut 2 Jahren bekam ich, gemäß meines Wunschzettels, zu Weihnachten eine USB-AVR-Experimentierplatine der Firma myAVR mitsamt dem kleinen USB-Prommer mySmarUSB. Beides hat mich bisher tatkräftig im Programieren von ATMELs kleinen Mikrocontrollern unterstützt und bisher auch immer fehlerfrei gearbeitet. Der Prommer wirkt dabei als RS232-zu-USB-Umsetzer und läuft daher auch problemlos unter Windows und Linux. Nachdem Komplettumstieg auf Linux, war eine schnelle Umstellung von WinAVR zu KontrollerLab als Entwicklungsumgebung notwendig, was auch kein größeres Problem darstellte. Da ich natürlich alle Funktionen, Daten-/Programmiermodus und Resetfunktionen, des Prommers nutzen wollte musste ich leider feststellen, dass das Programm myQuickprog leider nicht unter Linux lauffähig war. Sicherlich hätte man mit wine emulieren können, jedoch erscheint mir das eher halbherzig. Im myAVR-Forum fand ich dann ein kleines Python-Skript das einen schnellen Wechsel der Betriesmodi erlaubt.
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import serial
import sys
# Kotrollsequenz gemäß technischer Beschreibung von mySmartUSB
controlseq = 'xe6xb5xbaxb9xb2xb3xa9'
if (len(sys.argv) == 1):
print 'Usage: progswitch.py mode '
print 'tp : Programming mode'
print 'td : Data mode'
else:
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1)
ser.write(controlseq + sys.argv[1])
Kleines Manko am Rande, es funktioniert bei mir nur auf dem Laptop, beim Desktop regt sich nix. Also blieb nur eines, das Skript auf eine Hochsprache zu portieren! Gesagt getan, da ich mich so oder so in die Programmierung der seriellen Schnittstelle unter Linux einarbeiten wollte, habe ich das Skript nach C portiert. Das resultierende Programm „progswitch“ verfügt über Argumentswitches für die jeweiligen Modis und erlaubt das angeben eines Interfaces. In etwa sieht das Ganze dann so aus:
progswitch -d -i/ttyUSB0
Wobei d : Datenmode und :i Interfacedarstellen und i zwangsweise vorhanden sein muss. Sollte jemand auf die Idee kommen zwei Modis anzugeben, so wird immer der letzte ausgewertet und behandelt. Unter Fedora habe ich zusätzlich eine udev-Policy erstellt, die die Schnittstelle automatisch mit den Rechten 666, also lesen und schreiben für alle erstellt und nur die Sillicon Labs RS232-Konverter behandelt. „Für etwaigen Schäden übernehme ich keine Gewähr oder Haftung. Sollte etwas an eurem System oder eurer Hardware beschädigt werden, so geschieht das Nutzen des Programms und der hier dargestellten Informationen auf eigene Gefahr!“