Que es el linker en MPLab

Hola amigos.. tengo una consulta Que es el Linker y como se utiliza.. he leido la informacion en la ayuda de MPLab.. pero no me contentado con su explicacion... si ustedes pueden instruirme estare muy agradecido

(yo lo modifico para el bootloader pero nada mas eso.. es una accion mecanica lo que hago, en realidad no entiendo como usarlo)
 
pues nadamas para compilar un programa en MPLAB
si usas el project wizard sekeccionas el pic y luego agregas a tu proyecto los archivos .lkr .asm y .inc de tu dispositivo namadas que el asm lo puedes hacer en code u objet y ya lo compila y te debe resultar el .hex
el .asm pues es donde vasa hacer tus programas el .inc posee los registros del respectivo pic y el .lrk es el linker script que es el que sincroniza los archivos para darte el ejecutable
saludos
 
Última edición:
Lo que hace el LINKER es enlazar todos los objetos y librerias
que se usarón en el proyecto para generar el archivo ejecutable *.hex
Por ejemplo. Si tu proyecto usa librerias con bastante código que no usaras,
el LINKER solo extrae las partes necesarias a las que haces referencia en tu proyecto.
El LINKER se usa tambien en programas ejecutables para PC.
Es un programa que se encarga de esa tarea.
Para generar un archivo ejecutable los archivos son procesados por varios programas
antes de generar el archivo ejecutable, dentro de ese proceso de compilación
el LINKER es de los mas importantes.
LINKER.gif
:apreton:
 
gracias darkbytes, lo que me has dicho tiene mucho sentido... el linker lo que hace es vincular las rutinas necesarias para generar el archivo hex, desechando todo el codigo remanente. pero todavia me queda una interrogante, como manipulo ese archivo? yo vengo programando microcontroladores en asm y c18 pero nunca he tenido la necesidad de usar el linker.. sin embargo creo que me estoy perdiendo de algo bueno..


biopic, el enredo que has escrito me ha dejado peor que antes... jaja, sin embargo agradezco tu intencion por ayudarme sinceramente... gracias otra vez
 
