Domanda

Come si confronta Keil con GCC per lo sviluppo ARM7? Sono in procinto di scegliere consulenti hw per un progetto di medie dimensioni e alcuni usano keil e altri usano gcc. Mi piacerebbe conoscere i gotcha coinvolti in entrambe le opzioni ...

È stato utile?

Soluzione

C'è una differenza molto piccola tra i due dal punto di vista della codifica / sviluppo. L'unica cosa che penso che dovresti considerare non è specifica per questi compilatori. Manutenzione :

  • Sarai in grado di mantenere il software se non si ha accesso a il compilatore Keil o sarà a costo minore?
  • Anche quale debughardware / JTAG è supportato e quale sarà il costo se ne hai bisogno?
  • Quale sarà il costo se devi passare da un compilatore all'altro compilatore a causa della necessità di cambiare gli sviluppatori più tardi?

A meno che tu non sia molto sensibile ai costi, penso che la vera domanda sia chi farà il miglior lavoro dato che il compilatore sarà un problema minore.

Altri suggerimenti

Dovrebbe essere possibile strutturare il codice per utilizzare entrambi i compilatori. Attributi come " imballato " può essere impostato su macro in modo che il codice sia felice sotto entrambi. Spingi i dettagli hardware a livelli inferiori e configura le mappe hardware in fase di esecuzione anziché in fase di compilazione. Se devi avere versioni separate di Kiel e GCC di un pezzo di codice, inseriscile in file separati e configura quale viene usato con gcc make o il file di progetto Kiel.

Un problema che devo ancora risolvere è il codice assembler. Kiel usa armasm, mentre gcc usa as. Sembrano avere formati di codice sorgente molto diversi. Un altro motivo per evitare l'assemblatore, se possibile.

Il vantaggio di utilizzare GCC è che puoi scegliere come target piattaforme non ARM - ideale per simulare la tua applicazione su una piattaforma con strumenti di sviluppo molto migliori (vale a dire valgrind in x86 linux). In realtà, questo è l'approccio che ogni dovrebbe avere come applicazione ARM. Sviluppare prima su x86, quindi port su ARM.

C'è anche il costo di rimanere aggiornati con Kiel. Una volta il posto che conosco è bloccato su RVDK 2.1 (2002?) Perché il costo per l'aggiornamento all'ultimo per tre sviluppatori è proibitivo.

Aggiungo anche quel gcc & amp; pedantic scuoterà avvertimenti ed errori nel tuo codice molto meglio della nostra (dichiaratamente antica) versione di Kiel.

Kiel potrebbe fornire un codice ARM più stretto, quindi tienilo per fare build target. Altrimenti usa GCC.

Se ricordo bene Kiel è ora di proprietà di ARM. I compilatori ARM sono giorno e notte migliori di gcc per produrre un buon codice. Mi sembra di ricordare Keil tra cui una versione ridotta o gratuita o qualunque altra versione di rvct. Quindi la mia domanda è avere codice molto più veloce, più pulito e migliore che vale la pena usare una soluzione commerciale quando gcc è disponibile e ben utilizzato? Andrei con gcc a meno che tu non sia in una situazione di crisi delle prestazioni e non sei disposto a tradurre mentalmente tra tutte le informazioni basate su gcc liberamente disponibili in rete nei tuoi strumenti commerciali e viceversa. In generale, andare con gcc è probabilmente il percorso migliore, a condizione che ci sia probabilmente una grande quantità di informazioni dietro la casella di ricerca di Google per Kiel, ma la quantità di conoscenza e informazioni per le soluzioni basate su gcc lo ombreggia.

Se i consulenti stanno usando uno strumento per fare il lavoro iniziale per un progetto per te e poi alla fine consegnano il lavoro, probabilmente vorrai avere una soluzione basata su gcc (questo non significa che vxworks gcc, o anche codice sourcery gcc, ma una soluzione gcc generica), perché senza dubbio tu o qualcun altro che assumerete dovrete raccogliere questa massa e correre con essa e con gcc è più probabile trovare qualcuno disposto e capace.

Il principale vantaggio di una soluzione commerciale è il supporto per me in caso di problemi con il compilatore o le librerie.
L'open source va bene quando si utilizza l'hardware del flusso principale (nel caso di gcc = x86). La maggior parte dei problemi del compilatore o delle librerie normalmente verrà risolta molto presto dalla community.
Se stai sviluppando su una piattaforma incorporata (forse esotica), presto ti sentirai abbastanza solo se hai problemi con la catena di strumenti.

Usiamo la piattaforma Keil e siamo molto soddisfatti delle sue prestazioni e ottimizzazione. Ho eseguito alcuni benchmark standard un paio di anni fa ed erano abbastanza buoni. Un'altra considerazione è il supporto e finora Keil ha avuto tempi di risposta molto buoni e feedback relativamente buoni su alcuni problemi difficili.

Cordiali saluti, se il tuo progetto utilizzerà Keil RTOS e hai domande al riguardo, il codice sorgente è disponibile per l'acquisto.

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