Tras el suficiente número de cabezazos contra la pared tiro la toalla (por ahora) y recurro a vuestra infinita paciencia y conocimientos y solicito vuestra ayuda.
Tengo un firmware para un PIC 18FXXXX que presenta distintos "sabores". Cada uno de los cuales se consigue mediante el correspondiente #define. Obtener todos los sabores es tarea mecánica y tediosa: Editar el fuente, activar el correspondiente #define, compilar, renombrar el hex y volver a empezar. Así hasta una docena de veces, una por cada uno de los #define definidos.
Para eso nada mejor que usar un fichero .BAT para automatizar el proceso llamando n veces al compilador con las opciones oportunas, que las tiene, y generar de una sola tacada todos esos "sabores" a los que me refiero.
Se me presentaba cosa fácil de plantear y más fácil aún de poner en marcha. Sin embargo - con la iglesia hemos topado, querido Sancho - que decía Cervantes, don Miguel, poniéndolo en boca de su Quijote, don Alonso Quijano.
Tras una larga serie de pruebas, configuraciones y ubicaciones de mi fichero-proceso-por-lotes no consigo mas que un escueto mensaje de:
1 Error: The selected compiler: "PCH" is not installed on this PC
- Eppuur si muove - (y sin embargo se mueve) que en boca de Galileo quería decir que - si, coño, que si tengo instalado del PCH - porque compilando a través del IDE PCW todo va como la seda y compilar, compila.
Leída la ayuda del compilador, Ccsc.chm, el summun de la sapiencia oficial del CCS C y haciéndole el caso al que su mérito nos obliga llego a la clara conclusión de que solo hay una cosa clara: y es que no funciona o yo soy tonto del bote.
Item más. Os doy mas datos.
El directorio de instalación del CCS C está añadido hábilmente a la variable de sistema de Windows (XP) Path por lo que cualquier llamada a un EXE u similar es prontamente encontrada y ejecutada.
En un principio no he hecho uso de ningún #define en el Command Line ya que deseaba empezar por compilar inicialmente tal y como compilo desde el IDE PCW así que me monté una con esta apariencia:
ccsc +FH +ES -D -T -A -EW -L -P -M -J MyFirmware.c
de nombre MyCommandLine.bat que alojé en el mismo directorio donde se encontraba dicho MyFirmware.c
Las opciones utilizadas extraídas (o extractas) directamente de la Ayuda de CCS C significan lo siquiente:
+FH Select PCH (PIC18XXX)
+ES Standard error file
-D Do not create debug file
-T Do not generate a tree file
-A Do not create stats file (.STA)
-EW Suppress warnings (use with +EA)
-L Do not create list file
-P Close compile window after compile is complete
-M Do not create symbol file
-J Do not create PJT file
Como veis mas que nada es una pura negación, solo que compile y que no genera nada accesorio.
Pero su única salida, lo único que genera es un fichero MyFirmware.err con 1
Continué leyendo y vi que opciones cargadas en CCS.INI se procesaban antes que los parámetros añadidos a mi Command Line pero en este fichero sólo hay un "include" con los directorios de de includes, drivers, etc.
Moví entonces el fichero de procesado .BAT al mismo directorio del CCS C y cambié el nombre del fuente a compilar añadiéndole el directorio completo donde se encontraba éste:
ccsc +FH +ES -D -T -A -EW -L -P -M -J C:\MisFirmwares\MyFirmware.c
Pero el resultado fué el mismo: 1 Error: ...
Y no se me ocurre más que hacer. No sé qué leches es lo que pone el IDE PCW que yo no pongo para compilar.
¿Hay algún alma caritativa que se le ocurra algo que probar y evitar 1? por que yo ya tengo seca la fuente del ingenio.
Ea, ahí queda eso.