Domanda

Stiamo iniziando un nuovo progetto basato su un microchip PIC18F252.Qual è il miglior compilatore "c" da utilizzare?

È stato utile?

Soluzione

tech PICC è sempre stato affidabile per me e ha avuto molti anni di sviluppo.

Altri suggerimenti

  1. Compilatore Microchip C18:davvero il migliore e il più semplice da usare.Perfetto per uso professionale.
  2. ALTA TECNOLOGIA:Utilizzato quando il Microchip non funziona (era per un PIC16).
  3. CCS
  4. SourceBoost

PS:Io stesso ho lavorato sulla famiglia PIC18F25XX e PIC18F45xx, quindi conosco un po' morso a questo proposito.;)

PS2:In caso di bug del compilatore (è capitato a noi), il team Microchip è piuttosto reattivo e le nuove versioni vengono rilasciate abbastanza rapidamente.Prova a trovare un rivenditore locale che abbia contatti con Microchip, quindi partecipa ad un evento con loro e ottieni contatti diretti.Inestimabile.

Alcuni anni fa ho svolto ricerche approfondite sul compilatore Hitech PICC18 e sul compilatore Microchip C18.

Penso che la maggior parte delle persone che decidono di utilizzare il compilatore Microchip C18 solo perché lo vedono quando visitano il sito Web di Microchip e hanno già familiarità con MpLab dall'assemblaggio (che è un terribile IDE IMHO).

La soluzione di HiTech è molto più vicina all'ANSI C (quindi il codice è molto più portabile).Con C18 hai aggiunto tutti i tipi di parole chiave specifiche del compilatore e sei costretto a gestire molto di più la memoria.

  1. È necessario specificare a quale banco ram allocare le variabili.
  2. Per allocare const string nello spazio del programma (invece che in ram) è necessario utilizzare la parola chiave rom.
  3. Non è possibile allocare variabili più grandi di 256 byte senza modificare uno script del linker.

Un eccellente confronto che va molto più in profondità può essere trovato qui: http://www.xargs.com/pic/picc18-vs-c18.html

Oltre al compilatore devi prendere in considerazione anche l'IDE.Sono un fan accanito di Eclipse e quindi mi è piaciuto molto HiTide di HiTech per questo motivo.Tuttavia, da quando Microchip ha acquistato HiTech...sembra che non supportino più HiTide.Non credo che sia ufficiale...ma dalla mia esperienza con il supporto HiTech...non risolvono più i bug, il che è un vero peccato.


Ho anche provato i loro compilatori professionisti.Mi piace davvero l'idea.Tuttavia, il mio progetto ha superato i requisiti del blocco automatico dei parametri e non è stato possibile utilizzarlo.Sembrava anche che la compilazione richiedesse molto tempo, ma avrebbe potuto essere a causa della complessità del programma.

Non utilizzo il compilatore Microchip, ma utilizzo i prodotti HiTech da anni.In genere mi è piaciuto il loro compilatore PIC16, ma trovo il loro compilatore PIC18 piuttosto frustrante.Anche se apprezzo il fatto di non dover inserire manualmente tutte le variabili nei banchi, le regole utilizzate dal compilatore di HiTech sono fastidiose, bizzarre e sciocche.Breve contesto:il chip ha 16 banchi di variabili da 256 byte (*non tutti i 256 byte sono disponibili in tutti i banchi) e un puntatore di banco.L'accesso diretto a una variabile richiede che venga selezionata la banca corretta;cambiare banca richiede un'istruzione.

Int e strutture globali e statiche, e relativi array, la cui dimensione varia da 2 a 255 byte, verranno allocati ciascuno in psect in base al modulo;la sezione di ogni modulo deve stare in una pagina da 256 byte.Gli array di byte, così come i singoli byte, vanno in una sezione "grande" in cui si presume che ogni byte risieda possibilmente in una pagina diversa.

Tutte le variabili automatiche e i parametri del programma devono rientrare in una pagina da 256 byte (vengono allocati staticamente al momento del collegamento).Il linker sovrappone variabili che non sono mai attive simultaneamente, ma presuppone che qualsiasi chiamata a un puntatore a funzione con una firma particolare possa chiamare qualsiasi funzione il cui indirizzo viene preso e che ha quella firma.

È possibile dichiarare "near" fino a 128 byte di variabili globali e statiche.È possibile accedervi senza cambiare banca.Non è possibile designare che le variabili oi parametri automatici siano posizionati 'vicino'.

Le regole di cambio di banco utilizzate da HiTech significano che molte funzioni, anche se non utilizzano mai variabili al di fuori del proprio modulo, saranno cosparse di istruzioni movlb (switch-bank).

Non voglio la "generazione di codice onnisciente".Voglio la possibilità di aggiungere alcuni suggerimenti per posizionare le cose in modo sensato definendo parole chiave o macro per psects personalizzati, consentendo alle variabili automatiche e locali di condividere psects con altre variabili (sovrapponendo variabili/parametri automatici nella misura possibile date le restrizioni bancarie specificate).Se un fornitore di compilatori vuole davvero essere gentile, consenti ai puntatori di accettare qualificatori bancari, in modo che un puntatore che indichi sempre e solo cose in un determinato aspetto possa essere memorizzato in 8 bit.Allo stesso modo, consentire ai qualificatori bancari su funzioni e puntatori a funzione di specificare che determinate chiamate indirette possono funzionare solo con determinate funzioni.Invece di rendere i puntatori a funzione a 24 bit o dover lavorare per garantire che le funzioni chiamate indirette finiscano nel primo 64K, inserire un GOTO automatico nel primo 64K in modo che i puntatori a funzione possano essere a 16 bit.O meglio ancora, se una "classe" di funzione ha meno di 64 funzioni diverse, utilizza un puntatore a 8 bit.

