Autor Tema: ATMEL STUDIO 7 no genera .hex y .elf  (Leído 6434 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
ATMEL STUDIO 7 no genera .hex y .elf
« en: 07 de Octubre de 2017, 14:13:07 »
Hola compañeros, bueno nunca he programado un avr y me dio por hacerlo el dia de ayer.
Me descargue el Atmel Studio 7 y me hice un blik led.
El programa compilo y todo pero no me crea el .hex ni el .elf.

Por mientras necesito el el .elf para simular (seria mejor el .cof pero tampoco lo hace), y busque info por internet y note que debía crear el .elf por las mías.

¿No existe un método o una opción el Atmel Studio para generar el .hex, el .elf y el .cof para poder simular ?

Saludos

Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 214
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #1 en: 08 de Octubre de 2017, 05:14:15 »
la verdad no uso Atmel Studio....   pero lo tengo instalado y a raiz de tu pregunta he creado un "project",  eligiendo la opción "C/C++"  y empleo la segunda "GCC Executable Project",  le doy nombre y directorio,  en el archivo main.c de la ide meto mi código crudo (seria un archivo fuente del gcc-avr),  ahora le doy al F7,  al  compilar,  dentro del directorio que elegi,  hay otro más "Debug" y en él aparece el .hex y el .elf,  al primero se lo doy sin problemas al proteus. ...  y me funka...

Esperemos que aparezca un sabiondo del avr..  con el Atmel Studio,  no sé que estarás haciendo mal...

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #2 en: 08 de Octubre de 2017, 20:25:48 »
gracias por responder.

Pude generar el .elf mediante las opciones que hay en el toolchain-->AVR/GNU C Compiler-->Debbug level--> Maximun (- g3) y ahi me aparecieron el .hex y el .elf

Me hice un blink led  para el Atmega328p y no me simula el ISIS. Posteare mi código en una de esas esta mal algo.
Código: C
  1. #define F_CPU 8000000UL  // 1 MHz
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4. //#include <avr/wdt.h>
  5. int main(void)
  6. {
  7.         //MCUSR= ~(1<<WDRF);
  8.         //wdt_disable();
  9.         DDRB = 0xFF;
  10.     /* Replace with your application code */
  11.     while (1)
  12.     {
  13.                 PORTB = 0xFF;
  14.                 _delay_ms(1000);
  15.                 PORTB = 0x00;
  16.                 _delay_ms(1000);               
  17.     }
  18. }

Yo creo que no me esta funcionando la función _delay_ms() (no se me ocurre que otra cosa pudiera ser) pero busque como hacer lo mismo con el Winavr y tampoco me hace el blink (usando el mismo código).

¿Que podría ser?

PD: ¿Que programa utilizas tu?

Saludos


Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 441
    • Mcu Tronics
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #3 en: 09 de Octubre de 2017, 01:34:44 »
He creado un proyecto, lo he compilado y también me funciona, si lo simula ISIS Proteus, lo que si noto en mi simulación es que va lenta, pero eso debe ser algo que tengo mal en mi ISIS Proteus.

Al parecer el código esta bien.
Nunca se deja de aprender

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #4 en: 09 de Octubre de 2017, 12:16:23 »
Código: [Seleccionar]
El programa compilo y todo pero no me crea el .hex ni el .elf.


Tienes Que Crear Una Carpeta Nueva Antes En Tu Disco Duro
Por Ejemplo Yo La Tengo Creada En Otro Disco
Y La e LLamado AvrStudio Y Ahi Van Todos Mis Projectos Compilados

Una Vez Creado Esta Carpeta Nueva Es Cuando Ya Puedes Empezar
A Crear Un Nuevo Projecto
Para Ello Escribimos En La Casilla " Project Name " El Nombre Que
Queremos Darle Al Nuevo Projecto

Fijate En La Parte De Abajo De La Ventana Hay Una Casilla
Que Pone " Location " 
Para Eso Al Lado De Location Pincha En La Pestanita Que Trae " ..."
Unos Puntos Suspendidos Y Esta Es la Carpeta Donde Se Guardara
El Projecto Creado En Formato .Hex
Pero Para Eso Antes Y Como Es La Primera Vez Que Lo Haces
Ahi Tienes Que Poner El Nombre De La Carpeta Que Creaste Antes
Luego Cuando Compilas Tu Projecto
Vete A Esta Carpeta Creada Y Veras En Esta Misma Carpeta Una Nueva Carpeta Creada
Con El Nombre De Tu Primer Ejemplo

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #5 en: 09 de Octubre de 2017, 15:00:09 »
Gracias compañeros me funciono.

Guarde el proyecto en una capeta distinta a la que viene por default, como me dijo Belgitaes  ((:-))

Ahora me ocurrió lo mismo que dijo thegame también simula lento (uso el proteus 7), pero logre que fuera mas rápido cambiando la frecuencia de la #define F_CPU 1000000UL  // 1 MHz  :? (no se por que funciona así )

Lo otro compañeros, saben como crear un .COF para simular??
El .ELF no me muestra mi programa cuando hago el debug (solo los registros)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #6 en: 09 de Octubre de 2017, 15:04:11 »
El Proteus no tiene en cuenta esas cosas, deben hacer doble click sobre el componente y fijarse que frecuencia tiene "configurada" en el proteus.

A lo que me refiero es que no hace caso al codigo o los FUSES, ni tampoco al cristal que le pongan.

Respecto al #define es para uso del compilador nomas, asi sabe cuantos ciclos generar para crear la demora. Seguramente en el proteus tienen puesto como una frecuencia de 1Mhz.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #7 en: 09 de Octubre de 2017, 15:40:20 »
KillerJC, dentro del componente hay dos opciones acerca de la frecuencia.
Una es un fuses, que tiene varias opciones y yo estoy usando la (0010) Int. RC Osc. 8Mhz. Como dice tu Kiiler no debiera afectar ese fuses.
La segunda opción es esta en el Advances Properties, donde esta la Clock Frecuency. De un inicio viene con el parámetro "default" con es parametro simule para una F_CPU de 8MHz y anda lento. simule para una F_CPU 1 MHz y han rapido.

Ahora cambie el valor de "default" a 8MHz y simule para F_CPU de 8MHz y también va lento, y para 1 MHz funciona igual que estuviera con el "default" seleccionado  :?

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #8 en: 09 de Octubre de 2017, 15:44:14 »
Creo q lo solucione XD

Dentro del componente hay una opción de un divisor de clock que vine con la opción de programado (era el unico) lo cambie a Unprogramed y funciono para 8MHZ

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #9 en: 10 de Octubre de 2017, 02:17:24 »
Código: [Seleccionar]

El Proteus no tiene en cuenta esas cosas, deben hacer doble click sobre el componente
 y fijarse que frecuencia tiene "configurada" en el proteus.

A lo que me refiero es que no hace caso al codigo o los FUSES,
ni tampoco al cristal que le pongan.


Perdona ...Pero Si Si Que Hace Caso
Si Quiere Cambiar La Frecuencia Del Cristal
Tienes Una Opcion Para Ello
Para Eso Ticas Sobre Generator Mode Y Luego Sobre DCLOCK
Y Lo Comunicas Con El Cristal
Una Vez Hecho Eso Ticas Sobre El 2 Veces Y Se Te Abrira Un Menu
Y Ya le Puedes Poner La Frecuencia Que Quieres Al Cristal
Y Luego Simulas En Proteus
Te Subo 2 Fotos Pa Que Lo Puedas Entender Mejor

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #10 en: 10 de Octubre de 2017, 08:03:46 »
Parece un poco mas completo el modelo que con los PICs, en los PICs si haces doble click sobre el PIC tenes la opcion de poner la frecuencia ( Processor Clock Frecuency). Y si le pones un cristal o configurar los fuses a interno, etc, simplemente lo omite. Pense que iba hacer lo mismo con los de Atmel, ya que siguiendo la logica, para que se van a complicar con una sola empresa de microcontroladores.

En el ATmega328p tambien tenes lo mismo, en donde dice "Advance Properties" -> Clock Frecuency, pero es cierto, este tiene todo los FUSES ahi para modificar. Un error mio el pensar que los trataba por igual.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #11 en: 10 de Octubre de 2017, 12:56:05 »
ahh, entonces hay que tener cuidado con los fuses. Observando viene mi programa y los fuses estoy utilizando el oscilador interno por eso no me ha dado problemas con eso. Gracias por el aviso  :)

