Autor Tema: Problema de espacio en dsPIC33E  (Leído 4016 veces)

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

Desconectado bewy

  • PIC10
  • *
  • Mensajes: 3
Problema de espacio en dsPIC33E
« en: 16 de Junio de 2015, 11:51:03 »
Hola!

almaceno una serie de arrays en la memoria de datos del dsPIC33EP y al compilar me dice que esta al 53% de capacidad, al intentar meter otro array mas en memoria de datos, me da error al compilar ya que me dice que no tengo espacio disponible.. ¿como puede saber cual es el espacio disponible real en la memoria de datos?.

Adjunto los mensajes que me devuelve el compilador, dejo el que aparece cuando compila que esta al 53% la memoria de datos, y el que me aparece cuando intento agregar un nuevo array.

El nuevo array que quiero agregar lo coloco con el siguiente atributo: _attribute__((__section__((".xdata"))))
y los que ya tenia metidos estan colocados en: _attribute__((__section__((".data"))))

He intentado colocarlos en distintas ubicaciones como, space(data), section((.xdata))... y ninguna me ha dado resultado.

Si me pudierais orientar en como saber donde colocarlos me seria de gran ayuda.

Gracias de antemano.
Un saludo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema de espacio en dsPIC33E
« Respuesta #1 en: 16 de Junio de 2015, 13:28:51 »
Parece que el stack se esta llevando casi la mitad de la memoria....

Fijate que apenas termina la seccion de datos comienza el stack, y el largo de datos es de 28k ( 53% ) y el del stack 24k (47% restante )

Segun:
http://ww1.microchip.com/downloads/en/DeviceDoc/50002071E.pdf

El linker crea el mayor stack posible segun los datos que hay es decir lo maximo de la memoria no utilizada. Pero a vos no te esta dejando poner mas datos.

Pagina 186:
http://ww1.microchip.com/downloads/en/DeviceDoc/50002106B.pdf
Habla sobre el stack en su parte del linker, donde parece que debes definir el largo minimo, el limite y una banda de seguridad. ademas definir una interrupcion para manejar la excepcion de overflow del stack por si llega a ocurrir. Y que llevaria al reset del micro SI o SI.

Aunque deberia cambiar solo ... no se por que no lo hace, probaste limpiar el proyecto y compilarlo? en ves de compilarlo solamente?
« Última modificación: 16 de Junio de 2015, 13:40:15 por KILLERJC »

Desconectado bewy

  • PIC10
  • *
  • Mensajes: 3
Re: Problema de espacio en dsPIC33E
« Respuesta #2 en: 17 de Junio de 2015, 03:41:08 »
Hola!

he echado un vistazo al pdf que me pones y no veo como hacer que asigne el tamaño correcto de pila. Cuando compilo si que  lo hago limpiando en proyecto, no se porque no se redimensiona la pila sola...
Te dejo una captura de como esta configurado el compilador, por si hay algo que estuviera haciendo mal...
¿Si defino como constantes los array el acceso a ellos es el mismo que si los defino en el espacio de memoria de datos?


P.D: He hecho una prueba y he direccionado los arrays que me queda en space(eds), y la memoria de datos se me queda al 94%, ¿puede darse algún problema en la ejecución del programa por quedar disponible tan poca memoria?



Gracias,
un saludo.
« Última modificación: 17 de Junio de 2015, 03:58:30 por bewy »

Desconectado bewy

  • PIC10
  • *
  • Mensajes: 3
Re: Problema de espacio en dsPIC33E
« Respuesta #3 en: 17 de Junio de 2015, 09:24:36 »
Tras realizar pruebas almacenando los arrays en el espacio EDS, descubrí que tenia problemas al acceder a ellos. Por lo que he almacenado los arrays en el espacio PSV, mediante el atributo auto_psv. Este almacenamiento consta de 32K que me han sido de utilidad para conseguir un optimización del espacio muy eficaz.
Muchas gracias por tu ayuda, encontré la solución a mis problemas en el pdf que me adjuntaste de las características del compilador.

Gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema de espacio en dsPIC33E
« Respuesta #4 en: 17 de Junio de 2015, 13:56:39 »
Si son valores fijos si... sino vas a tener problemas almacenandolos en la memoria de programa.

Si no mal recuerdo se puede acceder a la memoria de programa y RAM al mismo tiempo para datos. ademas de X e Y en lectura... Aunque hace mucho que ya no toco el dsPIC.