TBK 4U :-)



SiUtilEx

Der Umgang mit den Controllern aus dem Hause Silicon Laboratories gestaltet sich dank der verfügbaren Utilities sehr einfach. Zum Programmieren der Controller gibt es das CommandLine-Utility 'FlashUtilCL'. Wem das nicht reicht, macht sich auf Basis der SiUtil.dll (AppNote AN117) was eigenes.

Beides funktioniert gut, lässt aber für meinen Geschmack etwas an Komfort vermissen. Aus diesem Grunde habe ich ein kleines COM-Object um die originale SiUtil.dll herum entworfen. Dieses ermöglicht mir, die Controller auch aus kleinen Scripten heraus zu flashen.

Ein kleines Beispiel:

' test.vbs
Dim oCygnal
Set oCygnal = CreateObject("SiUtilEx.SiUtilEx")

oCygnal.CommPort = 1
oCygnal.DisableDialogBoxes = False
oCygnal.Connect 1
oCygnal.Download "c:\test.hex", True
    

Das fasst sich schon besser an, lässt sich flüssig lesen (besser als beispielsweise 'FlashUtilCL.exe FLASHErase 1 1' (welche '1' war jetzt wofür?)).

Außerdem entfällt die leidige Fehlerprüfung, wie man sie z.B. in Batch-Files antrifft. Das obige Script wirft einfach eine Exception, das war's. Und wenn es unbedingt auf der Console laufen soll, ist das durch Verwendung von cscript auch kein Problem.

Verglichen mit dem C-Style API gibt es nur kleine Unterschiede in der Anwendung (ist ebenfalls dem beigefügten Help-File zu entnehmen): Ich ging davon aus, dass sich die Parameter für die Portnummer und das Disablen der DialogBoxen nicht ständig ändern. Daher sind diese dem Object als Properties hinzugefügt; sie werden bei den Methoden-Aufrufen weggelassen.

Beachtung finden müssen auch die Methoden, die im Original mit Pointern hantieren (SetMemory/ GetMemory). Hier werden keine Pointer mehr, sondern Byte-Arrays verwendet. Das ist nun in Scripten ein Problem, da alle Variablen vom Typ VARIANT sein müssen. Da es aber meiner Meinung nach keinen Sinn hat, VARIANT-Arrays zu verwenden, muss damit gelebt und z.B. VB/ VBA anstelle von VBS/ JS (oder whatever) verwendet werden.

Damit das Ganze funktionieren kann, müssen sich die Dlls SiUtil.dll (original) und SiUtilEx.dll (COM-Wrapper) im selben Verzeichnis befinden. Die Dll SiUtilEx.dll ist zusätzlich zu registrieren, aber das wird wohl kaum eine Überraschung sein. Dazu geben Sie auf der CommandLine folgendes ein:
regsvr32 siutilex.dll

VB oder VBA User sollten zusätzlich einen Verweis auf SiUtilEx.dll hinzufügen.

BTW: Getestet wurde unter W2K mit dem EC2- und EC3-Programmer, Device C8051F320/340/345.

SiUtilEx, inklusive Source (C++) und Sample (VB)
Download Now!

AppNote 117
Download Now!

Software zur AppNote 117
Download Now!