Autor Tema: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G  (Leído 6468 veces)

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

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Hola,

La consulta es que con el micro que dispongo (MC68HC908GZ60) tengo de RAM 2048 Bytes, pero no comprendo porque en el DATA del CODEWARRIOR me sale 4075, en la carpeta Libs de la imagen que te adjunto hay unos 2018 bytes fijos que se crean con el programa y unos 229 que se crean con las Beans si le resto esto al Data (4075 – 2018 – 229 = 1828)  tendría sentido que esas es la parte de memoria que tengo ocupado respecto a los 2048 que tiene el micro ¿es esto correcto?.
O como puedo saber la cantidad de memoria de que dispongo del micro.

Muchas gracias.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #1 en: 10 de Agosto de 2011, 13:27:21 »
Hola este micro tiene 2048 bytes de RAM, la información correcta siempre la tiene el data sheet. En la imagen que adjuntas, que es del Proccess Expert no del CodeWarrior, te lo esta indicando correctamente.

  • Memory Area1 llamada Zero Page, tamaño 32 bytes, en la imagen el valor esta en hexa
  • Memory Area2 llamada RAM, tamaño 992 bytes
  • Memory Area3 llamada RAM1, tamaño 1024 bytes

Si sumas los 3 valores te da 2048 bytes, el tema de la distinción de las tres areas, es por dos motivos:

  • En casi todos los micros FreeScale existen direccionamiento directo, donde el opcode para su uso es menor que usando el direccionamiento extendido ( 1 byte menos ), este es área Zero Page
  • La RAM no es continua, tenes digamos los 1024 bytes mas altos en otras direcciones

Entonces para ir alocando variables en estas áreas, tenes que anteponer un pragma para instruir al compilador donde queres que aloque la variable, esto es solamente para variables globales. Debes consultar al archivo de configuración del linker ( *.prm ) para saber el nombre correcto del área correspondiente.

Saludos !
« Última modificación: 10 de Agosto de 2011, 13:31:05 por RICHI777 »

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #2 en: 11 de Agosto de 2011, 03:46:06 »
Hola RICHI777, Encantado de poder hablar contigo.

Antetodo gracias por la velocidad de respuesta. Voy por pasos haber si entiendo todo lo que me respondes. Lo que es el Proccess Expert y no el CodeWarrior OK, es que al ver en la pestaña del freescale CodeWarrior me he liado pero perfecto ya se que estoy trabajando con el Proccess Expert.
Y luego a la respuesta que me das a mi pregunta, te genero unas dudas mas.

