Home
Accesso / Registrazione
 di 

Come migrare da Microchip a Freescale e Perchè

Come migrare da Microchip a Freescale e Perchè

La competizione nel mercato dei semiconduttori è alta, ed uno dei settori più diversificati è il mercato dei microntrollori. Potrebbe non risultare complicato selezionare un amplificatore operazionale per la vostra applicazione nel caso dobbiate scegliere tra 5-6 modelli prodotti da 3-4 produttori. Quando però ci si sposta sui microcontrollori la scelta dei componenti risulta essere una delle parti più complesse del design. Esistono così tante periferiche, e così tanti core con caratteristiche differenti e così tanti requisiti di progetto che si basano sul microntrollore! Tutte queste cose determinano quale periferica verrà utilizzata.

Il compito di scegliere il miglior controllore per un'applicazione non è reso semplice dalla moltitudine di fornitori disponibili oggi sul mercato, anzi questo è l'inconveniente principale di avere molteplici opzioni (un inconveniente amato da noi ingegneri!). Le maggiori industrie in competizione nel settore dei microcontrollori sono Freescale, Microchip, Infineon, STMicroelectronics, Texas Instruments, Analog Devices e Maxim Integrated Products. La comparazione di tutti questi produttori viene di solito effettuata da divisioni specializzate all'interno delle compagnie stesse o all'interno delle compagnie produttrici. In questo articolo il nostro scopo sarà solo di dimostrare la superiorità delle soluzioni Freescale rispetto a quelle presentate da Microchip.

Breve storia delle due compagnie

Freescale Semiconductor nacque il 6 Ottobre del 2003, seguendo l'annuncio di Motorola circa lo smantellamento della sua divisione semiconduttori. La nuova compagnia si specializzò nella produzione di circuiti integrati per l'industria automobilistica, delle comunicazione ed embedded fino ad arrivare nella Top 20 dei Worldwide Semiconductor Sales Leaders.

Microchip apparse la prima volta nel 1987 come distaccamento della General Instrument, che decise di chiudere la sua divisione di componenti microelettronici. I prodotti Microchip includono microcontrollori, DSP, periferiche seriali EEPROM, periferiche seriali SRAM, periferiche KEELOQ, periferiche a radio frequenza (RF), termostati, periferiche analogiche e lineari per gestione e ricarica delle batterie ed anche interfacce e periferiche per segnali mixed. Non si trova nella Top 20 dei Worldwide Semiconductor Sales Leaders (per lo meno secondo i rapporti di analisi di iSupply).

Periferiche Disponibili

Le due compagnie coprono circa la stessa fetta di mercato attraverso la produzione dei loro microcontrollori e DSP per settori:

    * Automobilistici;
    * Elettrodomestici;
    * Controllo dei motori;
    * Meccatronica;
    * Soluzioni mediche;
    * Periferiche di alimentazione;
    * Connettività cablata e Wireless.

La scelta di un prodotto rispetto ad un altro basandosi sulle capacità tecniche può risultare abbastanza difficile, poichè entrambe le compagnie producono componenti con le stesse caratteristiche.

Freescale però sembra essere favorita grazie alla diversità dei settori per cui produce componenti ed alle preferenze ricevute dai produttori OEM.

Prendiamo come esempio il settore automobilistico. Nelle applicazioni in cui la sicurezza risulta critica, Freescale offre soluzioni per unità di controllo degli Airbag, per TPMS e ESP. Microchip invece offre solo soluzioni TPMS. Freescale offre inoltre anche sistemi di comunicazione FlexRay per quanto riguarda le reti interne ai veicoli, una soluzione che non esiste nel portfolio di Microchip.

L'elettronica della struttura del veicolo utilizza un'ampia gamma di prodotti Freescale nei Body Control Modules, dai prodotti per l'accesso ed il controllo remoto, le soluzioni per la ventilazione ed il condizionamento dell'aria, l'illuminazione fino all'attivazione di portiere/finestrini. Microchip è in grado di fornire all'interno di questa lista solo l'automazione per i finestrini elettrici ed il lunotto sul tettuccio.

Il dominio delle soluzioni Freescale è ancora più evidente se si va a dare un'occhiata all'interno della lista dei fornitori certificati OEM. Generalmente, quando si progetta un prodotto automobilistico, il cliente (BMW, VW, PSA, Fiat, Toyota ecc.) ha parecchie pretese per quanto riguarda i dettagli del progetto. Ed uno dei dettagli che viene controllato nelle loro "liste approvate" è il microcontrollore principale sulla scheda madre che agisce come un microcontrollore "CAN". In generale, Freescale occupa il primo posto all'interno di queste liste, mentre in alcune di esse non è presente nessun prodotto Microchip.

