Welche Möglichkeiten gibt es, MCUs in der Produktion zu programmieren?

7

Für mein Super-OSD-Projekt muss ich große Mengen von MCUs programmieren, wahrscheinlich etwa 10-15 Boards pro Stunde. Ich könnte einfach mein vertrauenswürdiges PICkit 2 verwenden, um sie zu programmieren (es gibt zwei - vielleicht drei - auf jeder Karte), aber es wäre sehr mühsam, jede Datei (bis zu 128 KB und 256 KB groß) zu laden, das Programm zu drücken und für jede zu wiederholen MCU und würde mir wahrscheinlich nicht erlauben, meine Zielgeschwindigkeit zu erreichen. Außerdem sind die MCUs oberflächenmontiert, daher muss ich Header auf der Platine haben, um dies zu ermöglichen. Im Idealfall möchte ich diese Header entfernen, dies ist jedoch möglicherweise keine Option.

Welche Optionen gibt es für die Massenprogrammierung von MCUs - gibt es schnellere Möglichkeiten, dies zu tun? Ich habe ein Budget von weniger als 100 USD, also wären Dinge wie Microchips MPLAB PM3 für 895 USD zwar nett, aber keine Option.

Ich habe es mit PIC-Mikrocontrollern verschiedener Typen zu tun. Es gibt einen PIC16F887, einen PIC24FJ64GA002 und einen dsPIC33FJ128GP802. Ich interessiere mich jedoch auch für Optionen für AT32- und STM32-Prozessoren, da ich diese möglicherweise auch verwende.

Bitte beachten Sie, dass ich derzeit nicht in Betracht ziehe, Chips bei den vorprogrammierten Herstellern zu bestellen, da sich die Software zum Zeitpunkt des Eintreffens der Chips ändern kann und zusätzliche Kosten anfallen.

Thomas O.
quelle
15 Bretter pro Stunde sind vier Minuten pro Brett. Wie lange dauert es, bis das PICkit 2 Ihren Teil programmiert?
Markrages
@markrages: Bei einer kleinen Codebasis (~ 6 KB) sind es ungefähr 20 Sekunden. Ich stelle mir vor, mit mehr Code könnte es bis zu anderthalb Minuten für jedes Board dauern, was mir nicht viel Raum zum Atmen gibt.
Thomas O
3
@ Markrages, ich kann dafür bürgen, ich habe ein sehr großes Projekt mit dem ICD2 LE geschrieben und es würde 2 oder 3 Minuten dauern, um es zu programmieren. Ziemlich nervig. Mit dem Pickit 3 schreit es jedoch schnell.
Kortuk

Antworten:

10

