Automatischer SWD-Programmer

Gast #4305908
Lesenswert?

Hallo,

ich  bin auf der Suche nach einem "automatischen" SWD-Programmer. Ideal 
wäre es in einem USB-Stick Format.
Also Ziel sollte sein, dass man den Programmer einmalig über einen PC 
mit der neuen Firmware beschreibt, ihn anschließend an den SWD Port 
steckt und der Controller wird automatisch geflasht.
In meinem Fall bräuchte ich ihn für einen STM32F429.

Ich habe jetzt schon ne Weile hier im Forum gesucht aber leider nichts 
gefunden. Ich kann mir aber nicht vorstellen, dass darauf bisher noch 
keiner gekommen ist.

Gruß
Flo
#4305923
Lesenswert?

Persönliche Seite #4305936
Lesenswert?

Bei meinem alten Arbeitgeber haben wir früher diese von E-Lab verwendet. 
Die SW wird auf eine SD-Karte geladen die Programmierung wird entweder 
über einen Taster gestartet oder über einen digital IO am Programmer.

http://www.e-lab.de/programmer/upp1.html

Sobald man das Ding mittels Bastelsoftware vom Hersteller eingerichtet 
hat laufen die sehr zuverlässig und schnell.
Gast #4306014
Lesenswert?

Vielen Dank schon mal für die Antworten.

Da sind ein paar interessante Lösungen dabei aber die sind wahnsinnig 
teuer.

Wenn ich mir da folgendes ansehe müsste das doch auch günstiger gehen.

http://www.ebay.de/itm/ST-Link-V2-Mini-Metal-Shell-STM8-STM32-Emulator-Downloader-Programming-Unit-/251708537849?hash=item3a9aff7bf9

Da kann doch nicht soviel drin sein. Ein Platinchen, ein Controller, ein 
Flash und ein Gehäuse mit Taster. Das wars ja dann auch schon fast. Vom 
Materialpreis her müsste man da doch weit unter 10€ bleiben.

Oder es gibt einfach keinen Markt dafür ?!?
#4306041
Lesenswert?

Flo schrieb:
> Da kann doch nicht soviel drin sein. Ein Platinchen, ein Controller, ein
> Flash und ein Gehäuse mit Taster. Das wars ja dann auch schon fast. Vom
> Materialpreis her müsste man da doch weit unter 10€ bleiben.

10 EUR kostet Dich schon die nötige SD Karte fast allein. ;-)
Und der Controller wäre entweder sehr speziell für wenige MCU Typen 
ausgelegt oder muss was größeres sein.

> Oder es gibt einfach keinen Markt dafür ?!?

Der ist ziemlich überschaubar.

Aber man könnte sich sowas auch mit einem Raspberry Pi und OpenOCD 
selbst stricken, dabei wäre der Materialaufwand überschaubar.
#4306045
Lesenswert?

Diese Dongles (die es übrigens auch schon für 2,5€ aus China gibt), ist 
wie bei den Discovery-Boards ein STM32F103 drin, der das SWD-Interface 
zur Verfügung stellt. Die Firmware für diese Dinger ist nur in 
Verschlüsselter Form zu bekommen 
http://www.taylorkillian.com/2013/01/retrieving-st-linkv2-firmware-from.html 
und das Auslesen aus dem Controller ist geblockt.
Irgendwie ist es den Chinesen wohl gelungen trotzdem daran zu kommen und 
nun findet sie sich in diesen kleinen Dongles wieder (welche übrigens 
wunderbar funktionieren).

Das SWD-Protokoll ist aber offen, es hindert dich also niemand daran es 
selbst zu implementieren
Gast #4306149
Lesenswert?

