TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Loudness en 05 de Enero de 2018, 03:01:58
-
Hola a tod@s
Me encuentro haciendo un codigo para el pic16F877a en ensamblador.
Hasta ahora no he tenido mayores problemas para compilar (tampoco es un codigo tan grande)
pero, de repente, me ha empezado a salir el error de abajo:
Error - section '.org_15' can not fit the absolute section. Section '.org_15' start=0x00000cc5, length=0x0000008e[/size]
El caso es que no puedo compilar ni tampoco me deja hacer debug ni nada :oops:
Alguien tiene alguna idea de lo que puede estar pasando?
Saludos
-
mmm parece que hay un pedazo de codigo que no entra, pero no entra por decision del usuario.. no se cual es la seccion .org_15, pero nuevamente, para que esto ocurra es decision del usuario y no autogenerado, es como si hubiera una parte del codigo que esta intentando poner un pedazo de codigo sobre esa direccion especifica. Complicado sin poder saber todo lo demas.
Busca en el codigo los siguientes datos:
org_15
CC5
ORG 0xCC5
ORG CC5
Busca ambos, alguno debe haber y copia esa parte del codigo, seran unas 140 lineas aproximadamente. O tendra un CODE org_15 0xCC5
Tambien puede ser la RAM pero no creo que alguien le de ese valor de ram, totalmente excesivo, y ni hablar de ese largo.
----------------------------------
Fijate si tenes algun archivo .map deberia tener algo asi ( Un ejemplo de un codigo pequeño):
MPLINK 5.08, LINKER
Linker Map File - Created Fri Jan 05 10:14:56 2018
Section Info
Section Type Address Location Size(Bytes)
--------- --------- --------- --------- ---------
.org_0 code 0x000000 program 0x000004
.cinit romdata 0x000004 program 0x000002
.org_1 code 0x000008 program 0x00002a
.config_300000_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300000 program 0x000001
.config_300001_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300001 program 0x000001
.config_300002_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300002 program 0x000001
.config_300003_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300003 program 0x000001
.config_300005_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300005 program 0x000001
.config_300006_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300006 program 0x000001
.config_300008_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300008 program 0x000001
.config_300009_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x300009 program 0x000001
.config_30000A_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x30000a program 0x000001
.config_30000B_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x30000b program 0x000001
.config_30000C_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x30000c program 0x000001
.config_30000D_BUILD/DEFAULT/PRODUCTION/MAIN.O romdata 0x30000d program 0x000001
Program Memory Usage
Start End
--------- ---------
0x000000 0x000005
0x000008 0x000031
0x300000 0x300003
0x300005 0x300006
0x300008 0x30000d
60 out of 66584 program addresses used, program memory utilization is 0%
Symbols - Sorted by Name
Name Address Location Storage File
--------- --------- --------- --------- ---------
FinInterrupcion 0x000010 program static F:\CCS\MPLABx\MPASM.X\main.asm
INICIO 0x000014 program static F:\CCS\MPLABx\MPASM.X\main.asm
ServicioInterrupcion 0x00000c program static F:\CCS\MPLABx\MPASM.X\main.asm
principal 0x00002e program static F:\CCS\MPLABx\MPASM.X\main.asm
Symbols - Sorted by Address
Name Address Location Storage File
--------- --------- --------- --------- ---------
ServicioInterrupcion 0x00000c program static F:\CCS\MPLABx\MPASM.X\main.asm
FinInterrupcion 0x000010 program static F:\CCS\MPLABx\MPASM.X\main.asm
INICIO 0x000014 program static F:\CCS\MPLABx\MPASM.X\main.asm
principal 0x00002e program static F:\CCS\MPLABx\MPASM.X\main.asm
PD: Si tenes un org_15, significa que tenes 15 ORG metidos en el codigo, lo cual es una barbaridad.
-
KILLERJC: Gracias por tu respuesta.
He intentando compilar el mismo programa en mi viejo ordenador que tiene el MPLAB 7 y al compilar me sale
"Overwriting previous address contents (0CC5) error [118]"
Y este error si que le reconozco :D.
Y es cierto, tengo una parte del codigo que empieza con
ORG 0x0CC5
para que empieze desde esa direccion. Parece que al ampliar el codigo anterior, ha sobrepasado y sobreescrito esa parte. Simplemente he cambiado 0xCC5 por 0xCF7 y el problema ha desaparecido.
PD: Si tenes un org_15, significa que tenes 15 ORG metidos en el codigo, lo cual es una barbaridad.
Es cierto, tengo montones de ORG para ordenar el codigo y que no se me vayan a "sitios raros".
Quiero decir que no he estudiado programacion, todo lo he buscado por mi mismo en internet o libros en mi tiempo libre. Y uno de mis mayores problemas con los pic16 fue entender la configuracion de la memoria en cuatro bancos y su utilizacion: que partes del programa (sobre todo tablas) no se pasen de pagina, que en un goto o call vuelva a la pagina correspondiente... etc.
El caso es que para evitarme sustos suelo utilizar org en muchas partes del programa para tenerlas "controladas" pero, por otra parte me puedo encontrar con otros errores :D...
Gracias por la ayuda.