Última edición:
Pues mira, dinoelectro, yo jamas he tenido que manipular los archivos *.lkr
de eso se encarga el MPASM el LINKER es el programa que usa esos archivos.
Yo solo escribo mi código, agrego que librerias incluire y el MPASM se encarga de todo.
Por ejemplo si yo uso el PIC16F887 en mi proyecto escribo esto.
list p=16f887
#include p16f887.inc
Y al compilarlo el linker ya sabra como enlazar mi código con los datos
de las librerias que requiera la libreria p16f887.inc y 16f877.lkr
Vi que dijiste que te habias leido la ayuda del MPLAB en el archivo hlpMPLINKLinker.chm
viene algo de información, pero para mejor entendimiento del Linker
tendrias que buscar algo acerca de compiladores.
Hay un dato que me pasaba cúando compilaba programas en Visual C++ 6.0
de terceras personas para aprender a programar en C++
Y era que me producia un error que decia "No se a podido ejecutar el archivo LINK.exe"
el de lenguaje ensamblador de 32 bits MASM32 para ejecutables de PC se llama igual
Y el Linker de Microchip son el _mplink.exe y el mplink.exe... Continúando..
Se debia a errores en cuanto a declaraciones de librerias que estaban incluidas
pero que el linker no encontraba. Y púes poco a poco vi la importancia del Linker
dentro de una compilación. Pero jamas he modificado los archivos del Linker.
Y te soy sincero, no se cúal sea la diferencia de compilar usando el MPASMWIN o el LINKER
En ambos casos siempre si tu código tiene los objetos requeridos la compilación es un exito.
Y nos aparecera el mensaje que siempre queremos ver al final.
Release build of project `C:\16F628A\LC2.mcp' started.
Language tool versions: MPASMWIN.exe v5.42, mplink.exe v4.40, mplib.exe v4.40
Wed Oct 12 00:21:14 2011
----------------------------------------------------------------------

MPLINK 4.40, Linker
Device Database Version 1.0
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0

Bien. Saludos y hasta pronto :apreton:
 
Última edición:
gracias darkbytes, lo que me has dicho tiene mucho sentido... el linker lo que hace es vincular las rutinas necesarias para generar el archivo hex, desechando todo el codigo remanente. pero todavia me queda una interrogante, como manipulo ese archivo? yo vengo programando microcontroladores en asm y c18 pero nunca he tenido la necesidad de usar el linker.. sin embargo creo que me estoy perdiendo de algo bueno..


biopic, el enredo que has escrito me ha dejado peor que antes... jaja, sin embargo agradezco tu intencion por ayudarme sinceramente... gracias otra vez

jaja lo siento si tenia una idea de lo que es claro no tan concisa como darkbytes talvez no lo supe explicar bueno un saludo a todos .
con respecto a lo del MPASMWIN o el linker ahora ustedes me confunden por que segun yo tengo entendido el mpasmwin es un ejecutable que usa el MPLAB para copilar tus codigos fuente pero forzosamente tiene que usar el linker y de hecho yo antes usaba mpasmwin en lugar del IDE completo que es mplab, ladifrerencia es qu en el primero solo abres tu codigo fuente te lo compila si no hay errores directamente pero supongo que en MPLAB al usar el linker es para compiliar en modo OBJECT corrijanme si estoy nuevamente en un error y saludos a todos
PD yo = jamas he modificado un .lkr los .inc si para adaptarlos a que mi programa sea mas facil
saludos a todos
 
Última edición:
gracias amigos, por su informacion,darkbytes; como dije antes yo nunca tuve necesidad de modificar el archivo lkr... hasta que empeze a utilizar el HIDBootloader de microchip... ahi tengo que modificar las direcciones del vector de reset y de interrupcion, para remapear la memoria

parece que biopic tiene mucha razon, esto tiene que ver con objetos, es imperioso desifrar este archivo, por que cuando me descargo notas de aplicacion de microchip y las mando a compilar, casi siempre encuentro un error en el dichoso linker.
 
Última edición:
hola no hay mucha ciencia, darkbytes ya lo dejo algo claro, bueno lo del HID soy medio novato y no se que sea eso pero para programacion en MPLAB de la forma clasica para compilar solo debes incluir en tu workspace el .lkr del pic que corresponda , ahora yo te pido tu ayuda jaja eso del bootloader lo he leido mil y una vez y no logro entender como funciona se mas omenos para que es pero no como sirve ni como aplicarlo.
solo que una cosa es el LINKER y otra el archivo .lkr
saludos
 
hola biopic...


“Un bootloader es un programa diseñado para ocupar los primeros registros de memoria (o los últimos registros, en algunos casos). Y dota al microcontrolador de la capacidad para auto programarse, eliminándose la necesidad de un programador”

he publicado este tema hace una semana con algo de informacion acerca de esto, revizalo no te olvidez de dame tu opinion he??? espero te sirva de ayuda jeje, saludos cordiales

en este link tengo un pequeno tutorial en espanol
https://www.forosdeelectronica.com/f24/coleccion-bootloaders-microchip-64396/
 
Última edición:
con respecto a lo del MPASMWIN o el linker ahora ustedes me confunden por que segun yo tengo entendido el mpasmwin es un ejecutable que usa el MPLAB para copilar tus codigos fuente pero forzosamente tiene que usar el linker
Ok. Si, efectivamente, a lo que me referia es que no podria definir que pasaria
si se utilizara otro linker que no fuera el mplink, osea otro que no perteneciera a MPLAB.
;*****************************************
Me supongo no funcionaria la compilación.
Cada lenguaje usa su propio LINKER y eso es lo que se debe especificar en el wizard.
Perdón por no explicar ese detalle. :apreton:
 
Última edición:
hola biopic...


“Un bootloader es un programa diseñado para ocupar los primeros registros de memoria (o los últimos registros, en algunos casos). Y dota al microcontrolador de la capacidad para auto programarse, eliminándose la necesidad de un programador”

he publicado este tema hace una semana con algo de informacion acerca de esto, revizalo no te olvidez de dame tu opinion he??? espero te sirva de ayuda jeje, saludos cordiales

en este link tengo un pequeno tutorial en espanol
https://www.forosdeelectronica.com/f24/coleccion-bootloaders-microchip-64396/

ya lo cheque y si viene concisa la informacin de antemano muchas gracias ya comprendi mejor el uso de los bootloader muchas gracias dinoelectro.

Ok. Si, efectivamente, a lo que me referia es que no podria definir que pasaria
si se utilizara otro linker que no fuera el mplink, osea otro que no perteneciera a MPLAB.
;*****************************************
Me supongo no funcionaria la compilación.
Cada lenguaje usa su propio LINKER y eso es lo que se debe especificar en el wizard.
Perdón por no explicar ese detalle. :apreton:


darkbytes
asi es efectivamente el projectwizard te permite que interfaz usar para compilar tus archivos y cada una tiene su repsectivo linker que difiere el mplink , por ejemplo yo e compilado con el mpasm , con el ccs c y con el IAR pic18 (el cual no logre que funcianara tal vez por mi poca experiencia ) pero pues is los tienes bien integrados al IDE de MPLAB no debe de haber falla , en lo particular el IDE CCS C para pic es muy bueno para empezar a apreneder a programar en C pero tambien tiene sus complicaciones en fin para eso esta el foro [ara compartir experiencias y conocimientos bueno un saludo a todos
 
Última edición:
Atrás
Arriba