Ich entwickle gerade eine Steuerung. Diese soll in mittleren Stückzahlen 
weltweit verkauft werden. Dabei war mein Ziel das Flashen für jedermann 
(also auch total Elektronikfremde) so einfach wie möglich zu machen.
Das geht jetzt ganz einfach über einen USB-Stick. Software auf den Stick 
kopieren, in die Steuerung stecken, warten, piep-piep und fertig. Total 
einfach! Damit bin ich unabhängig von irgendwelchen Apps oder 
PC-Software. Damit verbinde ich nur Probleme(Windows, OSX, Android, 
iPhone,...).

Allerdings braucht es hierfür eine Flash-Software, die einmalig in den 
Controller geflasht wird. Was, wenn die mal Bugs hat oder erweitert 
werden soll? Dafür brauche ich dann entweder SWD oder den ST-Bootloader 
mit DFU. Für den Bootloader muss ich dem Kunden aus "Irgendwo" wieder 
aufwändig erklären, wo er die PC-SW herbekommt und wie er vorgehen soll. 
Deshalb habe ich an SWD gedacht. Und das dann wieder so einfach wie 
möglich - natürlich :-)
Außerdem muss ich in der Produktion die Flash-Software auf alle Kisten 
flashen. Auch dafür wäre es praktisch. Und man braucht dafür keine 
besondere Ausbildung.

Theoretisch wäre das gleiche Konzept auch über DFU denkbar. Hier hat man 
wieder das Problem wie man in den Bootloader kommt. Entweder 
aufschrauben und Jumper (Boot0) setzen oder per SW in den Bootloader 
springen. Und was, wenn gar keine SW drauf ist? :-)


@Jim Meba: Wozu denn eine SD-Karte? Die 2 MB für meine SW bekomme ich 
doch über USB auch auf einen Flash-Baustein auf der Platine.
#4306159
Lesenswert?

Flo schrieb:
> Für den Bootloader muss ich dem Kunden aus "Irgendwo" wieder
> aufwändig erklären, wo er die PC-SW herbekommt und wie er vorgehen soll.

Wieso? Du kannst ihm doch ein Tool bauen das nur aus einer einzigen .exe 
besteht und nur einen Button hat: "update", dann muss er keine andere 
Software von Drittherstellern irgendwo herbekommen oder irgendwie anders 
vorgehen als nur anstöpseln und auf den Button klicken.
#4306163
Lesenswert?

Flo schrieb:
> Ich entwickle gerade eine Steuerung. Diese soll in mittleren Stückzahlen
> weltweit verkauft werden. Dabei war mein Ziel das Flashen für jedermann
> (also auch total Elektronikfremde) so einfach wie möglich zu machen.
> Das geht jetzt ganz einfach über einen USB-Stick. Software auf den Stick
> kopieren, in die Steuerung stecken, warten, piep-piep und fertig. Total
> einfach! Damit bin ich unabhängig von irgendwelchen Apps oder
> PC-Software. Damit verbinde ich nur Probleme(Windows, OSX, Android,
> iPhone,...).
Du könntest aber alternativ auch das Update via SD-Karte machen. Ob man 
nun ein File auf USB-Stick oder SD-Karte kopiert ist doch eigentlich 
wurst. Ein SD-Kartenleser hat doch fast jedes Notebook eingebaut. Da 
brauchst du halt nur ein paar freie Pins an deinem Controller (SPI oder 
SoftSPI).
Dann auf deinem Controller ein Bootloader rauf, der via SD-Karte 
(FAT16/FAT32) das Update-File liest und dann flasht.
#4306171
Lesenswert?

Flo schrieb:
> Dabei war mein Ziel das Flashen für jedermann
> (also auch total Elektronikfremde) so einfach wie möglich zu machen.

Ok. Das klassische Aufgabengebiet eines Bootloaders.

Was hilft Dir da ein spezieller automatisierter Hardware-Programmer? Den 
muss der Kunde ja auch erst mal haben. Wenn Du ihn gleich mitlieferst, 
verliert ihn der Kunde (glaub mir, wie häufig bei uns in der Firma 
Zubehör nachbestellt wird, welches wir bei den Produkten immer gleich 
mitliefern...)