Sto chiedendo troppo?

Noi usiamo CCS ed è abbastanza buonoMolto lento, ma funziona bene.Ad ogni modo, non ho paragoni con altri compilatori, quindi potrebbero esserci scelte migliori.

Non mi piaceva CCS, era troppo bizzarro.

SourceBoost non è male ed è piuttosto economico, circa £ 40.

Il compilatore Microchip C18 è il migliore IMO, ma molto costoso.Esiste però una demo gratuita/edizione per studenti.

Attualmente utilizzo CCS e lo odio.È così non standard e così tanto un sottoinsieme di C, che fa semplicemente schifo.Sto pensando di cambiare a breve.Proverò prima il compilatore Microchip C18, poi deglutirò a fatica e otterrò HighTech che sembra piuttosto solido dalla revisione della versione di prova e degli esempi.

Il sistema IAR ha un compilatore/IDE PIC18: Workbench integrato IAR per PIC18.

Utilizzo CCS da molti anni.Ho trovato alcuni bug ma il supporto è ottimo e posso sviluppare più velocemente e più facilmente con CCS che con C18 o HiTec

usa sdcc:

http://sdcc.sourceforge.net/

e per il compilatore PIC non libero (ma gratuito!), mikroC è gr8!

http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/

HTH

Vorrei insistere affinché tu utilizzi il compilatore C18.È estremamente robusto e molto facile da usare.È un must per lo sviluppo professionale.Dipende davvero dalle dimensioni del progetto su cui stai lavorando.

Inizia con l'edizione gratuita/per studenti e avrai una buona sensazione di utilizzo.Se il tuo progetto è piccolo, potrebbe essere tutto ciò di cui hai bisogno.Ho appena terminato un progetto di sviluppo di grandi dimensioni su un PIC 18F e sono rimasto estremamente soddisfatto del compilatore C18.

MPLAB C18 - Studente

Utilizzo SourceBoost da circa un anno e non sono del tutto entusiasta, ma va bene.Tuttavia, ho appena completato un test sulla dimensione del codice tra SourceBoost 7, MCC18 e Hi-Tech C.I risultati sono stati notevoli.

Per un piccolo programma di esempio (che includeva strutture, array, puntatori a funzioni, puntatori a struttura, caratteri e interi) il kit SB7 ha prodotto un codice che era circa 2/3 della dimensione di MCC18 e HTC.Volevo determinare quanto di questo era l'overhead di avvio e di runtime, quindi ho aggiunto più elementi casuali al programma di esempio e il delta dimensione ha mostrato che SB era ancora 2/3 della dimensione degli altri.HTC era leggermente più piccolo di MCC18, ma non in modo significativo.Tutte le ottimizzazioni sono attive in tutti gli ambienti.

Le cose che non mi piacciono di SB sono:

  • assemblatore in linea limitato
  • lento da compilare e collegare
  • L'IDE è solo leggermente migliore di MPLAB.

Le cose che mi piacciono sono:

  • Bene, la dimensione del codice sembra sicuramente inferiore a quella della concorrenza.
  • Alcune estensioni alla lingua (ad es.Riferimenti).Uccide la portabilità, però.
  • Il prezzo.
  • Il supporto tramite i forum è in realtà piuttosto buono.Gli autori postano spesso.
  • Eliminazione automatica del codice inutilizzato (penso che questa funzionalità rallenti la compilazione e il collegamento)

Dato che non mi piace l'IDE SB, utilizzo Source Insight per un editor ed è FANTASTICO!Anche l'utilità "make" di SB è senza speranza, quindi utilizzo GnuWin32 make, che è assolutamente un vero affare e gratuito.

Quindi, tutto sommato, mi sento un po' meglio riguardo alla scelta degli strumenti.

Comunque, spero che questo aiuti qualcuno là fuori.

MPLAB C-18 è carino e hanno una versione per studenti gratuita.Ha una buona interfaccia utente che è abbastanza semplice da non confondere gli utenti.È quello che uso.

Se riesci a farla franca (la mia preferenza sarebbe) usa l'assemblatore PIC18 con MPLAB.Ha il vantaggio di essere gratuito e relativamente ben documentato oltre al fatto che ha un discreto supporto per hardwars/debugger.Il suo piccolo set di istruzioni e la sua semplicità hanno portato a una codifica facile e veloce.

Se sei impostato su c però:

CCS è un buon compilatore da usare, un po' difettoso e piuttosto costoso ma ha anche buone capacità di debug.

Microsoft Embedded Studio (o qualcosa del genere) è eccellente se sei già abituato alla metodologia di Visual Studio 6 per scrivere codice c.Anche in questo caso buon supporto hardware e eccellente debugger.

Credo che se stai cercando una soluzione gratuita puoi effettivamente ottenere compilatori c per MPLAB, anche se personalmente non ne ho mai usato nessuno, quindi non posso esprimere un giudizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top