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
Auf sowas sind ja schon welche gekommen, kostet halt nur ne menge: https://www.segger.com/flasher-arm.html http://www.equinox-tech.com/products/details.asp?ID=1544&displ=tdDp http://microcontrollershop.com/product_info.php?cPath=154_476&products_id=6240&osCsid=b063fdt393b0mhnsie7k8b9ft3 Aber ein selbstbau wie bei AVR gibts scheinbar nicht: http://mdiy.pl/uprog-maly-szybki-przenosny-programator-avr-z-sd/?lang=en
:
Bearbeitet durch User
Du könntest eine Black Magic Probe nehmen und entsprechend erweitern und das zu flashende Programm z.B. aus einem SPI-Flash lesen. Warum die Black Magic Probe? Weil die komplett im Sourcecode verfügbar ist: https://github.com/blacksphere/blackmagic
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.
Ich kann auch nur ein Eigenbauprojekt für AVRs anbieten: http://www.avrfreaks.net/forum/automated-programmers-half-price Gruß Max
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 ?!?
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.
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
:
Bearbeitet durch User
Flo schrieb: > Oder es gibt einfach keinen Markt dafür ?!? würde ich auch sagen. Denn wo will man einen Controller programmieren, hat aber keinen PC in der Nähe? Notebooks, Tablets, Smartphones,... sind mobil und quasi überall vorhanden. Was ist denn Dein Einsatzszenario?
Der Entwickler des von mir verlinkten Moduls nutzt es für Firmwareupdates bei Kunden. Entweder bei schwerer Zugänglichkeit oder um die Kunden das Update leicht selbst vornehmen zu lassen. Gruß Max
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.
So jetzt nochmal :-) Max B. schrieb: > Ich kann auch nur ein Eigenbauprojekt für AVRs anbieten: > http://www.avrfreaks.net/forum/automated-programmers-half-price Ja genau!Im Prinzip hat er die richtige Lösung. Nur brauche ich das für nen STM32.
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.
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.
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.
:
Bearbeitet durch User
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...)
> 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.
:
Bearbeitet durch User
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?
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.
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.
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.
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.
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.
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.
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?
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.
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 :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.