> Allerdings braucht es hierfür eine Flash-Software, die einmalig in den
> Controller geflasht wird. Was, wenn die mal Bugs hat oder erweitert
> werden soll?

Auch Dein automatischer SWD-Programmer kann Bugs haben oder muss 
erweitert werden...

> Außerdem muss ich in der Produktion die Flash-Software auf alle Kisten
> flashen. Auch dafür wäre es praktisch. Und man braucht dafür keine
> besondere Ausbildung.

Na das ist doch überhaupt kein Problem: Du gibst den Leuten in der 
Produktion ne bootbare CD mit nem Mini-Linux drauf. Das bootet quasi auf 
jedem normalen PC und erkennt automatisch den angesteckten Controller 
und flasht den. Dann führt es automatisch auch noch ein paar Tests aus 
und sagt dann ok. Das ist den Leuten aus der Produktion ein ein paar 
Minuten erklärt und vorgeführt. Ganz dumm sind die normalerweise auch 
nicht.

> Theoretisch wäre das gleiche Konzept auch über DFU denkbar. Hier hat man
> wieder das Problem wie man in den Bootloader kommt. Entweder
> aufschrauben und Jumper (Boot0) setzen.

Ein von außen erreichbaren (z.B. mit Büroklammer eindrückbaren) Taster 
anbringen. Mit dem kann der Benutzer dann das Boot0 aktivieren.
Gast #4306180
Lesenswert?

Flo schrieb:
> Ich entwickle gerade eine Steuerung. Diese soll in mittleren Stückzahlen
> weltweit verkauft werden. Dabei war mein Ziel das Flashen für jedermann
> (also auch total Elektronikfremde) so einfach wie möglich zu machen.

Einen gesockelten µC verwenden?!
Zum Update den alten raus und einen neuen rein?

Alternativ eben mit einem Bootloader per RS232 oder Ethernet (ja, das 
geht auch mit einem AVR über TFTP)
bei letzterem kann man die Updates sogar automatisch ohne zutun des 
Kunden verteilen. Ideal für die 'Freunde von Bananenfirmware (die reift 
erst beim Kunden...)
#4306186
Lesenswert?

> Ein von außen erreichbaren (z.B. mit Büroklammer eindrückbaren) Taster
> anbringen. Mit dem kann der Benutzer dann das Boot0 aktivieren.

Anbei ein kleiner Schaltungsausschnitt den ich für diese Funktion schon 
mehrfach erfolgreich verwendet habe:

Ein kurzer Druck auf den Taster löst einen normalen Reset aus. Wenn Du 
länger als 3 Sekunden draufbleibst und dann loslässt, wird der Reset 
beendet und der im Controller integrierte Bootloader gestartet.
Angehängte Dateien:
Gast #4306188
Lesenswert?

Ja genau!Im Prinzip hat er die richtige Lösung. Nur brauche ich das für
nen STM32.

Gerd E. schrieb:
> Na das ist doch überhaupt kein Problem: Du gibst den Leuten in der
> Produktion ne bootbare CD mit nem Mini-Linux drauf. Das bootet quasi auf
> jedem normalen PC und erkennt automatisch den angesteckten Controller
> und flasht den. Dann führt es automatisch auch noch ein paar Tests aus
> und sagt dann ok. Das ist den Leuten aus der Produktion ein ein paar
> Minuten erklärt und vorgeführt. Ganz dumm sind die normalerweise auch
> nicht.

Für die Produktion ginge das noch. Leider sind meine PC-SW Kenntnisse 
begrenzt. Ich würde dafür ewig brauchen. Beim Kunden wird´s dann wieder 
zu kompliziert. Funktioniert dein Programm dann auf jedem PC mit jedem 
Betriebssystem - auch OSX?
Gast #4306195
Lesenswert?

