TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Loudness en 05 de Enero de 2018, 03:01:58

Título: Error en MPLAB X 3.61
Publicado 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

Título: Re:Error en MPLAB X 3.61
Publicado por: KILLERJC en 05 de Enero de 2018, 09:43:50
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):


Código: [Seleccionar]
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.
Título: Re:Error en MPLAB X 3.61
Publicado por: Loudness en 06 de Enero de 2018, 10:03:01
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.

Citar
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.