Was wir für die Produktion tun, ist, zuerst ein Programm in den PIC zu laden, das die Karte testet (unter Verwendung einer kleinen Testkarte, die unabhängig überprüft, ob die 3,3-V-Schiene innerhalb der Spezifikation liegt, indem wir einige Komparatoren verwenden, und dann verwenden wir den ADC auf der PIC, um alles andere zu überprüfen. Wir hatten noch genügend Pins übrig, um dies zu ermöglichen (es waren einige zusätzliche Widerstände erforderlich, um als Spannungsteiler für die Spannungen über 3 V zu fungieren).

Nachdem die Tests bestanden wurden, wird der tatsächliche Produktionscode in das Mikro eingeblendet. Einige zusätzliche Tests werden ausgeführt, und die Leiterplatte kann in ein Gehäuse eingebaut werden.

Dies alles erfolgt über ein Programm auf dem PC, bei dem nur ein Bediener die Karte anschließen, auf eine Schaltfläche klicken und auf das Ergebnis PASS / FAIL warten muss. Alle Testergebnisse (einschließlich ADC-Messwerte) werden protokolliert. Der gesamte Prozess (einschließlich der Programmierung der PICs über einen ICD 3) wird über das PC-Programm gesteuert, das Batch-Skripte ausführt, um die eigentliche Programmierung durchzuführen. Die Kommunikation mit dem PIC zur Steuerung der Tests erfolgt über einen der UARTs, deren Pins auf die Testplatine übertragen werden (zusätzlich zu den für die Programmierung erforderlichen Pins haben wir mindestens TX / RX).

Wir haben bei unserem Vertragshersteller mehrere solcher Stationen eingerichtet.

Übrigens ist der ICD 3 viel schneller als der ICD 2 (USB 2.0 vs 1.1).

tcrosley
quelle
Der Pickit 3 läuft auch mit USB 2.0, weshalb ich ihn liebe. ICD3 ist für mich etwas teuer. Meine Firma verwendet MSP430s, also ist es ganz anders.
Kortuk
Können Sie klären, wie Sie den IC programmieren? Ihr eigenes gebrautes ICSP oder was?
Erik Friesen
@ErikFriesen Ich verwende entweder einen ICD 3 oder REAL Ice für Microchip PICs. Beide sind für die meisten Hobbyisten wahrscheinlich zu teuer (200 USD bzw. 500 USD). Andere Chip-Familien (Freescale, Silicon Labs usw.) haben ihre eigene Reihe von Programmierern. Ich füge Header auf den Leiterplatten ein, um sie mit den Programmierern zu verbinden. Wenn ein Gerät nicht im Einsatz ist und über eine drahtlose Verbindung (Mobilfunk oder WLAN) verfügt, kann es drahtlos aktualisiert werden.
Tcrosley
Ich habe beide und die pm3. Der pm3 erledigt nicht alle Teile, ohne eine Verbindung zum PC auf> X2.15 herzustellen, sondern teilt sich auf der pic32-Linie.
Erik Friesen
4

Das PICkit 2 ist kein Produktionsprogrammierer. Sie benötigen wirklich einen ICD 3, der als Produktionsprogrammierer eingestuft ist, wenn Sie sicher sein möchten, dass die Geräte ordnungsgemäß programmiert werden. Alternativ können Sie Ihre Chips vorprogrammiert bei Microchip oder einem Distributor kaufen, wenn Sie den Code finalisiert haben.

Leon Heller
quelle
1
Dies wäre der richtige Weg, um dies zu erreichen.
Kortuk
Bitte geben Sie ein Zitat für den Kommentar "Produktionsprogrammierer" an. Offensichtlich ist der Pickit für eine industrielle Anwendung physikalisch nicht robust genug. Die Signale, die dem Ziel angezeigt werden, sind jedoch dieselben wie bei jedem anderen Programmierer. (Die ursprüngliche Bedeutung von "Produktionsprogrammierer" ist, dass bestimmte Programmierer die Versorgungsspannung variieren und den Programminhalt zurücklesen konnten, um die korrekte Programmierung zu überprüfen. Microchip hat dies seit etwa einem Jahrzehnt nicht mehr in ihren Datenblättern erwähnt, aber die Folklore lebt weiter . die PICkit 2 Ironischerweise kann variieren , um die Versorgungsspannung ...)
markrages
Dies ist kürzlich im Microchip-Forum aufgetaucht. In der ICD 3-Dokumentation heißt es, dass es sich um einen Produktionsprogrammierer handelt, im Gegensatz zum PICkit 2/3, das laut Angaben von Microchip keine Produktionsprogrammierer waren.
Leon Heller
4

Die Mikrocontroller-Programmierung ist normalerweise ein kleiner Teil eines größeren Funktionstestprozesses. Wie sieht der Rest Ihres Testplans aus?

Für jedes nicht triviale Produkt müssen Sie eine andere Platine entwerfen, um die in Produktion befindliche Platine zu testen. Im Allgemeinen verfügt die Testkarte über eine Computerschnittstelle und verbindet das Ziel mit Testgeräten mit RS-232- oder GPIB-Funktionen. Dann kann ein Computer ein Skript ausführen, die Karte programmieren und dann die geeigneten Tests ausführen.

Es ist hilfreich, dieses Testboard auch für die Firmware-Entwicklung laufen zu lassen. Implementieren Sie genügend Tests, um Regressionen in der Firmware abzufangen.

Der Start Ihrer Testplatine ist wahrscheinlich die PICkit 2-Schaltung. Die Firmware ist Open Source, kümmert sich um den Programmierteil, verfügt über einen praktischen Bootloader und kann erweitert werden, um alles zu tun, was Ihr Funktionstest benötigt.

Ich schreibe meine Produktionstestskripte gerne in Python, aber ich denke, der Industriestandard ist Labview.

Markrages
quelle
Ich benutze Python-Lots, aber niemals für allgemeine Skripte - normalerweise überlasse ich das Bash / Shell oder Perl. Danke für die Tipps.
Thomas O
4

Holen Sie sich einen Pickit 3 und versetzen Sie ihn in den Programmiermodus.

Sie sagen, Sie möchten, dass der Programmierer in den Modus wechselt, und Sie laden Ihr ROM. Dann benötigen Sie keinen USB-Anschluss mehr für mehr als Strom (ja, Sie benötigen ihn immer noch für Strom).

Wenn Sie Geräte anschließen, drücken Sie die Programmtaste, und das Programm wird geladen. Wenn dies erledigt ist, dauert es weniger als 20 Sekunden, bis eine Karte fertig ist. Kostet nicht mehr als 50 $

Kortuk
quelle
3

Eine Methode, die Sie verwenden können, besteht darin, eine Klemme oder etwas Ähnliches wie einen Prüfstand ( Beispielvideo ) mit Pogo-Stiften herzustellen , damit Sie keine Stifte für die Programmieranschlüsse löten müssen. Ein PCB-Edge-Anschluss, wie z. B. ein Diskettenkabel im alten Stil, ist möglicherweise eine billigere (aber anspruchsvollere) Option.

Sie müssen einen Weg finden, um jeden Mikrocontroller zu programmieren, wahrscheinlich mit mehreren Programmierern oder einer Batch-Datei, wie David vorgeschlagen hat. Sie können es mit einem großen Schalter kombinieren (möglicherweise einem der Drehschalter einer alten Druckerfreigabe-Schaltbox oder einigen Relais), um den Programmierer von einem PIC zu einem anderen wieder anzuschließen, ohne den Stecker zu bewegen.

Die Techniken gelten auch für andere systeminterne programmierbare Steuerungen, obwohl die JTAG-fähigen möglicherweise noch einfacher sind, da JTAG TAP für die Verkettung ausgelegt ist, sodass der Programmierer nicht von Chip zu Chip bewegt werden muss. Auch für Chips wie AVRs, die normale Logikpegel zum Programmieren verwenden können, könnte das Umschalten einfacher werden.

Yann Vernier
quelle
Sie brauchen nicht einmal Pogo-Pins: Ich habe einen Header-Pin in das PICkit 2 gesteckt und kann programmieren, indem ich ihn in die Löcher in der Platine stecke und ein wenig seitwärts drücke, um diesen Druck aufrechtzuerhalten, bis die Programmierung abgeschlossen ist.
Markrages
@Markrages, so mache ich das bei der Arbeit.
Kortuk
2

Es gibt ein Befehlszeilenprogramm namens PK2CMD für Windows und Linux, mit dem Sie Ihre PICs mit dem PicKit programmieren können (Sie müssen also kein MPLAB oder eine andere GUI verwenden). Sie können Ihre bevorzugte Skriptsprache verwenden, um ein kleines Programm zu erstellen, das den richtigen PK2CMD-Befehl ausführt, wenn Sie eine Taste drücken. Dies würde die Computerseite Ihrer Produktion weniger mühsam machen (nur 1 Tastendruck pro MCU), aber Sie würden immer noch eine Möglichkeit benötigen, das PicKit mit jeder Ihrer 3 MCUs zu verbinden.

DavidEGrayson
quelle
1

Der Programmierservice von Microchip ist sehr günstig, als ich ihn das letzte Mal verwendet habe. Sobald Sie die Einrichtungskosten übernommen haben, ist er sehr günstig - ein paar Cent pro Chip für 12F - und nicht für High-End-Modelle. Sie können auch Markierungen / Beschriftungen usw. durchführen. Selbst wenn Sie beabsichtigen, die FW zu ändern, kann die Vorprogrammierung eines Bootloaders dies erleichtern.

Für einen Produktionsprogrammierer mag ich den Asix Presto - jede Menge Optionen für Dinge wie Serialisierung und sehr schnell

mikeselectricstuff
quelle