Gerd E. schrieb:
>> Ein von außen erreichbaren (z.B. mit Büroklammer eindrückbaren) Taster
>> anbringen. Mit dem kann der Benutzer dann das Boot0 aktivieren.
>
> Anbei ein kleiner Schaltungsausschnitt den ich für diese Funktion schon
> mehrfach erfolgreich verwendet habe:
>
> Ein kurzer Druck auf den Taster löst einen normalen Reset aus. Wenn Du
> länger als 3 Sekunden draufbleibst und dann loslässt, wird der Reset
> beendet und der im Controller integrierte Bootloader gestartet.

Interessante Schaltung. Den Schalter müsste ich aber irgendwie über nen 
Reedkontakt schalten. Ist ne IP65 Steuerung.
#4306216
Lesenswert?

Flo schrieb:
>> Na das ist doch überhaupt kein Problem: Du gibst den Leuten in der
>> Produktion ne bootbare CD mit nem Mini-Linux drauf. Das bootet quasi auf
>> jedem normalen PC und erkennt automatisch den angesteckten Controller
>> und flasht den. Dann führt es automatisch auch noch ein paar Tests aus
>> und sagt dann ok. Das ist den Leuten aus der Produktion ein ein paar
>> Minuten erklärt und vorgeführt. Ganz dumm sind die normalerweise auch
>> nicht.
>
> Für die Produktion ginge das noch. Leider sind meine PC-SW Kenntnisse
> begrenzt. Ich würde dafür ewig brauchen.

ok, das ist ein Argument. Für die Produktion würde ich dann auf eine der 
gängigen kommerziellen Programmierlösungen setzen. Die 
Elektronikfertiger haben normalerweise was fertiges in die Richtung und 
Du musst denen nur das .hex-File geben. Frag Deinen einfach mal, das 
können die sicher.

> Beim Kunden wird´s dann wieder
> zu kompliziert. Funktioniert dein Programm dann auf jedem PC mit jedem
> Betriebssystem - auch OSX?

Nein, der Trick dabei ist ja, daß gar nicht das OS des PC gestartet und 
verwendet wird, sondern das Mini-Linux von der CD. Das erkennt 
automatisch die Hardware und startet einen Prozess der das Flashen und 
Testen übernimmt.

Meine Idee war, das für die Produktion zu verwenden. Sowas könnte man 
natürlich auch dem Kunden geben. Aber ich würde als Kunde nicht meinen 
PC mit irgendeiner CD von irgendeinem Hersteller booten. Denn da könnte 
auch Schadsoftware oder ein Virus drauf sein der sich danach dann im PC 
ausbreitet.
Gast #4306230
Lesenswert?

Gerd E. schrieb:
> Flo schrieb:
>> Den Schalter müsste ich aber irgendwie über nen
>> Reedkontakt schalten. Ist ne IP65 Steuerung.
>
> Und wie kommt da dann USB rein? Das ist doch normal auch nicht
> wasserdicht.

Ich hab den über einen DSub-Stecker herausgeführt ;-) Da sind dann auch 
noch andere I/Os dran.
#4306234
Lesenswert?

Flo schrieb:
> Gerd E. schrieb:
>> Flo schrieb:
>>> Den Schalter müsste ich aber irgendwie über nen
>>> Reedkontakt schalten. Ist ne IP65 Steuerung.
>>
>> Und wie kommt da dann USB rein? Das ist doch normal auch nicht
>> wasserdicht.
>
> Ich hab den über einen DSub-Stecker herausgeführt ;-)

Ist der direkt frei von außen erreichbar oder unter ner IP65-Gummikappe 
oder ähnlichem?

Wenn nicht: wenn der nass wird, würde ich mir Gedanken über Kriechströme 
etc. machen...

> Da sind dann auch
> noch andere I/Os dran.

Du hast dann also ne spezielle Kabelpeitsche die das dann auf die normal 
dafür verwendeten Stecker/Buchsen umsetzt.

Ist da noch nen Pin frei? Dann könntest Du da den Taster anschließen.
Gast #4306237
Lesenswert?