Otra consulta compañeros, bueno cuando el Atmel Studio no generaba el .ELF llegue a un video de Atmel Studio donde enseñan a crear un .ELF mediante directivas __attribute_ y secction.
Ademas en una web lei que el .ELF es un formato mas actualizado que el .COF, y bueno para mi es mucho mejor  el .COF  ya que me permite ver el código y registros, encambro el .ELF solo me ha dejado ver los registros.

Entonces compañeros tengo unas dudas

¿Por que los compiladores (bueno lo he visto hasta ahora en el Atmel Studio y el XC8 xD) por default generan el .ELF?
¿El .ELF tiene mas utilidad para un debuggeo físico que en una simulación?
¿Se puede crear un .ELF a gusto de usuario?? 

PD: este es el video
PD2: aun estoy entendiendo bien lo que es el .ELF y el COF, ya que aun no domino al 100% su significado  :(

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #12 en: 10 de Octubre de 2017, 14:16:52 »
A mi entender sin meterme demasiado es que el ELF tiene muchas mas informacion que los demas formatos.

https://es.wikipedia.org/wiki/Anexo:Comparaci%C3%B3n_de_formatos_de_archivos_ejecutables

Y rescato esto de la wikipedia

Citar
El formato de archivo de objeto original de Unix —a.out— no era capaz de soportar adecuadamente bibliotecas compartidas (shared libraries), identificación de formatos extraños o enlazado explícito de direcciones. Como el desarrollo de los sistemas Unix-like continuaba tanto dentro como fuera de AT&T, surgieron diferentes soluciones a este y otros temas.

COFF fue introducido en UNIX System V de AT&T para las plataformas de 32 bits no-VAX, como el 3B20. COFF implicó mejoras con respecto al formato a.out, incluyendo secciones arbitrarias (de memoria), declaraciones explícitas de procesador, y la vinculación de direcciones explícita.

Sin embargo, el diseño de COFF era limitado e incompleto: había un límite en el número máximo de secciones, un límite en la longitud de los nombres de sección incluyendo archivos fuente, y la información simbólica de depuración era incapaz de soportar lenguajes como C, y mucho menos lenguajes más nuevos como C++ o de soportar nuevos procesadores. Como resultado de esto, en el mundo real, todas las implementaciones de COFF necesariamente fueron violaciones de los estándares. Esto condujo a numerosas extensiones COFF. IBM usó el formato XCOFF en su sistema operativo AIX. DEC, SGI y otros usaron ECOFF. Numerosas adaptaciones de SysV y herramientas de desarrollo para sistemas empotrados utilizaron sus propias variaciones, normalmente incompatibles entre ellas.

Con el lanzamiento de SVR4, AT&T remplaza COFF con ELF.

https://es.wikipedia.org/wiki/Executable_and_Linkable_Format

----------------------

__attribute_ y secction.

son del compilador, pero no es para crear el .elf

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re:ATMEL STUDIO 7 no genera .hex y .elf
« Respuesta #13 en: 14 de Octubre de 2017, 06:35:02 »
Te Subo Un Ejemplo Con Un Atmega88
Haciendo Un Blink Led Con Proteus Y AvrStudio
Por Si Quieres Probar la Simulacion
Te Subo El Code " Archivo ASM "Y El .Hex
Viene Todo En La Carpeta LED .zip

* LED.JPG
(109.15 kB, 896x631 - visto 2124 veces)


 

anything