1.- La duda de la memoria RAM es por que en mi programa a la hora de compilar no hace muchos me surgio el siguiente ERROR. " L1102 ERROR out off allocation space in segment RAM1 at address 0x980 ", yo me imagine que este error era porque no tenia suficiente espacio de RAM en el micro y entonces me puse a investigar por las web de freescale sin demasiado existo lo maximo que encontre es que a lo mejor tenia limitada la memoria RAM ¿pero creo que no es ese mi caso?.
Entonces al ver este FORO decidi hacer la consulta porque no entiendo porque en la nueva imagen que adjunto (te he marcado con circulos rojos lo que no entiendo) si el micro dispone de 2048 bytes porque en el DATA del Proccess Expert aparece 4075 y por ese motivo en la primera pregunta de este hilo hacia la siguiente duda (la carpeta Libs de la imagen que te adjunto hay unos 2018 bytes fijos que se crean con el programa y unos 229 que se crean con las Beans si le resto esto al Data (4075 – 2018 – 229 = 1828)  tendría sentido que esas es la parte de memoria que tengo ocupado respecto a los 2048 que tiene el micro")

2.- Luego mi siguiente duda que en realidad esta relacionada con la RAM es que el problema de la RAM me surgio cuando cree unas arrays de xxx[8] en total unas 12 de variables array unsigned char y desde ese momento me surgio el ERROR L1102 y aunque he conseguido que deje de salir el ERROR tengo la sensacion cuando hago pruebas en el programa, que hay variables que van a su bola y se quedan activas cuando no toca y demas efectos relacionados con las variable globales que no tienen demasiado sentido. Entonces mi duda es ¿si hay alguna forma de optimizar o de que con el direccionamiento directo y indirecto consiga tener mas espacio y poder crear mas variables? o con este micro voy muy justo  y si hay algun lugar en el Proccess Expert para saber el espacio de RAM que me queda libre.

Muchas gracias. Siento el discurso.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #3 en: 11 de Agosto de 2011, 11:44:47 »
Hola, vamos por partes.

Citar
1.- La duda de la memoria RAM es por que en mi programa a la hora de compilar no hace muchos me surgio el siguiente ERROR. " L1102 ERROR out off allocation space in segment RAM1 at address 0x980 ", yo me imagine que este error era porque no tenia suficiente espacio de RAM en el micro y entonces me puse a investigar por las web de freescale sin demasiado existo lo maximo que encontre es que a lo mejor tenia limitada la memoria RAM ¿pero creo que no es ese mi caso?.
Entonces al ver este FORO decidi hacer la consulta porque no entiendo porque en la nueva imagen que adjunto (te he marcado con circulos rojos lo que no entiendo) si el micro dispone de 2048 bytes porque en el DATA del Proccess Expert aparece 4075 y por ese motivo en la primera pregunta de este hilo hacia la siguiente duda (la carpeta Libs de la imagen que te adjunto hay unos 2018 bytes fijos que se crean con el programa y unos 229 que se crean con las Beans si le resto esto al Data (4075 – 2018 – 229 = 1828)  tendría sentido que esas es la parte de memoria que tengo ocupado respecto a los 2048 que tiene el micro")

Para saber realmente la memoria que lleva ocupada tu programa tenes que mirar el map de tu proyecto, lo ubicas en la pestaña \Project Settings\Linker Files\Tu proyecto.map. Es un archivo de texto, cuando lo abras vas a encontrar muchisima información. Casi sobre el final del archivo vas a encontrar un listado de asignación ordenado por direcciones tanto de RAM, IO y ROM. Esos valores son lo que realmente ocupa tu programa.

Cuando el linker reporta el error que comentas es porque no tiene mas lugar para asignar variables en esa área. Lo más probable es que cuando creaste el proyecto lo hayas creado en modo Tiny, de esta manera el compilador asume que todas las variables están ubicadas en la zero page, y así las direcciona, el problema con este modo es que hay poco espacio para este área, si es correcto lo que te comento deberías crear el proyecto en modo Small. Otra manera de hacerlo, si es que al proyecto lo creaste como Tiny, es para algunas variables cambiar el lugar de almacenamiento, te pego un ejemplo.

Código: [Seleccionar]
long Pepe;

#pragma DATA_SEG MY_FAR_DATA
long Juan;

void main( void )
{
   long Pedro = Pepe + Juan;


Si haces esto con un proyecto vació, vas a ver como Pepe es asignada al address 0x40 ( Comienzo del zero page ) que es el default que asume el compilador al ser tiny, y Juan al address 0x100 que es donde comienza el área FAR_RAM1

Saludos !

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #4 en: 11 de Agosto de 2011, 13:25:11 »
Otra vez, Muchas Gracias.

He hechado un vistazo y me has resuelto las dudas que tenia, GRACIAS de nuevo si me sale algun tema mas os lo comento.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #5 en: 11 de Agosto de 2011, 13:58:17 »
Ok no problem.

Saludos !

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #6 en: 28 de Septiembre de 2011, 10:30:26 »
Hola,

Os comento, mi duda tiene relacion con este tema que ya abri en su dia pero que ahora me ha surgido una duda relacionada.

La imagen que adjunto es del programa del micro M52235EVB y el software es el codewarrior Coldfire (al menos eso creo en su dia RICHI777 me comento que imagen que adjuntas, que es del Proccess Expert no del CodeWarrior.).
Mi pregunta es como averiguo la memoria RAM que estoy ocupando, ya que en este software no me aparece el archivo map, que anteriormente estaba en la pestaña \Project Settings\Linker Files\Tu proyecto.map.

el programa es el FREESCALE CODEWARRIOR version 5.9.0 build2803.

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #7 en: 28 de Septiembre de 2011, 11:43:57 »
Gracias a todos pero ya lo he solucionado ya he encontrado donde esta.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #8 en: 28 de Septiembre de 2011, 14:26:02 »
Hola Saaac,

Citar
Gracias a todos pero ya lo he solucionado ya he encontrado donde esta

La idea de los foros es compartir experiencia, seria muy bueno para todos que no expliques como lo solucionaste.

Saludos !

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #9 en: 05 de Octubre de 2011, 11:35:02 »
Hola otra vez siento haber tardado, aqui dejo la respuesta a la duda que realize e este tema,

Citar
Os comento, mi duda tiene relacion con este tema que ya abri en su dia pero que ahora me ha surgido una duda relacionada.

La imagen que adjunto es del programa del micro M52235EVB y el software es el codewarrior Coldfire (al menos eso creo en su dia RICHI777 me comento que imagen que adjuntas, que es del Proccess Expert no del CodeWarrior.).
Mi pregunta es como averiguo la memoria RAM que estoy ocupando, ya que en este software no me aparece el archivo map, que anteriormente estaba en la pestaña \Project Settings\Linker Files\Tu proyecto.map.

el programa es el FREESCALE CODEWARRIOR version 5.9.0 build2803.


La solucion esta buscando fuera del programa codewarrior por ejemplo en wildows en la carpeta del proyecto se encuentra el archivo .map que te dice el espacio de RAM que estamos ocupand de nuestro programa.
Ejemplo:
....nombre_del_archivo_nuestro...CodeWarrior_M5223X\uTaskerV1.3\bin\HAY_UN_ARCHIVO_ACABADO_EN_ESTA_EXTENSION.xMAP

Este archivo .xMAP es el que te da los datos de como vas de RAM.

Espero que os ayude.

Saludos.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Duda en La RAM sobre el FREESCALE CODEWARRIOR IDE para el micro MC68HC908G
« Respuesta #10 en: 05 de Octubre de 2011, 12:04:20 »
Muchisimas gracias por la información !

Saludos !