Molti studenti si sono trovati in una posizione per cui dopo aver felicemente sperimentato l'utilizzo delle PIC all'università hanno dovuto abbandonare tutto per imparare ad utilizzare lo HC08, HCS08 o S12X perchè "il cliente voleva utilizzarlo". Devo ammettere che la presenza di microcontrollori Microchip è molto più evidente rispetto a quella delle soluzioni Freescale, ma questo non è l'ambiente in cui si trovano i soldi ed è più importante vedere chi si trova nelle liste OEM.

A questo punto, proveremo ad aiutare coloro che si trovano a dover migrare verso una nuova piattaforma per necessità, e lo faremo fornendo un confronto di base tra le periferiche, le istruzioni e gli strumenti di sviluppo.

Le seguente immagine è un estratto da una tabella compilata da EMCElettronica che indica le potenziali corrispondenze tra alcune PIC ed i microcontrollori Freescale, basandosi sulle caratteristiche tecniche. L'intera lista (purtroppo incompleta) è disponibile nella sezione Download (trovate il collegamento alla fine dell'articolo).

Ovviamente la lista non sarà mai perfetta. Ci sono così tante variabili in gioco quando si vuole selezionare un controller appropriato (I/O, tensioni di alimentazione, dimensione della PCB, consumi, dimensione della memoria, periferiche, ecc.) che questo tipo di lista non sarà mai nient'altro che un punto di partenza. Questo è il modo in cui dovrebbe essere considerata.

Comparazione dei set di istruzioni

Osservando la precedente lista, è possibile effettuare una serie di osservazioni: i microcontrollori PIC a 8bit generalmente posseggono un componente equivalente nella sottofamiglia di periferiche Freescale HC908. Ha senso quindi avere una visione comparativa dei set di istruzioni solamente di queste due famiglie.

Anche se la maggior parte delle applicazioni viene scritta in C, il set di istruzioni assembly risulta sempre un buon indicatore riguardo alle operazioni che un microcontrollore può svolgere e a come si comporterà in specifiche circostanze.

Dal momento che esiste un numero abbastanza significativo di istruzioni di cui è necessario tenere conto, non risulta pratico discutere riguardo ad ognuna di esse.

Infatti preferisco sottolineare le istruzioni che non posseggono una versione equivalente in una delle due famiglie di componenti, oppure indicare quelle che potrebbero essere rimpiazzate da gruppi di istruzioni dell'altra famiglia (che posso essere quindi raggruppate in macro).

Operazioni dei registri orientate ai byte
La maggior parte di queste istruzioni possiede equivalenti nella produzione di Freescale per entrambi HC908 e PIC microcontrollori. Le addizioni/sottrazioni di registro dai/agli accumulatori, il complemento al registro, il suo incremento o decremento, la rotazione a destra o sinistra attraverso l'uso del registro carry ecc. sono operazioni che possono essere eseguite utilizzando istruzioni a 2 byte, poichè queste sono le istruzioni eseguite dalla maggior parte dei microcontrollori disponibili. Però ci sono due istruzioni di incremento/decremento disponibili per le PIC che non trovano corrispondenza nella famiglia HC908:

Increment f, Skip if 0          INCFSZ
Decrement f, Skip if 0          DECFSZ

Operazioni dei registri orientate ai bit
BCF, BSF, BTFSC, BTFSS posseggono tutte dei corrispettivi nella famiglia di microcontrollori HC908 (nello stesso ordine: BCLR, BSET, BRCLR, BRSET). Esiste solo una istruzione del PIC senza equivalente: BTG (cambia un bit in un registro).

