Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Problema con asignacion de RAM SDCC o GPUTILS???

Ir abajo

SDCC - Problema con asignacion de RAM SDCC o GPUTILS??? Empty Problema con asignacion de RAM SDCC o GPUTILS???

Mensaje por Risanti Vie 30 Abr 2010 - 20:26

Hola A todos..
He estado estos días realizando un programa con un pic16f876a, el cual tiene 368 registros de ram disponibles, sin embargo al compilar mi codigo sdcc me genera el asm pero al realizar el link , gplink me devuelve un error:

Código:
no target memory available for section "UDL_FuenteDigital_0"

al examinar el Asm generado encuentro esta section, en donde se reserva los registros de ram, para este programa.

Código:

;--------------------------------------------------------
; compiler-defined variables
;--------------------------------------------------------
UDL_FuenteDigital_0    udata
r0x101A    res    1
r0x101C    res    1
r0x101B    res    1
r0x1054    res    1
r0x1075    res    1
r0x1074    res    1
r0x1073    res    1
r0x1076    res    1
r0x106B    res    1
r0x106C    res    1
r0x106D    res    1
r0x106F    res    1
r0x106E    res    1
r0x1070    res    1
r0x1071    res    1
r0x1061    res    1
r0x1068    res    1
r0x1069    res    1
r0x106A    res    1
r0x1063    res    1
r0x1064    res    1
r0x1065    res    1
r0x1066    res    1
r0x1062    res    1
r0x1056    res    1
r0x1055    res    1
r0x1057    res    1
r0x1058    res    1
r0x1059    res    1
r0x105A    res    1
r0x105B    res    1
r0x105D    res    1
r0x105C    res    1
r0x105E    res    1
r0x103B    res    1
r0x103A    res    1
r0x103C    res    1
r0x103E    res    1
r0x104C    res    1
r0x104D    res    1
r0x104E    res    1
r0x1050    res    1
r0x104F    res    1
r0x1051    res    1
r0x1052    res    1
r0x103F    res    1
r0x1040    res    1
r0x1041    res    1
r0x1042    res    1
r0x1043    res    1
r0x1044    res    1
r0x1046    res    1
r0x1045    res    1
r0x1047    res    1
r0x1078    res    1
r0x1077    res    1
r0x1079    res    1
r0x104A    res    1
r0x1049    res    1
r0x104B    res    1
r0x1033    res    1
r0x1032    res    1
r0x1034    res    1
r0x1036    res    1
r0x1035    res    1
r0x1037    res    1
r0x1038    res    1
r0x1039    res    1
r0x102F    res    1
r0x102E    res    1
r0x1031    res    1
r0x1030    res    1
r0x102B    res    1
r0x102A    res    1
r0x102D    res    1
r0x102C    res    1
r0x101D    res    1
r0x101E    res    1
r0x1020    res    1
r0x101F    res    1
r0x1021    res    1
r0x1022    res    1
r0x1023    res    1
r0x1024    res    1
r0x1025    res    1
r0x1027    res    1
r0x1026    res    1
r0x1029    res    1
r0x1028    res    1
_putdec_dtmp_1_1    res    1
_putdec_d0_1_1    res    1
_putdec_d1_1_1    res    1
_putdec_d2_1_1    res    1
_putdec_d3_1_1    res    1
_putdec_d4_1_1    res    1
_lcd_dec_dtmp_1_1    res    1
_lcd_dec_d0_1_1    res    1
_lcd_dec_d1_1_1    res    1
_lcd_dec_d2_1_1    res    1
_lcd_dec_d3_1_1    res    1
_lcd_dec_d4_1_1    res    1

Según lo que he determinado por alguna razón el gplink me trata de asignar todas estas variables en el banco 2 de registros del pic16876A, como solo este tiene 96 registros (desde 0x110 a 0x16F) y la requerida cantidad es mayor, me genera este error, pero no entiendo porque solo trata de crear estas variables en el banco 2, si el banco 1 y banco 3 estan sin usar (192 registros libres).

Por lo cual no se si se trata de un problema del código generado por SDCC el cual no considera esto, y no separa estas variables en 2 secciones o algo asi.. o es del gpasm o gplink que no redefine las direcciones del estas variables.


Ademas SDCC en el asm que genera utiliza la directiva UDATA y RES para asignar RAM pero no se quien establece en que lugares debe quedar estos registros.

Una de mis ultimas pruebas fue tomar el codigo generado por sdcc (asm) y separar en 2 partes el area de variables con dos etiquetas y ensamblarlo usando Pikdev
Código:

UDL_FuenteDigital_0    udata
r0x101A    res    1
r0x101C    res    1
r0x101B    res    1
r0x105F    res    1
..... hasta 96 registros
UDL_FuenteDigital_OTRO  udata
r0x101A    res    1
r0x101C    res    1
r0x101B    res    1
r0x105F    res    1
..... hasta 96 registros
UDL_FuenteDigital_OTRO  udata
_putdec_d1_1_1    res    1
_putdec_d2_1_1    res    1
_putdec_d3_1_1    res    1
_putdec_d4_1_1    res    1
_lcd_dec_dtmp_1_1    res    1
_lcd_dec_d0_1_1    res    1
_lcd_dec_d1_1_1    res    1
_lcd_dec_d2_1_1    res    1
_lcd_dec_d3_1_1    res    1
_lcd_dec_d4_1_1    res    1

Esto con esto por lo menos me genera el hex, sin problemas no lo que probado para ver si este funciona correctamente, pero deberia funcionar ... eso creo. .jajaja.


Espero si alguien me puede orientar con este problema.

atte.
RiSanti
Risanti
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 39
Localización : La Serena Chile

https://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.