¿Por qué MPLAB IDE tiene tantos compiladores?

He aprendido que MPLAB IDE tiene diferentes compiladores como C18, XC8 y HI-Tech.

Quiero saber las siguientes cosas:

  1. ¿Por qué hay diferentes compiladores cuando uno puede hacer el trabajo?
  2. ¿Algunos compiladores solo se usan para microcontroladores específicos?
  3. ¿Hay más compiladores que estos 3 que debo tener en cuenta?
  4. Si se puede usar cualquier compilador para, por ejemplo, compilar el código PIC18F, ¿qué decide cuál elegir? Tengo muchas ganas de saber cómo decidir con cuál ir.
Las fuerzas del mercado ....................

Respuestas (2)

¿Por qué hay diferentes compiladores cuando uno puede hacer el trabajo?

Porque la gente los mejora con el tiempo.

C18 ha sido reemplazado por XC8. C18 es viejo y basura, por lo que hicieron XC8, que es mucho mejor. También aprovecharon para nombrarlo algo más lógico.

HI-Tech es un compilador de terceros escrito por otra persona a la que Microchip le compró los derechos. También está obsoleto a favor de XC8.

¿Algunos compiladores solo se usan para microcontroladores específicos?

Sí. A medida que se lanzan nuevos chips, el compilador tiene que admitirlos. Los compiladores antiguos que no se actualizan no admitirán los nuevos chips.

¿Hay más compiladores que estos 3 que debo tener en cuenta?

También existe el compilador SDCC de código abierto, pero es muy básico y solo tiene soporte parcial para PIC, y no funciona (que yo sepa) con MPLAB.

Otro, que usa su propio IDE, se llama CCS, aunque nunca lo he usado.

Si no le gusta C, hay varios compiladores BASIC para chips PIC de 8 bits, incluido Swordfish.

Si se puede usar cualquier compilador para, por ejemplo, compilar el código PIC18F, ¿qué decide cuál elegir? Tengo muchas ganas de saber cómo decidir con cuál ir.

Eso es simple: elige XC8 ya que es el compatible actualmente. Todos los demás son viejos y obsoletos.

Esta respuesta es acertada. Gracias. Queda un punto final. ¿Cuándo elegiría usar la opción MPASM en MPLAB? Hasta donde yo sé, esto es simplemente ensamblador. ¿Por qué dejar la comodidad del código C y escribir el programa completo en ensamblador?
Porque con el montaje tienes control total sobre absolutamente todo. Puede (si es bueno) escribir un código de huella muy, muy pequeño.
No se olvide de CCS <www.ccsinfo.com/content.php?page=compilers>. A mucha gente a la que respeto realmente le gusta ese compilador.
Tengo el compilador CCS C en mi máquina pero no puedo usar mi ICD3 con él. He publicado otra pregunta relacionada con ella. Lo que entiendo es que los compiladores más antiguos existen para el código heredado y no deben usarse para el código nuevo.
Con respecto a escribir en Assembler: eso es todo lo que escribimos tanto yo como mi compañero de trabajo. Aunque mi compañero de trabajo es competente con C, soy un anciano y mi cerebro simplemente no asimila C. Como resultado, me toma mucho más tiempo escribir cualquier programa dado en comparación con alguien que escribe en un lenguaje de alto nivel. Esto se compensa principalmente porque la mayoría de las cosas que escribo se usan durante mucho tiempo (décadas).
@quantum231: Consultaría los foros de CCS para obtener ayuda con su compilador ICD3 y CCS. Siempre tuve la impresión de que jugaban bien juntos.
@DwayneReid Aquí aquí para lenguaje ensamblador. Además de hacer proyectos PIC16 completamente en lenguaje ensamblador, también escribí ensamblador para PIC24 y PIC32 (¡no todo el proyecto, por supuesto!) En la década de 1970, alternaba ensamblador de programación para un PDP-8 (un registro, el acumulador) y un UNIVAC 1108 (18 acumuladores y 18 registros de índice).

Hasta ahora, la respuesta dada se limita a la microelectrónica PIC de 8 bits, pero el OP preguntó (en parte):

  1. ¿Por qué hay diferentes compiladores cuando uno puede hacer el trabajo?

  2. ¿Algunos compiladores solo se usan para microcontroladores específicos?

Responderé a estas dos preguntas juntas. Microchip no solo fabrica microcontroladores de 8 bits (PIC10, PIC12, PIC16, PIC18), sino también de 16 bits (PIC24/dsPIC33) y 32 bits (PIC32).

Cada uno de los PIC de 8 bits (excepto el PIC18) tiene conjuntos de instrucciones similares, utilizando un solo acumulador (W0), una pequeña cantidad de RAM (25-256 bytes) y una pila de llamadas de hardware. El conjunto de instrucciones originalmente tenía 35 instrucciones, pero se amplió a 49 instrucciones en dispositivos más nuevos para adaptarse mejor a los compiladores C (hasta ese momento, la mayoría de los programas 8-PIC se escribieron en código ensamblador; muchos todavía están en los chips con muy poca memoria flash). .)

Los dispositivos PIC18 agregaron soporte para una pila de software y una RAM mucho más grande. Tienen 75 instrucciones (83 para dispositivos más nuevos).

A pesar de todas estas diferencias (particularmente las diferencias entre el conjunto de instrucciones PIC de 8 bits de gama baja y el PIC18 de gama alta), el compilador XC8 es compatible con todas estas familias de PIC de 8 bits. Lo hace utilizando dos compiladores internamente: PICC y PICC18, y eligiendo cuál usar en función del procesador seleccionado.

Hay versiones gratuitas y de pago del compilador XC8; la única diferencia es la cantidad de optimización realizada.

El siguiente paso de los microcontroladores PIC de 8 bits son el PIC24 de 16 bits y el dsPIC33. Estos son muy similares: el dsPIC incluye el conjunto de instrucciones PIC24, pero también agrega instrucciones adicionales para hacer DSP (procesamiento de señal digital), de ahí su nombre. Estos procesadores PIC de 16 bits son compatibles con el compilador XC16. Aunque se pueden programar en lenguaje ensamblador, rara vez se hace, excepto en bucles muy estrechos o rutinas de servicio de interrupción (ISR) críticas en el tiempo.

Al igual que XC8, existen versiones gratuitas y de pago del compilador XC16; nuevamente, la diferencia es la cantidad de optimización realizada.

Y, por último, está la familia PIC32 de 32 bits, con un conjunto de instrucciones derivado de los MIPS de estilo RISC. Los dispositivos más nuevos pueden manejar hasta 2 MB de memoria flash y 512 K de datos. Los procesadores de 32 bits son compatibles con el compilador XC32. Al igual que el PIC24, rara vez se programan en lenguaje ensamblador. Y también, al igual que el compilador Like XC16, hay versiones gratuitas y de pago del compilador XC32; nuevamente, la diferencia es la cantidad de optimización realizada, algunas hasta en un 50%.

Tu respuesta es pura genialidad. Por cierto, compré el ICD3 que me recomendaste la última vez.