Operazioni letterali e di controllo
Questa categoria è più numerosa ed esistono svariate istruzioni che non posseggono una corrispondenza tra le due famiglie. Come è stato dimostrato precedentemente, la famiglia HC908 risulta chiaramente avvantaggiata rispetto all'altra, avendo poche istruzioni di controllo che trovano corrispettivi nella famiglia PIC solo in gruppi o macro di istruzioni. D'altro canto, solo due istruzioni della famiglia PIC non posseggono una corrispondenza. Queste sono CLRWDT (azzera il timer watchdog) e RETLW (return with literal nell'accumulatore).

Il numero di istruzioni HC908 che non trovano un equivalente nella famiglia PIC è abbastanza alto, ed il modo migliore di elencarle è una tabella, che può anche dare informazioni riguardo ai frammenti di codice che produrrebbero lo stesso risultato utilizzando i prodotti Microchip.

Add with Carry ADC BTFS STATUS,
INCF M,F
ADDWF M,F
Arithmetic Shift Left ASL BCF STATUS,
RLF M,F
Arithmetic Shif Right ASR BCF STATUS,
BTFSC M,7
BSF STATUS,C
RRF M,F
Branch if Carry Bit Clear BCC BTFSS STATUS,
GOTO addr
Branch if Carry Bit Set BCS BTFSC STATUS,
GOTO addr
Branch if Equal BEQ BTFSC STATUS,Z
GOTO addr
Branch if Greater than BGT BTFSS STATUS,N
BNOV rel
BTFSS STATUS,OV
BNN rel
Branch if Half Carry Bit Clear BHCC BTFSC STATUS,DC
GOTO addr
Branch if Half Carry Bit Set BHCS BTFSC STATUS,DC
GOTO addr
Branch if Higher BHI BTFSC STATUS,C
GOTO addr
BTFSC STAUTS,Z
GOTO addr
Branch if Higher or Same BHS BTFSS STATUS,C
GOTO addr
Branch if IRQ High BHI BTFSC PORTx, <pin>
GOTO addr
Branch if IRQ Low BIL BTFSS PORTx,<pin>
GOTO addr
Bit Test BIT MOVLW <mask>
ANDWF M,W
Branch if Lower BLO BTFSC STATUS,C
GOTO addr
Branch if Lower or Same BLS BTFSC STATUS,C
GOTO addr
BTFSC STATUS,Z
GOTO addr
Branch if IRQ Mask Clear BMC BTFSS INTCON, GIE
GOTO addr
Branch if Minus BMI BTFSC M,7
GOTO addr
Branch if IRQ Mask Set BMS BTFSC INTCON,GIE
GOTO addr
Branch if Not Equal BNE BTFSS STATUS,Z
GOTO addr
Branch if Plus BPL BTFSS M,7
GOTO addr
Branch if BIT n in
Memory Clear
BRCLR n BTFSS M,n
GOTO addr
Branch if Bit n in Menory Set BRSET n BTFSC M,n
GOTO addr
Compare and Branch if Equal CBEQ SUBWF M,W
BTFSC STATUS,Z
GOTO addr
Compare Index Register with
Memory
CPX MOVF M,W
SUBWF FSR,W
Decimal Adjust Accumulator DAA ADDLW 0x06
BTFSS STATUS,DC
GOTO $+3
ADDLW 0x10
GOTO $+2
ADDLW 0xFA
GOTO $+2
ADDLW 0xFA
ADDLW 0x60
BTFSS STATUS,DC
ADDLW 0xA0
Decrement and Branch if Not Zero DBNZ DECF M,F
BTFFSS STATUS,Z
GOTO addr
Divide DIV No corresponding instruction/macro
Load index Register From Memory LDX MOVF M,W
Memory MOVWF FSR
Logical Shift Left LSL BCF STATUS,C
RLF M,F
Logical Shift Right LSR BCF STATUS,C
RRF M,F
Move MOV MOVF M,W
MOVWF N
Multiply MUL MULWF
(not on all)
Store Index Register STHX MOV FSR, W
MOVWF M
Store Index Register Low
in Memory
STX MOVF FSR,W
MOVWF M
Test for Negative or Zero TST MOVLW O
SUBWF M,W
Add Immediate Value to Stack Point AIS No corresponding instruction/macro
Branch if Greater Than or Equal BGE No corresponding instruction/macro
Branch if Greater Than BGT No corresponding instruction/macro
Branch if Less than or Equal to BLE No corresponding instruction/macro
Branch if Less than BLT No corresponding instruction/macro
Compare index Register with memory CPHX No corresponding instruction/macro
Load Index Register From Memory LDHX No corresponding instruction/macro
Push Accumulator onto Stack PSHA No corresponding instruction/macro
Push Index Register High onto Stack PSHH No corresponding instruction/macro
Push Index Register Low onto Stack PSHX No corresponding instruction/macro
Pull Accumulator from Stack PULA No corresponding instruction/macro
Pull Index Register High from Stack PULH No corresponding instruction/macro
Pull Index Register Low from Stack PULX No corresponding instruction/macro
Reset Stack Pointer RSP No corresponding instruction/macro
Transfer Stack Pointer to Index Register TSX No corresponding instruction/macro
Transfer Index Register to Stack Pointer TXS No corresponding instruction/macro

Come probabilmente si può notare, i microcontrollori di Freescale hanno a disposizione un numero maggiore di istruzioni. La maggior parte di queste istruzioni sono istruzioni che riguardano le operazioni di controllo/branching e di stack. Queste istruzioni permettono ai compilatori C di generare del codice più efficiente minimizzando inoltre la quantità di memoria necessaria per un'applicazione.

Inoltre rendono le cose più semplici per i programmatori assembly, che hanno a disposizione più opzioni durante l'elaborazione del codice.

Infine un paio di istruzioni aggiuntive per operazioni sugli stack permettono un salvataggio dei dati in caso di interrupt più semplice per la familgia Freescale rispetto alla PIC.

Comparazione degli strumenti di sviluppo software

Descriverò brevemente i due pacchetti IDE distribuiti dalle due compagnie.

Microchip utilizza il conosciuto MPLAB IDE. Questa soluzione ha il vantaggio di essere gratuita, ed include un ambiente di sviluppo, un simulatore e capacità di debugging. Purtroppo è disponibile solo per Windows. MPLAB Integrated Development Environment

L'ambiente in se è gratuito, ma diversa à la situazione per quanto riguarda il compilatore C. Può in ogni caso essere utilizzato per compilare piccoli progetti assembly oppure è possibile scaricare la versione studente del compilatore C di Microchip (utilizzabile per 30 giorni). Sono disponibili compilatori prodotti anche da terze parti che possono essere integrati con MPLAB.

Il simulatore di MPLAB è abbastanza buono, e qualche tempo fa Microchip rese disponibile anche l'accesso ad alcuni tipi di codice VHDL che permettevano all'utente di descrivere dettagliatamente le interazioni coi registri e i pin di I/O. Non esisteva supporto a questa funzione nella documentazione, e il suo utilizzo era particolarmente limitato.

Lo strumento corrispondente di Freescale è CodeWarrior.

Questo ambiente di sviluppo è disponibile per diversi sistemi operativi (Mac, Windows, Linux, Solaris) e questo è già un grosso vantaggio rispetto a Microchip.

CodeWarrior non è gratuito, anche se esistono alcune versioni gratuite sul sito di Freescale che permettono la compilazione di una quantità limitata di codice.

Il limite è abbastanza alto e molte compagnie utilizzano queste versioni per lo sviluppo, e non solo come versioni dimostrative. Per quanto riguarda le caratteristiche i due IDE sono abbastanza simili. Anche CodeWarrior possiede un simulatore e permette la completa integrazione di soluzioni di debugging.

La modalità con cui è possibile visualizzare i registri sembra leggermente migliore nel tool di Freescale poichè essi possono essere mappati per diversi oggetti come display LED, o display a 7 segmenti ecc.

Un'altro articolo/tutorial di EMCElettronica in grado di fornire una descrizione dettagliata dell'utilizzo dell'ambiente di sviluppo e del simulatore di CodeWarrior può essere trovato nella sezione: Iniziare con CodeWarrior IDE della Freescale

Conclusioni

Anche se sembrano essere equivalenti in vari aspetti dei microntrollori, le soluzioni Freescale risultano essere migliori in alcuni campi, e questa potrebe essere una motivazione più che valida per cui molti sviluppatori per PIC stanno migrando verso Freescale. Esistono alcune periferiche disponibili nel portfolio Microchip che non trovano eguali in termini di footprint nella produzione Freescale, ma esiste anche un array abbastanza stupefacente di prodotti finali in cui le soluzioni Freescale sembrano dominare. La maggior parte delle PIC a 8 bit posseggono una versione corrispondente nelle periferiche Freescale, e questo vale anche per le periferiche del range dsPIC.

La lista completa di EMCelettronica che illustra le corrispondenze tra molti microntrollori delle due compagnie è disponibile nella sezione download (Microchip_Freescale_EMCElettronica list.xls), accessibile dopo avere effettuato la registrazione al sito.

RICHIESTA DI CONTATTO
Se desideri maggiori informazioni su questo prodotto Freescale, invia una richiesta ad Arrow utilizzando il seguente modulo.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di c1b8

Programmazione dei freescale

Una domanda.
I PIC della microchip sono facilmente programmabili tutti con lo stesso HW e SW, non mi pare sia così per i freescale (almeno da una rapida ricerca che ho effettuato).
Quali sono gli strumenti HW e SW utilizzabili per programmare la FLASH dei chip HC08, HCS08 o S12X?

Grazie.

ritratto di Emanuele

Programmatori o Debugger?

Prima di tutto bisogna fare una distinzione, tra programmatori e debugger, poi bisogna valutare la "profondità" del debugger da effettuare, ad esempio se per il progetto abbiamo bisogno di un emulatore completo oppure un semplice debugger.

Deciso questo, bisogna anche considerare se convenga acquistare una demo board per poter sviluppare il progetto.

Comunque su Microchip hai ragione, con l'ICD2 (ora ICD3) si possono debuggare tutti i micro (anche la serie 12, con un adattatore).

Per Freescale bisogna identificare la famiglia, quindi, il programmatore/emulatore, essendo piu specifico, spesso consente di avere maggiori opzioni di emulazione.
La risposta alla tua domanda è

M68CYCLONEPROE

Se ti serve domattina, lo trovi qui da Farnell
http://it.farnell.com/freescale-semiconductor/m68cycloneproe/programmer-in-cct-for-hc-s-08...

Se devi sviluppare un progetto ed hai necessità di supporto, allora compila il modulo di contatto
http://it.emcelettronica.com/contact/freescale

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 2 utenti e 49 visitatori collegati.

Ultimi Commenti