Wer schon mal Elektronik an Elektronikfremde verkauft hat, der weiß, 
dass alles was nur in irgendeiner weise Kompliziert sein könnte, zu 
einem Telefonat führt.
Ich habe nicht vor aufgrund dieser Problematik einen Servicemitarbeiter 
einzustellen.

Mein Ziel ist es - notfalls! - die komplette SW austauschen zu können.

Da es für mein Problem scheinbar noch keine vernünftige und bezahlbare 
Lösung gibt, werde ich das mal in einer ruhigen Minute evaluieren. Es 
ist klar, dass sich so eine Entwicklung nur im großen Stil lohnen würde. 
Ich denke aber schon, dass es für eine clevere Lösung einen Markt geben 
könnte.
Gast #4306243
Lesenswert?

Gerd E. schrieb:
> Ist da noch nen Pin frei? Dann könntest Du da den Taster anschließen.

Dafür möchte ich ungern einen Pin spendieren. Ich weiß ja nicht wofür 
ich den noch brauchen kann. Außerdem gehen die ersten Steuerungen in ein 
paar Wochen raus. Vielleicht bei einem Redesign. Aber so ein SMD Mini 
Reedkontakt wär doch ne schöne Lösung, oder? Hat damit schon jemand 
Erfahrung?
#4306357
Lesenswert?

Flo schrieb:
> Gerd E. schrieb:
>> Ist da noch nen Pin frei? Dann könntest Du da den Taster anschließen.
>
> Dafür möchte ich ungern einen Pin spendieren. Ich weiß ja nicht wofür
> ich den noch brauchen kann. Außerdem gehen die ersten Steuerungen in ein
> paar Wochen raus.

Das passt irgendwie nicht zusammen. Die Belegung der Pins an Deinem 
DSub-Stecker ist doch über das Layout festgelegt und kann damit nach der 
Auslieferung nicht mehr verändert werden.

> Aber so ein SMD Mini
> Reedkontakt wär doch ne schöne Lösung, oder? Hat damit schon jemand
> Erfahrung?

Du musst den innen sehr nah ans Gehäuse ranbringen, sonst kannst Du den 
durchs Gehäuse durch nicht betätigen. Mehr als ein paar Millimeter ist 
nicht. Außerdem solltest Du den Magnet irgendwie unverlierbar am Gehäuse 
befestigen. Wenn Du den nur so als loses Zubehörteil mitlieferst, werden 
die Kunden den im Fall der Fälle nicht mehr finden.
Gast #4307425
Lesenswert?

Gerd E. schrieb:
>> Dafür möchte ich ungern einen Pin spendieren. Ich weiß ja nicht wofür
>> ich den noch brauchen kann. Außerdem gehen die ersten Steuerungen in ein
>> paar Wochen raus.
>
> Das passt irgendwie nicht zusammen. Die Belegung der Pins an Deinem
> DSub-Stecker ist doch über das Layout festgelegt und kann damit nach der
> Auslieferung nicht mehr verändert werden.

Bei einem Redesign schon :-)

Gerd E. schrieb:
> Du musst den innen sehr nah ans Gehäuse ranbringen, sonst kannst Du den
> durchs Gehäuse durch nicht betätigen. Mehr als ein paar Millimeter ist
> nicht. Außerdem solltest Du den Magnet irgendwie unverlierbar am Gehäuse
> befestigen. Wenn Du den nur so als loses Zubehörteil mitlieferst, werden
> die Kunden den im Fall der Fälle nicht mehr finden.

Wenn ich den Reed-Kontakt auf der Unterseite montieren würde könnte es 
vom Abstand her funktionieren. Das mit dem Verlieren stimmt. Aber in 
diesem Fall muss er halt gut drauf aufpassen. Ansonsten hat doch jeder 
irgendwo einen Magneten, oder? Selbst ein alter Lautsprecher könnte noch 
funktionieren. Und wenn nicht, dann kann er bei mir für 10€ einen kaufen 
:-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren