Estrategias para administrar el tamaño del código - PIC18 XC8

6

Soy nuevo en el desarrollo de C embebido y estoy buscando algunos principios generales / pautas para administrar el tamaño del código generado.

En mi ejemplo específico, estoy usando XC8 en un PIC18F4550. Mi código hasta ahora utiliza alrededor del 13% del espacio. Una vez que uso las funciones "time.h" y 1/2, ¡el uso salta al 45%! Me doy cuenta de que el compilador XC8 gratuito no se optimiza, pero aún estoy muy sorprendido de ver cuánto espacio se utiliza.

Lo que estoy buscando consejos / puntos de partida en la línea de

  • Alternativas a las bibliotecas estándar que se implementan en pequeños subconjuntos específicos de la funcionalidad. P.ej. una fecha / hora lib. es decir, ¿hay reposiciones de las que pueda obtener rutinas útiles?
  • Cómo ver lo que está usando todo el espacio. (Listado de archivos de mapas, y consejos para analizarlos)
  • Cualquier otro consejo / recurso.

EDIT : Encontré una buena implementación sin usar stdlib aquí: enlace

La pregunta general sigue en pie, sin embargo. ¿Existen directrices, buenas fuentes de repositorio, etc.?

    
pregunta Andre

3 respuestas

1

Aquí hay algunas cosas que he hecho al usar el compilador Microchips C18. Tal vez los conceptos se apliquen a tu compilador: - Declara cada cadena una vez. Coloque un archivo .c separado y use un archivo .h para hacer referencia a ellos. En otras palabras, no duplique los mensajes de visualización varias veces. - Declaran cuerdas para que vayan en rom. Esto no te ayudará con la ROM (espacio de código) pero ahorrará memoria. - Escribir código apretado. Si varias líneas de código están duplicadas, póngalas en una función. Copiar / pegar no es necesario un mejor amigo de programadores integrados. - como ya pensaste, implementa tus propias funciones en lugar de incluir una biblioteca. Una vez salvé un montón de espacio creando mi propia función itoa (). Intenta no utilizar printf.

    
respondido por el BrianK
2

He mirado a mi alrededor y aquí están los consejos que puedo encontrar

  1. Escribe mejor código. El tamaño y la velocidad del código deben considerarse en cada paso del camino.
  2. El compilador / enlazador de C solo usará las funciones que realmente usa. Así que solo incluir un .h no debe aumentar el tamaño del código (mucho)
  3. Sin embargo, las funciones estándar son a menudo más genéricas de lo que necesita. Es posible escribir versiones más pequeñas que solo hacen lo que usted solicitó
  4. Cadenas compartidas según la respuesta de @ BrianK

Luego hay algunas alternativas que no abordan el problema central del tamaño del código, pero es posible que deban considerarse si todo lo demás falla

  1. Usa un PIC con más espacio
  2. Usa un compilador de optimización, por ejemplo, MPLAB Pro
  3. Use el ensamblador para algunos o todos los códigos

Todavía me gustaría una forma fácil de ver qué funciones y qué funciones incluidas utilizan más espacio. Actualizaré aquí si encuentro una manera fácil de hacerlo.

    
respondido por el Andre
1

La implementación de su propia versión de funciones estándar en lugar de incluir toda la biblioteca puede ayudar. Hay un millón de optimizaciones más pequeñas y específicas que puedes hacer, pero una buena colección de referencia de este tipo de trucos es el libro Hackers Delicia . Es muy práctico (especialmente para los juegos de bits, como lo haces a menudo con un microcontrolador) y lo recomiendo.

    
respondido por el aloishis89

Lea otras preguntas en las etiquetas