Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

12/09/2016 #1


Avr-gcc me dice que el compilador no está optimizado
Bueno, se me dio por probar el compilador de avr que brinda gcc para empezar a trabajar con sistemas GNU y cambiar un poco a las poco prácticas herramientas que brinda windows pero más que nada porque la inclución de sistemas GNU en sistemas enbebidos amerita a tener práctica en estas herramientas.

Realicé un simple programita en C para el atmega328p incluyendo la librería delay.h que la API de atmel ofrece. Efectivamente dicha librería se encuentra en el path correspondiente

/usr/lib/avr/include/util

incluyendo en la siguiente sentencia en el programa

#include <util/delay.h>


Pero primeramente no entiendo que me quiere decir la siguiente salida del proceso de compilación
#warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed" [-Wcpp]
# warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
efectivamente la optimización del compilador está deshabilitada ¿cómo se habilita? pero para empezar ¿por qué está deshabilitada?

Saludos.
12/09/2016 #2

Avatar de Ardogan

julian403 dijo: Ver Mensaje
efectivamente la optimización del compilador está deshabilitada ¿cómo se habilita? pero para empezar ¿por qué está deshabilitada?
¿Quizás ese error se va compilando con algún nivel de optimización distinto de -O0? (o, cero).
Tratá de compilar con -O2 a ver que pasa.

La optimización está deshabilitada por default al parecer, tiene lógica, porque durante el desarrollo uno quiere que el compilador no cambie el orden de las instrucciones, ni se ponga a hacer loop unrolling o a inlinear (que verbo que invente) funciones para salvar espacio de código y/o hacer que corra más rápido.

Si hay una relación simple entre código escrito y código objeto generado entonces es más fácil encontrar bugs, depurar, corregir... hasta tener una versión un poco más sólida y después sí se puede optimizar y corregir los errores nuevos que introduce la optimización (no haber declarado variables volatile cuando son usadas por interrupción, ejecución fuera de orden, etc).
12/09/2016 #3


Efectivamente la documentación establece que es necesario el parámetro -o0 como está estipulado acá: http://www.atmel.com/webdoc/AVRLibcR...e_reorder.html

Efectivamente, he ejecutado la siguiente orden en consola

avr-gcc -g -o0 -mmcu=atmega328p -c main.c

Y el problema persiste. Igualmente se menciona que la función delay de la librería delay.h no funcionará como está designada.
12/09/2016 #4

Avatar de Ardogan

julian403 dijo: Ver Mensaje
Y el problema persiste. Igualmente se menciona que la función delay de la librería delay.h no funcionará como está designada.
Claro... lo que podría pasar es que la función delay tarde más de lo que uno esperaría. No debería ser algo catastrófico a no ser que se precise un timing muy preciso.
Pero si es esperar a que pase cierto tiempo mínimo, y esperar un poco demás no afecta al resto del programa, sería irrelevante.
12/09/2016 #5


El archivo objeto es creado, por lo tanto es un aviso. Realmente es de consideración que el compilador tenga una salida con una recomendación con respecto a la implementación de un código y que en la documentación se recomiende que si es de precisión utiliza ensamblador. Es algo que hace robusto al sistema, tanto al avr como al toolchain de su programación.

Saludos.
12/09/2016 #6

Avatar de locodelafonola

hola
julian403 dijo: Ver Mensaje
El archivo objeto es creado, por lo tanto es un aviso. Realmente es de consideración que el compilador tenga una salida con una recomendación con respecto a la implementación de un código y que en la documentación se recomiende que si es de precisión utiliza ensamblador. Es algo que hace robusto al sistema, tanto al avr como al toolchain de su programación.

Saludos.
Los datos que proporcionas son inpresisos o nulos
por favor ., una captura de pantalla del compilador con el error
tambien que vercion de compilador usascomo asi tambien el modo que armas el proyecto en AVRstudio
13/09/2016 #7


Al código no lo escribo en un ide sino con nano. El compilador es gcc-avr 4.8.2 que corre en un sistema ubuntu 16.04 y la captura con el error que arroja el compilador está adjuntado en el primer comentario.

Es un simple código con una sentencia _delay_ms() que la puedo compilar en atmelstudio y no tengo problema, es más todos los códigos para avr los compilo en atmelstudio, pero esta vez quise probar la herramienta del daemon gcc que corre en ubuntu.
13/09/2016 #8

Avatar de locodelafonola

hola
julian403 dijo: Ver Mensaje
Al código no lo escribo en un ide sino con nano. El compilador es gcc-avr 4.8.2 que corre en un sistema ubuntu 16.04 y la captura con el error que arroja el compilador está adjuntado en el primer comentario.

Es un simple código con una sentencia _delay_ms() que la puedo compilar en atmelstudio y no tengo problema, es más todos los códigos para avr los compilo en atmelstudio, pero esta vez quise probar la herramienta del daemon gcc que corre en ubuntu.
la captura de pantalla es de la pagina de atmel
alli se nota claro que no es el AVR studio
sea linux o window ., la ventana que te tiene que aparecer es igual a esta
el AVR-GCC es parte del AVRstudio ., si programas arduino te recomiendo la ultima vercion ., esa trae para programar IDE arduino (las anteriores NO)
para la optimisacion de codigo ., ya sea ASM o C ., se hace desde esta ventana
alli se coloca el micro que usas ., el cristal y por supuesto ., la optimisacion del codigo ., la ventana es esta
Imágenes Adjuntas
Tipo de Archivo: jpg capture_09132016_203008.jpg (149,7 KB (Kilobytes), 14 visitas)
Tipo de Archivo: jpg capture_09132016_202740.jpg (58,8 KB (Kilobytes), 14 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.