Autor Tema: Habilitar mas RAM  (Leído 2466 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Habilitar mas RAM
« en: 02 de Febrero de 2012, 15:51:48 »
Saludos:

Estoy usando bootloader USB en un pic18F4550 y en el programa principal tambien uso el USB. Por defecto tenia en el archivo *.lkr lo siguuiente:

...
DATABANK   NAME=gpr0       START=0x60           END=0xFF
DATABANK   NAME=gpr1       START=0x100          END=0x1FF
DATABANK   NAME=gpr2       START=0x200          END=0x2FF
DATABANK   NAME=gpr3       START=0x300          END=0x3FF
DATABANK   NAME=usb4       START=0x400          END=0x4FF          PROTECTED
...

Para habilitar mas RAM lo cambie por esto y funcionó:

...
DATABANK   NAME=gpr0       START=0x60           END=0xFF
DATABANK   NAME=gpr1       START=0x100          END=0x2FF
//DATABANK   NAME=gpr2       START=0x200          END=0x2FF
DATABANK   NAME=gpr3       START=0x300          END=0x3FF
DATABANK   NAME=usb4       START=0x400          END=0x4FF          PROTECTED
...

Pero necesito habilitar mas RAM y lo cambie por esto:

...
DATABANK   NAME=gpr0       START=0x60           END=0xFF
DATABANK   NAME=gpr1       START=0x100          END=0x3FF
//DATABANK   NAME=gpr2       START=0x200          END=0x2FF
//DATABANK   NAME=gpr3       START=0x300          END=0x3FF
DATABANK   NAME=usb4       START=0x400          END=0x4FF          PROTECTED
...

pero me sale el error: "Error - undefined DATABANK/SHAREBANK 'gpr3' for STACK."

Lineas abajo en el *.lkr tengo esto:

STACK SIZE=0x100 RAM=gpr3

Como puedo cambiar esto para habilitar mas RAM?

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Habilitar mas RAM
« Respuesta #1 en: 02 de Febrero de 2012, 18:05:39 »
deberias tacharlos y a su vez poner start=0x200 end=4FF para que ese banco tenga mas memoria ya que si no lo que haces es anular los bancos.

lo que debes hacer es poner stack size=0x100 RAM=gpr0 o gpr1 o usb4...

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: Habilitar mas RAM
« Respuesta #2 en: 02 de Febrero de 2012, 18:28:25 »
Si pongo STACK SIZE=0x100 RAM=usb4 no ocurrirá conflicyo cuando use el USB?

Según este pic hay 8 bancos de los cuales los 4 ultimos serán usados por el USB y no se deben tocar.
Me quedan los primeros 4 bancos de los cuales 1 banco debe ser designado para el Stack, entonces me quedan disponibles reales solo 3 bancos. Si uso como Stack el banco3 entonces podria disponer del banco 0 al 2, pero del banco 0 me parece que los primeros 96 bytes tampoco puedo tocarlos con lo que llego a la conclusión de que solo puedo usar desde parte del banco 0 hasta el final del banco 2.

Esto es: tengo libre desde 0x60 hasta la 0x2FF, dicho esto trato de configurar asi:

ACCESSBANK NAME=accessram  START=0x0            END=0x5F
DATABANK   NAME=MiData       START=0x60          END=0x2FF
DATABANK   NAME=gpr3       START=0x300          END=0x3FF
DATABANK   NAME=usb4       START=0x400          END=0x4FF          PROTECTED
DATABANK   NAME=usb5       START=0x500          END=0x5FF          PROTECTED
DATABANK   NAME=usb6       START=0x600          END=0x6FF          PROTECTED
DATABANK   NAME=usb7       START=0x700          END=0x7FF          PROTECTED
ACCESSBANK NAME=accesssfr  START=0xF60          END=0xFFF          PROTECTED

SECTION    NAME=CONFIG     ROM=config

STACK SIZE=0x100 RAM=gpr3

SECTION NAME=MIDATA RAM=MiData

SECTION      NAME=USB_VARS   RAM=usb4

En el programa coloco:
#pragma udata MiData
...
creo variables
...

pero no me deja crear 672 chars (160+256+256) como puedo mejorar esto?

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: Habilitar mas RAM
« Respuesta #3 en: 02 de Febrero de 2012, 21:38:49 »
He notado que los registros del USB USBDeviceState, USBActiveConfiguration, ... se posicionan a partir de la dirección 0x29F y he visto que la misma secuencia de registros se encuentran definidos en el archivo usb_device.c :
/** VARIABLES ******************************************************/
#pragma udata

USB_VOLATILE USB_DEVICE_STATE USBDeviceState;
USB_VOLATILE BYTE USBActiveConfiguration;
USB_VOLATILE BYTE USBAlternateInterface[USB_MAX_NUM_INT];
volatile BDT_ENTRY *pBDTEntryEP0OutCurrent;
...

/** USB FIXED LOCATION VARIABLES ***********************************/

#if defined(__18CXX)
    #if defined(__18F14K50) || defined(__18F13K50) || defined(__18LF14K50) || defined(__18LF13K50)
        #pragma udata USB_BDT=0x200     //See Linker Script, BDT in bank 2 on these devices - usb2:0x200-0x2FF(256-byte)
    #elif defined(__18F47J53) || defined(__18F46J53) || defined(__18F27J53) || defined(__18F26J53) || defined(__18LF47J53) || defined(__18LF46J53) || defined(__18LF27J53) || defined(__18LF26J53)
      #pragma udata USB_BDT=0xD00      //BDT in Bank 13 on these devices
    #else
        #pragma udata USB_BDT=0x400     //All other PIC18 devices place the BDT in usb4:0x400-0x4FF(256-byte)
   #endif
#endif
...

En esta sección deje solo el #pragma udata USB_BDT=0x400    pero siguen apareciendo los registros desde la posición 0x29F y necesito que estos registros comienzen a partir de la 0x400.

Alguna idea por ahi?

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Habilitar mas RAM
« Respuesta #4 en: 02 de Febrero de 2012, 23:29:09 »
creo recordar que estos pics tenian una ram dedicada a usb, es decir los buffers habia que ponerlos en determinada parte de la ram, lo que no se es porque, ni si influye algo cambiarlos.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Habilitar mas RAM
« Respuesta #5 en: 02 de Febrero de 2012, 23:46:24 »
Por lo que he visto depende del micro, hay micros en los cuales los bancos de ram para USB son específicos y en otros no. Si ese banco que necesitas crear no pisa USB, podes probar colocarle protected y asignarle ese espacio a tus variables. Si el proyecto te lo permite (por el uso de la RAM que necesite), no debería indicar error.


Saludos!
« Última modificación: 02 de Febrero de 2012, 23:49:06 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: Habilitar mas RAM
« Respuesta #6 en: 03 de Febrero de 2012, 12:53:13 »
A la sección que he creado le puse PROTECTED y deshabilité las secciones protegidas del usb y aun asi siguen los registros del usb empezando desde la posición 0x29F a pesar que estoy declarando mi sección desde 0x60 hasta 0x2FF.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Habilitar mas RAM
« Respuesta #7 en: 03 de Febrero de 2012, 14:29:02 »
tienes que cambiar tambien esto #pragma udata USB_BDT=0x200     el 200 x otra cosa

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: Habilitar mas RAM
« Respuesta #8 en: 03 de Febrero de 2012, 18:33:33 »
Si claro eso hize, incluso deshabilite toda esa parte de código y solo dejé el #pragma udata USB_BDT=0x400 pero sigue igual.

Tengo una duda, en el lkr dice:
STACK SIZE=0x100 RAM=gpr3

que significa esto? se reservan 256 bytes específicamente el banco 3 de la RAM para que lo use el pic cuando le indique que haga operaciones de funciones como strcat, memset, ... etc? cuanto espacio reservar o en que casos o como calculo lo que debo reservar?

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Habilitar mas RAM
« Respuesta #9 en: 03 de Febrero de 2012, 23:04:54 »
eso es el tamaño de la pila, ya depende de las operaciones que uses con la pila

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: Habilitar mas RAM
« Respuesta #10 en: 06 de Febrero de 2012, 15:11:47 »
Bueno he reordenado mis variables y ya entra todo en la RAM que tengo, mas adelante con mas tiempo veré lo que sucede con la RAM, gracias por sus aportes.