Domanda:
Quali opzioni ci sono per programmare gli MCU in produzione?
Thomas O
2010-11-28 03:31:06 UTC
view on stackexchange narkive permalink

Per il mio progetto Super OSD avrò bisogno di programmare grandi lotti di MCU, probabilmente circa 10-15 schede all'ora. Potrei semplicemente usare il mio fidato PICkit 2 per programmarli (ce ne sono due - forse tre - su ogni scheda) ma sarebbe molto laborioso caricare ogni file (fino a 128 KB e 256 KB di dimensione), premere il programma e ripetere per ciascuno MCU, e probabilmente non mi permetterebbe di raggiungere la mia velocità target. Inoltre, gli MCU sono a montaggio superficiale, quindi devo avere intestazioni sulla scheda per consentirlo. Idealmente, vorrei rimuovere queste intestazioni, ma potrebbe non essere un'opzione.

Quindi quali opzioni ci sono per la programmazione di massa degli MCU - ci sono modi più veloci per farlo? Ho un budget inferiore a $ 100 USD, quindi cose come MPLAB PM3 di Microchip a $ 895 USD, sebbene carine, non sarebbero un'opzione.

Ho a che fare con microcontrollori PIC di vari tipi. C'è un PIC16F887, PIC24FJ64GA002 e dsPIC33FJ128GP802. Tuttavia, sono anche interessato alle opzioni per i processori AT32 e STM32, poiché potrei anche usarli.

Si prega di notare che al momento non sto valutando di ordinare chip dai produttori pre-programmati perché il software potrebbe cambiare nel momento in cui arrivano i chip ea causa del costo aggiuntivo coinvolto.

15 tavole all'ora sono quattro minuti per tavola. Quanto tempo impiega il PICkit 2 per programmare la tua parte?
@markrages: Sono circa 20 secondi con una piccola base di codice (~ 6KB). Immagino che con più codice, potrebbe volerci fino a un minuto e mezzo per ogni scheda, il che non mi dà molto respiro.
@Markrages, Posso garantire, ho scritto un progetto molto grande con l'ICD2 LE e ci vorrebbero 2 o 3 minuti per programmare. Piuttosto fastidioso. Con il pickit 3, tuttavia, sta urlando velocemente.
Sette risposte:
tcrosley
2010-11-28 06:36:49 UTC
view on stackexchange narkive permalink

Quello che facciamo per la produzione, è caricare prima un programma nel PIC che collauda la scheda (utilizzando una piccola scheda di test che verifica in modo indipendente che il rail 3.3v sia conforme alle specifiche usando un paio di comparatori, e poi usiamo il ADC sul PIC per controllare tutto il resto. Avevamo abbastanza pin rimanenti per consentirlo (erano necessari alcuni resistori extra per fungere da divisori di tensione per le tensioni superiori a 3v).

Dopo che i test sono passati, il il codice di produzione reale viene visualizzato nel micro. Vengono eseguiti alcuni test aggiuntivi e il PCB è pronto per l'assemblaggio in una custodia.

Tutto ciò viene eseguito tramite un programma sul PC che richiede solo un operatore per la connessione scheda, fare clic su un pulsante e attendere il risultato SUPERATO / FALLITO. Tutti i risultati dei test (comprese le letture ADC) vengono registrati. L'intero processo (inclusa la programmazione dei PIC tramite un ICD 3) è controllato tramite il programma per PC, che esegue script batch per eseguire la programmazione vera e propria, la comunicazione al PIC per controllare i test avviene tramite uno degli UART, i cui pin vengono portati alla scheda di test (quindi oltre ai pin richiesti per la programmazione, abbiamo almeno TX / RX).

Abbiamo impostato diverse stazioni come questa a il nostro produttore a contratto.

A proposito, l'ICD 3 è molto più veloce dell'ICD 2 (USB 2.0 contro 1.1).

Il pickit 3 funziona anche con USB 2.0, motivo per cui lo adoro. ICD3 è un po 'caro per me. La mia azienda utilizza MSP430, quindi è molto diverso.
Puoi chiarire come si programma l'IC?Il tuo ICSP preparato o cosa?
@ErikFriesen Uso un ICD 3 o REAL Ice per PIC Microchip.Entrambi sono probabilmente troppo costosi per la maggior parte degli hobbisti (rispettivamente $ 200 e $ 500).Altre famiglie di chip (Freescale, Silicon Labs, ecc.) Hanno una propria linea di programmatori.Includo le intestazioni sul PCB per connettermi con i programmatori.Dopo che un dispositivo è sul campo, se dispone di connettività wireless (cellulare o WiFi) può essere aggiornato via etere.
Ho entrambi e pm3.Il pm3 non farà tutte le parti senza connettersi al PC su> X2.15, si divide sulla linea pic32.
Kortuk
2010-11-28 06:23:40 UTC
view on stackexchange narkive permalink

Prendi un pickit 3 e mettilo in modalità programmatore per andare in modalità.

Gli dici che vuoi che il programmatore vada in modalità e carichi la tua rom, quindi non hai più bisogno di una porta USB per più che per l'alimentazione (sì, ne hai ancora bisogno per l'alimentazione).

Quando ti colleghi ai dispositivi, premi il pulsante del programma e questo carica il programma e ti fa sapere quando è finito, impiega meno di 20 secondi per scheda. Non costa più di 50 $

Leon Heller
2010-11-28 04:01:23 UTC
view on stackexchange narkive permalink

Il PICkit 2 non è un programmatore di produzione. Hai davvero bisogno di un ICD 3, che è classificato come programmatore di produzione, se vuoi essere sicuro che i dispositivi siano programmati correttamente. In alternativa, puoi acquistare i tuoi chip pre-programmati da Microchip o da un distributore, se hai il codice finalizzato.

Questo sarebbe il modo corretto di procedere.
Fornisci una citazione per il commento "programmatore di produzione". Chiaramente, il Pickit non è abbastanza robusto fisicamente per un'applicazione industriale. Ma i segnali che presenta al bersaglio sono gli stessi di qualsiasi altro programmatore. (Il significato originale di "programmatore di produzione" è che alcuni programmatori erano in grado di variare la tensione di alimentazione e rileggere il contenuto del programma per verificare la corretta programmazione. Microchip non lo ha menzionato nelle loro schede tecniche per circa un decennio, ma il folklore vive Ironia della sorte, il PICkit 2 * può * variare la tensione di alimentazione ...)
Questo è apparso di recente sul forum Microchip. La documentazione dell'ICD 3 afferma che si tratta di un programmatore di produzione, a differenza del PICkit 2/3 che qualcuno di Microchip ha dichiarato non erano programmatori di produzione.
markrages
2010-11-28 05:45:48 UTC
view on stackexchange narkive permalink

La programmazione del microcontrollore è solitamente una piccola parte di un più ampio processo di test funzionale. Com'è il resto del tuo piano di test?

Per qualsiasi prodotto non banale, dovrai progettare un'altra scheda per testare la scheda in produzione. In generale, la scheda di test avrà un'interfaccia per computer e collegherà il target all'apparecchiatura di test con capacità RS-232 o GPIB. Quindi un computer può eseguire uno script, programmare la scheda, quindi eseguire i test appropriati.

È utile che questa scheda di test funzioni anche per lo sviluppo del firmware. Implementa abbastanza test per rilevare le regressioni nel firmware.

L'inizio della tua scheda di test è probabilmente il circuito PICkit 2. Il firmware è open-source, si prenderà cura della parte di programmazione, ha un pratico bootloader e puoi estenderlo per fare qualsiasi altra cosa richieda il tuo test funzionale.

Mi piace scrivere la mia produzione testare gli script in Python, ma penso che lo standard del settore sia Labview.

Uso molti Python, ma mai per lo scripting generale - di solito lo lascio a bash / shell o Perl. Grazie per i suggerimenti.
Yann Vernier
2010-11-28 04:42:41 UTC
view on stackexchange narkive permalink

Un metodo che potresti utilizzare è creare un morsetto o qualcosa di simile a un banco di prova ( video di esempio) con pin pogo, in modo che non sia necessario pin a saldare per i connettori di programmazione. Un connettore PCB edge, come un cavo floppy vecchio stile, potrebbe essere un'opzione più economica (ma più impegnativa per l'area della scheda).

Dovrai trovare un modo per programmare ogni microcontrollore, probabilmente usando più programmatori o un file batch come suggerito da David. Potresti combinarlo con un interruttore di grandi dimensioni (forse uno degli interruttori rotanti di una vecchia scatola degli interruttori di condivisione della stampante, o alcuni relè), per ricollegare il programmatore da un PIC all'altro senza spostare il connettore.

Le tecniche si applicano anche ad altri controller programmabili nel sistema, sebbene quelli compatibili con JTAG possano renderlo ancora più semplice perché JTAG TAP è progettato per essere concatenato, quindi non ci sarebbe spostamento del programmatore da chip a patata fritta. Inoltre, per chip come AVR che possono utilizzare livelli logici ordinari per la programmazione, la commutazione potrebbe diventare più semplice.

Non hai nemmeno bisogno dei pin pogo: ho inserito un pin header nel PICkit 2 e posso programmare inserendolo nei fori della scheda e premendo un po 'lateralmente, quindi mantenendo questa pressione fino al completamento della programmazione.
@Markrages, è così che lo faccio al lavoro.
DavidEGrayson
2010-11-28 03:52:18 UTC
view on stackexchange narkive permalink

Esiste un'utilità della riga di comando chiamata PK2CMD per Windows e Linux che ti consente di programmare i tuoi PIC con PicKit (quindi non devi usare MPLAB o qualche altra GUI). È possibile utilizzare il proprio linguaggio di scripting preferito per creare un programmino che esegue il comando PK2CMD corretto quando si preme un tasto. Ciò renderebbe il lato computer della tua produzione meno laborioso (basta premere 1 tasto per MCU) ma avresti comunque bisogno di un modo per collegare il PicKit a ciascuno dei tuoi 3 MCU.

mikeselectricstuff
2010-11-28 04:51:27 UTC
view on stackexchange narkive permalink

Il servizio di programmazione di Microchip è molto economico l'ultima volta che l'ho usato, una volta coperto il costo di installazione è molto economico - centesimi per chip per 12F - non considerato quelli di fascia alta. Possono anche eseguire marcatura / etichettatura, ecc. Anche se intendi modificare il FW, avere un bootloader preprogrammato può rendere tutto più semplice.

Per un programmatore di produzione mi piace Asix Presto - tonnellate di opzioni per cose come la serializzazione e molto veloce



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...