in

BootLoader para 18F2550 (Entrenador NeoTeo)

Un BootLoader es un pequeño conjunto de instrucciones que forman un programa y se graban, en este caso en un microcontrolador, para permitir un posterior manejo y actualización de sus programas internos (firmware) sin necesidad de utilizar programadores (hardware) específicos. Es decir, utilizas un programador (o quemador) de microcontroladores una única vez para cargarle el mencionado BootLoader al microcontrolador y luego te bastará con una sencilla aplicación en tu ordenador para cambiar a tu antojo el funcionamiento de tus sistemas. Todo mediante una vulgar conexión al puerto USB. Las plataformas modernas que se asemejan a Arduino (incluida ésta) utilizan este sistema de programación y NeoTeo no podía quedar afuera. Ahora la programación está al alcance de todos.

Es imposible resumir en un sumario de pocas palabras las infinitas ventajas que posee un BootLoader. Sólo debes imaginarte la situación: tu hardware, tu ordenador y un cable de conexión USB entre ambos. Eso es todo lo que necesitas para transformar al entrenador NeoTeo en un voltímetro, en un videojuego, en un operador de servomotores y en miles de cosas más. A pesar de que el conector ICSP es una de las herramientas maestras de las que dispone una persona que se dedica a experimentar con microcontroladores, la utilización de un BootLoader te ahorra el uso de un hardware adicional de trabajo como es el programador (o quemador).

Un ejemplo de las miles de ventajas que puedes tener sería este: Tú le has vendido a Max una aplicación y luego de un tiempo de uso él te expresa su lamento y pesar sobre algunas deficiencias del producto, mientras te comenta que desearía que hagas algunas mejoras para lograr un funcionamiento óptimo y acorde a sus necesidades. ¿Qué deberías hacer en esa situación? ¿Pedirle a Max que desarme todo el equipo y te lo envíe? Imposible. ¿Viajar tú de un país a otro para cambiar dos líneas de programa, conectar el hardware programador y demorar menos de cinco minutos en resolver el problema? ¡De locos! En cambio, si el sistema inicial posee la sencilla carga previa de un BootLoader, le envías a Max un pequeño archivo por correo electrónico y él mismo podrá actualizar la versión de firmware con un elemental cable USB conectado a su ordenador. Así trabajan Arduino, Amicus y todas las plataformas similares que compiten en la web. Así de sencillo y tentador. ¿Quieres verlo? Observa como se cambia de una aplicación a otra diferente en apenas algunos segundos:

El principio de funcionamiento de un BootLoader es fácil de comprender. Se trata de un pequeño software, que se instala en un microcontrolador y ocupa un pequeño espacio de memoria dentro de él. Su única funcionalidad es servir de “anfitrión” para permitir la programación o re-programación del microcontrolador sin necesidad de un hardware específico, a veces costoso y que no es sencillo de armar ni utilizar. Toda la tarea de reinstalar un nuevo software para lograr diferentes trabajos por parte del microcontrolador, o al menos una actualización del firmware ya existente y funcional, se resume a un cable que une el microcontrolador con el ordenador. Puede ser una conexión por puerto serie (COM) o, lo que es mejor aún y que se utiliza en la actualidad, por puerto USB. Aquí tienes otro ejemplo de cómo funciona un sistema de carga con BootLoader (carga un programa que enciende el LED amarillo)

El resto del trabajo lo realiza una aplicación instalada en el ordenador que será la encargada de detectar la petición de grabación desde el microcontrolador y cargarle un nuevo programa o, como mencionamos antes, actualizar el existente. Si el microcontrolador no realiza un llamado de solicitud anunciando una conexión para una grabación de datos, el ordenador interpretará la conexión como un hecho natural y atenderá a la aplicación existente y funcional dentro del microcontrolador trabajando en conjunto con este dispositivo y realizando las operaciones que la aplicación requiera. Por ejemplo, el Voltímetro NeoTeo. También puede suceder que no necesites conectar nunca tu aplicación a un ordenador para que realice su trabajo y cumpla una tarea.

Por ejemplo: algunos de los carteles de LEDs que indican el recorrido de un transporte de pasajeros. Ese es un claro ejemplo donde el desarrollo no se utiliza “enlazado” a un ordenador. El empleado que se encarga de diagramar los viajes conecta un ordenador portátil mediante un cable USB, ejecuta una aplicación y con un simple clic del ratón cambia los textos del cartel indicador. Otros sistemas más modernos y sofisticados le transmiten al cartel la actualización de información mediante un enlace Wi-Fi. ¿Y cómo cargan la información recibida dentro del microcontrolador? Mediante el BootLoader anfitrión que el microcontrolador ya posee en su interior.

La Ley De Moore al acecho

Además, el camino irreversible de la miniaturización y la alta integración de los semiconductores nos entregan día a día dispositivos más pequeños y en encapsulados (package) muy difíciles de manipular. La mayoría de los microcontroladores “poderosos” del mercado comienzan a aparecer en encapsulados muy pequeños. Esto significa que retirarlos de una placa,  colocarlos en un programador y luego restituirlos al PCB donde cumplen su función es un trabajo imposible de realizar sin destruir al menos una docena de pines y/o calcinar el dispositivo y/o las vías del PCB. Por lo tanto, amigos, los tiempos de gloria del 16F84A, del 16F628A y hasta del mismo 18F2550 (que utilizamos en nuestra placa de entrenamiento) están llegando a su final. Quizás la visión de quien escribe estas líneas pueda parecer algo pesimista. Pero si se detienen a observar la mayoría de (por no decir todas) las placas de entrenamiento que comercializan las marcas líderes en microcontroladores, notarán que poseen versiones de montaje superficial para sus MCU (microcontroladores) y los medios de programación son el ICSP (con hardware programador) y por medio de BootLoaders. Estos últimos pueden ser por puerto serie o por puerto USB.

Para muestra, basta el botón que acabas de ver: MPLAB Starter Kit for PIC 18F MCU (que sería el primer escalón para comenzar a trabajar en el mundo de Microchip – MPLAB utilizando los PIC de la línea 18F) trabaja mediante el uso de BootLoaders. Toda la intervención con el hardware se limita a conectar un cable USB y a cargar nuestros programas. El soldador (cautín) ya comienza a desaparecer de la mesa de trabajo del desarrollador. En su lugar comienzan a abundar otras herramientas virtuales que ayudarán a reducir en forma notoria muchos métodos de “prueba y error” utilizados hasta ahora. Ya no bastará con que el sistema funcione en el simulador dentro del ordenador sino que también deberá hacerlo en la placa de entrenamiento. Pues entonces si hacia allí vamos, adaptemos nuestra placa de entrenamiento NeoTeo con el 18F2550 e ingresemos al futuro nosotros también.

Una solución de código abierto

Microchip posee herramientas gratuitas que se pueden descargar desde su sitio web y nos pueden ayudar a desarrollar aplicaciones con un mínimo de inversión y con la posibilidad de adquirir un aprendizaje muy importante. Dentro de las posibilidades que ofrece el sitio para trabajar con BootLoaders encontramos una aplicación dedicada a la familia del PIC 18F4550 mediante la conectividad USB que este microcontrolador brinda. Sobre esta plataforma basaremos nuestro trabajo adaptando el “programa base” que Microchip ofrece para satisfacer nuestras necesidades de uso dentro de la placa de entrenamiento NeoTeo.

Por ejemplo: en el BootLoader ofrecido (para el 18F4550) se utiliza el puerto D para colocar un LED indicador de estado. El 18F2550 no posee puerto D y en consecuencia tendremos que efectuar alteraciones allí. Por otro lado, un pulsador ubicado en el pin 4 del puerto B (en el desarrollo de Microchip para el 18F4550) nos resulta incómodo ya que el puerto B de nuestro entrenador estaría dedicado a un LCD alfanumérico y al bus I2C. Esta sería entonces otra variante a realizar sobre el programa original. Dicho nuevamente: partiendo de un sistema “base” reformaremos el BootLoader original para migrar desde un 18F4550 a un 18F2550. Atención!: Esto no termina aquí. Avanza a la siguiente página y comencemos a trabajar. ¡Manos a la obra!

Dentro de las cosas necesarias para desarrollar la aplicación de este artículo encontramos el software que utilizaremos para armar nuestro BootLoader “a medida”. Para esto necesitamos tener instalado en nuestro ordenador el entorno de trabajo MPLAB en su última versión (8.50 al momento de escribir este artículo), el compilador MPLAB C para PIC18 (que en realidad es una versión de evaluación por 60 días que puede desinstalarse y reinstalarse en forma indefinida) y por último necesitaremos la librería Microchip Applications Library donde encontraremos una cantidad muy generosa de material para desarrollar programas y aplicaciones. Por supuesto, dentro de este paquete se halla la aplicación (USB Framework) que utilizaremos en este artículo, esto es, el conjunto de archivos BootLoader para diversas familias de microcontroladores, entre ellas, la que utiliza nuestra placa entrenadora. Un detalle a destacar en este punto es que creemos que no es necesario detallar un tutorial con todos los pasos para que instales estos programas. Lo fundamental que debes saber es que son gratuitos y que si tienes alguna duda durante el proceso, la instalación completa de todas las opciones presentadas es la mejor alternativa.

Comienza el trabajo de reforma

Una vez instaladas las aplicaciones, encontraremos dentro de nuestro ordenador y en la ruta “C:Microchip SolutionsUSB Device – BootloadersHID – BootloaderHID Bootloader – Firmware for PIC18 Non – J Devices” el código fuente a utilizar para nuestro propósito. Pero antes debemos saber qué vamos a reformar y por qué lo haremos. En nuestro caso particular, realizaremos una adaptación del hardware y software original para que se transforme en un instrumento compatible con nuestra placa entrenadora. Cabe aclarar que el conjunto de archivos encontrados en la ruta indicada están preparados con las placas de entrenamiento de Microchip, por lo tanto nos cruzaremos con múltiples asignaciones y reservas de hardware que para nuestro objetivo son innecesarias. Por ejemplo, dentro de uno de los ficheros a reformar existen pines del PIC18F4550 asignados a conexiones con el bus SPI, entre tantos pines reservados que para nuestro objetivo primario no tienen utilidad. En otros casos, pines reservados del puerto D no existen dentro del PIC18F2550.

El Hardware

El programa básico que viene para trabajar con el 18F4550 posee un interruptor en el pin 4 del puerto B que se utiliza para indicarle a la placa de entrenamiento que deseamos iniciar el sistema de carga de una nueva aplicación al PIC mediante el uso del BootLoader. En nuestra aplicación (nuestra entrenadora) el puerto B estaría reservado para la conexión de un display LCD y para el bus de datos I2C, por lo que sería apropiado utilizar otros pines libres para colocar este pulsador. El pin 2 del puerto C es una buena opción para este propósito. Por otro lado, el LED que indica la entrada en funcionamiento del PIC en el modo de carga de una nueva aplicación se ubica en el pin 1 del puerto D en los archivos que corresponden al 18F4550.

Nuestro PIC no posee puerto D; por lo tanto no tenemos otra opción que cambiar la ubicación de este indicador luminoso hacia el pin 1 del puerto C. De este modo, podemos notar y observar que necesitamos construir una pequeña placa con un pulsador y un par de LEDs para adaptar nuestra entrenadora al trabajo con un sistema de pre-carga o BootLoader. El aspecto del circuito y la placa es muy sencillo: se destaca el pulsador para activar el modo BootLoader y los LEDs indicadores de estado. Gracias al uso de conectores hembra utilizados en la placa entrenadora NeoTeo, es muy simple organizar un pequeño circuito impreso para que el sistema final resulte cómodo, agradable y eficaz. Por lo tanto, queda claro entonces que hemos utilizado los pines RC0, RC1, RC2 y GND para conectar la nueva placa en nuestra entrenadora. Estas asignaciones de pines debemos trasladarlas al Software en el próximo paso .

El turno del Software

Sólo un archivo del código ejemplo que ofrece Microchip deberá ser cambiado por las razones mencionadas en los textos anteriores. Este archivo se encuentra en la ruta de acceso que mencionamos antes y es io_cfg.h. El nombre del archivo es muy explícito en su función: io_cfg es donde se configuran los pines de entrada y salida del proyecto. Todos los demás archivos involucrados en el directorio son compatibles para una gran cantidad de microcontroladores PIC 18F, entre ellos el que utiliza nuestra placa entrenadora, el 18F2550. Los modelos soportados son  PIC18F4553/4458/2553/2458, PIC18F4550/4455/2550/2455, PIC18F4450/2450 y PIC18F14K50/13K50. Por lo tanto, cualquiera de estos microcontroladores que utilice nuestro proyecto final podrá funcionar con este programa BootLoader siempre que tengamos en cuenta una correcta distribución de pines de acuerdo a nuestra necesidad de aplicación en el Hardware.

Hay muchas definiciones (#define)  dentro del archivo indicado que escapan del uso sencillo y didáctico que deseamos brindar en este artículo. Por ejemplo, las utilizadas para el uso de un potenciómetro (reóstato, resistor variable) o de tarjetas FLASH de almacenamiento masivo de datos (SD / MMC). Todas esas definiciones y asignación de pines fueron comentadas ya que sólo estamos detrás de un objetivo simple: Cargar un archivo BootLoader y manejar nuestro desarrollo libre de programadores de PICs únicamente con un cable USB. Esto es ideal para actualizaciones de firmware en tareas de campo. Las ampliaciones que la experiencia nos exija pueden esperar. Primero debemos comprender bien qué estamos haciendo y el potencial que tiene este desarrollo de manejar las actualizaciones de software de la manera más sencilla a la que se pueda acceder con elementos de uso diario. Este razonamiento de comprensión y familiarización con las herramientas es válido tanto para nosotros como para nuestros “clientes” o aquellas personas a las que les brindamos nuestros desarrollos.

Resumiendo los cambios de Software: Sólo un archivo hay que reformar: io_cfg.h. Si utilizas la placa entrenadora NeoTeo, te darás cuenta de manera muy fácil cómo y dónde hemos realizado la reforma si husmeas en el archivo indicado. Notarás muchas líneas comentadas con la clásica doble barra inclinada (//).

Resumiendo el Hardware: Una elemental placa pequeña que puedes realizar en pocas horas utilizando elementos de uso habitual en cualquier desarrollo. Resistores un pulsador, un capacitor, un impreso sencillo y algunos pines de conexión.

Comencemos
Esto es el inicio del trabajo con BootLoaders en las aplicaciones ofrecidas a terceros. Como en todo orden de la vida, existe gente convencida de que se trata de lo mejor en actualización de Firmware a distancia (con posibilidad de ejecución por el mismo cliente) y otros insisten con que la técnica del ICSP (In Circuit Serial Program) es la mejor ya que es uno mismo el que supervisa el trabajo de actualización y puede solucionar cualquier “accidente” que por error pueda generar el cliente. Como mencionamos más arriba, Microchip ofrece en la actualidad sistemas que son capaces de conectarse a la web de manera automática y actualizar su firmware sin que el usuario se entere.

Es decir, hay muchos métodos y formas de trabajar con pre-cargadores de archivos o BootLoaders. Nosotros te traemos el inicio de cómo lograr resultados exitosos desde el primer intento. Es por esto que te ofrecemos al final del artículo dos archivos donde encontrarás todo lo necesario para comenzar. En el fichero “Archivos_Unicos” encontrarás el HEX que debes grabar en el PIC con un grabador convencional de PICs (quemador = PicKit2/Pickit3/ICD2/ICD3/GTP-USB +, etc) y al finalizar su grabación conectarás tu desarrollo (o nuestra placa entrenadora) a cualquier puerto USB de tu ordenador para que el trabajo sea identificado como una interfaz HID. Importante: Para que esta operación se realice con éxito, deberás insertar el conector USB manteniendo pulsado el botón SW (BootLoader). La imagen obtenida muestra el comienzo del proceso mientras el BootLoader se instala en la raíz de Dispositivos de Interfaz de Usuario (HID)

Una vez conectado el sistema con el BootLoader pre-grabado en el PIC, detectado por el ordenador, instalado y “listo para ser utilizado”, los LEDs comenzarán a encender en forma alternada. Esta es la señal de que el BootLoader está listo para recibir el programa principal de trabajo. Ese será el momento en que todo estará preparado para iniciar el funcionamiento del pequeño software que utilizarás para cargar los resultados de tus “firmwares” en el PIC con sólo usar un cable USB. Un software gratuito, muy sencillo de utilizar y muy intuitivo (a pesar de estar desarrollado en inglés) el HIDBootLoader es un programa que podrás ofrecer a terceros para que ellos mismos actualicen el firmware del desarrollo que le has vendido, entregado, regalado o prestado (este programa está incluído en los archivos que te ofrecemos para descargar). En primera instancia, el programa detectará la conexión al dispositivo y su estado de BootLoader iniciado presentando una pantalla como la siguiente, donde el botón para abrir una fila del tipo HEX se habilita.

Lo que continúa es muy fácil de intuir. Pulsando el botón “Open Hex File” accederás al archivo a cargar dentro del PIC para programarlo con la real aplicación del desarrollo, por ejemplo, con el programa para hacer funcionar un termómetro I2C o un reloj en tiempo real RTC. El paso siguiente es programar el PIC con el botón “Program / Verify” y allí comenzará el proceso de grabación. Primero se borrará cualquier dato contenido en la zona a programar dentro del PIC y una vez limpios los registros de memoria se dará paso a la programación del dispositivo. Por último, el programa efectúa un control y verificación de las tareas realizadas emitiendo un mensaje satisfactorio cuando todo transcurrió con normalidad.

Además de este fichero HEX pre-armado por nosotros y separado en un archivo aparte para que no te confundas (Archivos_Unicos), en el fichero “BOOTLOADER_NEOTEO” está todo lo necesario para trabajar y modificar este desarrollo, es decir, todo lo que MPLAB necesita para que puedas reformar la aplicación a tu medida. Claro está, los archivos anteriores también están allí. Ahora sólo restan conceptos que tú serás el único capacitado para resolver. Saber cuándo te encuentras frente a una aplicación que necesita actualizaciones con tu presencia o no. Saber cuándo se justifica utilizar un BootLoader o cuándo un conector ICSP es suficiente. Luego de toda esta explicación con palabras y gráficos, ¿deseas ver todo lo explicado en un video para que no te queden dudas? Aquí lo tienes.

Tal como mencionamos al principio, el BootLoader es un programa anfitrión que reside dentro del microcontrolador y se utiliza para facilitar la programación de estos dispositivos. A pesar de ser un programa pequeño, ocupa espacio de memoria interna en el microcontrolador que no podrá sobrescribirse ya que de ese modo estaríamos pisoteando y arruinando las líneas de código del programa BootLoader con nuestro código de aplicación. Para evitar esta catástrofe debemos “reservar” un espacio para que el BootLoader se acomode dentro del microcontrolador y sólo sea activado mediante el pulsador (SW) dedicado a este propósito. Este pequeño programa anfitrión que se desarrolla con esta aplicación se ubicará en la parte más baja del mapa de memoria del PIC ocupando hasta la dirección 0xFFF. Por lo tanto todos los programas que intentemos cargar deberán grabarse desde la posición 0x1000 en adelante. De lo contrario, romperemos el programa BootLoader y el sistema desarrollado no funcionará.

¿Cómo se realiza esto? El los programas escritos en lenguaje ASM se utilizan las directivas ORG para indicar el posicionamiento de los vectores de inicio de programas. En C o en C18 también se hacen llamadas a lenguaje ASM para “mapearlos vectores de RESET, es decir, a partir de qué posición de memoria comenzará a funcionar el PIC si el botón SW (BootLoader) no es activado al momento de conectar el desarrollo al puerto USB. En el caso de cualquier lenguaje BASIC bastará con una declaración ubicada en una única línea. Por ejemplo en Proton sería “DECLARE PROTON_START_ADDRESS = $1000”

Hay sistemas que utilizan menos espacio de memoria interna para el programa BootLoader, en los que el vector de reset de una aplicación se ubica en 0x0800. Como habrás observado siempre, nuestra intención es guiarte, ayudarte y recorrer juntos el camino que resulte más sencillo y cómodo para el inicio. MPLAB posee una herramienta para visualizar la cantidad de memoria ocupada por el programa y nuestro BootLoader (ejemplo extraído de la librería de Microchip) ofrece la siguiente imagen entrando en la vista de este parámetro.

Resumen final   

Antes de lanzarnos a diseñar aplicaciones con un sistema de BootLoader debemos tener en claro si la aplicación justifica su uso. La experiencia nos dirá si es necesario o no. Vender un sistema de letreros luminosos a una empresa de vehículos de transporte de larga distancia con sede en Estambul merece utilizar este sistema de actualización a distancia realizado por algún técnico local o directivo de la empresa. Construir una pequeña central que controle la temperatura y la humedad de nuestra habitación no justifica este trabajo ya que el ICSP nos soluciona todo el problema en cuestión de minutos. Es decir, a partir de ahora y con las herramientas en la mano, el que sabe y decide eres tú.

Por último, y como es lógico entender, el pulsador y los LEDs indicadores de funcionamiento deberán estar integrados en tu construcción final de manera permanente si deseas utilizar el método de pre-cargador (BootLoader). RC2 (para nuestra aplicación) siempre debe estar polarizada en un estado alto al encender el sistema o al conectarlo al puerto USB. Caso contrario, el programa interpretará un estado bajo y de ese modo creerá que queremos cargar un nuevo programa. Por lo tanto, esto no es algo que se pueda utilizar sólo para cargar el programa al microcontrolador sino que es parte del Hardware final y definitivo. En cambio, los pines que operan los LEDs indicadores pueden ser reutilizados dentro del Hardware para otras funciones. Comparte tus experiencias, mejora nuestro desarrollo y cuéntanos tus resultados. Cerramos con la frase que siempre te decimos: tú y tu ingenio sabrán hacerlo mejor.

Reportar

¿Qué te pareció?

Escrito por Mario

61 Comments

Leave a Reply
  1. Hola Mario:

    Ya te estabamos extrañando, nos dejaste 3 semanas en espera de tus articulos, pero si que valieron la espera y con muchos honores, porque en verdad que esta excelente la aplicacion, ya que te abre la posibilidad a que los desarrollos que se realicen tengan una flexibilidad muy grande. Muy pero muy bueno este desarrollo.

    Mil gracias, un abrazo desde Colombia

    • Buenas:

      me añado a la "extrañez" de la espera, pero como bien dice Yesbond, ha valido la pena :D.
      En mi caso, ademas, estoy haciendo un programador de pics por USB, que requiere un bootloader en un pic 18f2550… Me ha servido bastante para entender el funcionamiento de este "futuro" programador (futuro porque todavia no he conseguido grabar el pic, pero ya lo acabare, ya… 😀 )

      Un saludo, Mario.

      • Hola jakala!

        Esa es la función del artículo presentado.
        Aquellos que no tengan un grabador de PICs sólo deben conseguirlo una vez y cargar en el microcontrolador el BootLoader. Luego todo se realiza mediante el puerto USB.
        Más fácil, imposible! :))

        Éxitos con tu programador!
        Saludos!

    • Hola Yesbond!

      ¿3 semanas?¿Tanto tiempo?
      A veces uno vive la vida de manera muy acelerada y pierde la noción de los tiempos. Estuvimos muy activos concurriendo a un seminario de microcontroladores que se dictó en Buenos Aires entre otras cosas y el tiempo ha transcurrido sin piedad, pero aquí estamos nuevamente.

      Un BootLoader (o bootloader) es una herramienta magnífica realmente. Le resuelve los problemas a mucha gente. A pesar de que hoy abundan los programadores USB muy económicos y fáciles de construir, liberarse de esa carga es un hecho importante para muchos.

      Me alegra que sea de tu agrado amigo! :))
      Ahora hay que aplicarlo y aprovecharlo.

      Un abrazo! Gracias por estar siempre!

  2. Buenas Mario:

    Acabo de mirar los anteriores tutoriales, y no he visto un pcb o un esquematico de la placa de entrenamiento neoteo… Tienes pensado publicarlo? si es asi, podrias ponerlo en los adjuntos de este tutorial? Muchas gracias de antemano 😉

    Un saludo,

    Jakala

    • Hola de nuevo jakala!

      Ya he colocado los impresos correspondientes en ambos artículos. El de la placa entrenadora y el del módulo para trabajar con BootLoader al final de este artículo (tercer página)

      La cuestión de los circuitos impresos es algo muy personal y hay oportunidades en que a los usuarios (a mí me sucede) les gusta hacer sus propios diseños de circuito impreso mejorando el que podamos presentar nosotros.

      Muchas veces pensamos: "esta vía debiera ser más fina o más gruesa" o también decimos: "esta vía debiera ir por aquí o por allá" y tal vez por esos motivos trato de dejar a criterio de Uds. el diseño del circuito impreso. Porque es una cuestión muy personalizada.De todos modos, ya he colocado en cada artículo, su correspondiente circuito impreso "que yo he utilizado y se observa en los videos" tal como lo han solicitado.

      Además, si la idea es armar una placa entrenadora con el sistema de BootLoader ya incorporado, los impresos ofrecidos no serían de gran utilidad. De todos modos, allí están los impresos para todos los amigos. 🙂

      Saludos jakala!

  3. Saludos amigo Mario,

    El tema de los Pics cada vez se pone mas interesante, yo tengo como pasatiempo la electrónica y estoy haciendo uno que otro montaje. Excelente articulo Mario!.

    Muchos Saludos.

    • Hola amigo Falke!

      Los microcontroladores son extraordinarios respecto a las posibilidades que nos brindan de poder fabricar cosas muy útiles con muy poco esfuerzo. Además nos ayudan a estar a tono con las nuevas tecnologías y técnicas de programación.

      ¡Mira tú! ¿Quién me habría visto a mí programar en MPLAB y C18?
      Tener la posibilidad de estudiar, razonar y aprender (ir a perder el tiempo a una Universidad a buscar un Diploma es otra cosa) es una bendición que hay que aprovechar en esta vida. 🙂

      ¡Adelante con los montajes y la experimentación! ¡Éxitos amigo!

      Gracias por estar siempre con nosotros. :))

  4. Disculpame editor pero para hacer este experimento necesitamos el esquema pcb y del circuito impreso para elaborar la placa.
    saludos

    • Hola comrade k!

      Ya he colocado los diseños de los impresos que yo he utilizado en sus respectivos lugares dentro de los artículos (Éste y el de la entrenadora).

      Saludos!

  5. Esta super el articulo u.u, yo uso es un BootLoader por el puerto serial y para grabar, uso el termina de compilador CCS pic-c. Los BootLoader son muy útiles para depurar al instante el cosigo del proyecto y no extraer el pic (se dañan los pindes) para grabarle un ajuste. No se trabajar por el USB (no money =/ ) pero me a entusiasmado los excelente artículos anteriores respecto al tema, mientra estoy revisando uno manuales a ver como simulo el USB en isis proteus.

    • Hola Truko!

      Ya no más puerto serie!
      Ahora puedes utilizar siempre un 18F2550 (o algo superior, pero siempre con USB) para todos tus proyectos y manejarte con una netbook simplemente gracias al BootLoader.

      Armas tu programa, lo compilas, conectas la aplicación al puerto USB mientras pulsas el botón, cargas el archivo con el programa que entregamos en este artículo … y listo!

      Los tiempos cambian y debemos acompañarlo.
      El USB ha llegado para reemplazar a todos los sistemas y sigue creciendo (habrás visto los artículos sobre USB 3.0).

      Saludos Truko! Gracias por estar siempre con nosotros! 🙂

    • Gracias billsmile! 🙂

      Hey! Ese gato se ha "chupao" una Quilmes y algo más! Eso es vida !!!! jajajaja !!!

      Saludos amigo! Gracias por acompañarnos!

      • Exacto!

        Es tal cual como lo expresa el amigo Jukinch.
        Este bootloader es compatible para cualquier PIC de los mencionados en el artículo y una vez "grabado" o "cargado" dentro del PIC, mediante un cable USB y el programa "cargador que entregamos, tú sólo necesitas un archivo HEX para cargar en el PIC.

        Dá lo mismo que lo hayas hecho y compilado en BASIC, el C, en C18, en ASM, en PASCAL en lo que sepas utilizar. Sólo debes cargar un HEX respetando que ese programa se cargue desde la posición 0x1000 dentro del PIC. Sinó, estarías "pisando" el programa BootLoader" 😉

        ¡Saludos Juan! ¡Gracias por estar con nosotros!

  6. Disculpame editor pero para hacer este experimento necesitamos el esquema pcb y del circuito impreso para elaborar la placa.
    saludos

    • Hola Arka!

      Ya están incorporados los impresos. En otros mensajes (más arriba) he hecho la aclaración.
      En realidad no lo necesitan. :)) Uds. lo quieren para que les sea más fácil el trabajo de armar las cosas. 😉

      Yo les aconsejo crear sus propios diseños de circuitos impresos. Eso los ayudará a lograr mucha gimnasia creativa. Además, para hacer impresos no hacen falta programas o softwares complejos. ¡Conozco a un amigazo que siempre hizo sus impresos con el PAINT que trae Windows! Armó plantillas de los pads (circulitos por donde pasan los terminales), de los circuitos integrados y de los componentes más utilizados y luego sólo copiaba y pegaba plantillas que luego terminaba uniendo con trazos. ¡Muy ingenioso y creativo!

      No dejen de crear UDs.
      Quizás los diseños que hagan sean más útiles que los nuestros. Mucho más importante aún es saber hacerlo cuando la aplicación es dedicada. Es decir, si necesitas controlar un termómetro y un motor que active una bomba de refrigeración, no creo que les sean muy útiles los impresos que propongo. :))

      ¡Es tan lindo crear!

      ¡Saludos amigo!

  7. los msp430 de texas tiene lo mismo desde ahce tiempo, se pueden programar por usb sin tener que retirar el microcontrolador de la placa, me parace que se le llama JTAG, ademas de que son muy muy versatiles y algunos vienen integrados con los xbee y hacer cosas similares que cion al arduino

  8. HOLA MARIO ANTE TODO FELICITARTE COMO SIEMPRE POR LA CLARIDAD CON LA QUE EXPLCIAS CADA DETALLE DE TODOS LOS ARTICULOS. SOLO UNA COSA QUE QUEDA EN DUDA, YO ESTABA ESTUDIANDO ING ELECTRONICA EN LA UTN EN BS AS. POR PROBLEMAS EN EL MEDIO PERDI LA REGULARIDAD Y ESTE AÑO QUEDO SOLO PARA EL ESTUDIO, QUERIA SABER TENIENDO EN CUENTA TU EXPERIENCIA Y SABIDURIA JAJA QUE ES LO QUE PENSAS ACERCA DE LA FACULAD O UNIVERSIDAD… A MI ENTENDER Y POR MIS VIVENCIAS, SE APRENDE MUCHO ACTUALIZANDOTE LAS NECESIDADES DE MERCADO Y LAS TECNOLOGIAS VIGENTES QUE ESTANDO 6 HORAS POR DIA, 5 DIAS A LA SEMANA ENCERRADO EN 4 PAREDES ESTUDIANDO PURAS MATEMATICAS CON GRADO DE COMPLEJIDAD ELEVADO Y ESTUDIANDO FENOMENOS FISICOS QUE NO SON INDISPENSABLES A LA HORA DE APLICARLOS EN LOS PROYECTOS…. EN RESUMEN QUERIA PREGUNTARTE EN BASE A TU EXPERIENCIA: QUE RIESGO CORRO AL LANZARME SOLO A DISEÑAR INNOVACIONES Y APRENDIENDO POR MI CUENTA? VALE LA PENA?
    AHHHH Y PARA MI AYUDA VOS SOS ESTUDIANTE, GRADUADO?

    MUCHAAS GRACIAS MARIO POR TODO

      • Hola Ramiro!

        Nunca pongas en duda la posibilidad de lograr un título universitario. Si tienes la posibilidad de asistir a una Universidad, bajo ningún concepto debieras dejar de estudiar la carrera. Yo siempre insisto en que existen muchas clases de alumnos universitarios y son opiniones muy personales:

        1)Los que van a la Universidad a recibir un Diploma sólo para darle el gusto a papá, mamá y la abuela obteniendo el título a los golpazos y son mediocres toda su vida, saltando de trabajo en trabajo porque a pesar de tener un título, son inútiles para todo.

        2)Los que van a estudiar para recibir un diploma y luego con eso "intentar" demostrar que saben. Porque para ellos no interesa recibirse con notas bajas. El objetivo es "zafar"

        3)Los que sólo desean alcanzar el diploma para meterse de empleado jerárquico en una fábrica y liberarse de la lucha diaria de seguir progresando en la vida y en la especialización.

        4)Y los que hacen que me ponga de pié para felicitarlos y aplaudirlos por el esfuerzo de intentar ser cada día mejores profesionales avanzando en su especialidad, renovando su compromiso con los contínuos avances de la tecnología y luchando porque tengamos un país mejor.

        A esa gente defiendo a muerte. Al que "vá a aprender" a una Universidad y no al que "asiste" a una Universidad. Me dá mucha pena el que "logra" el diploma y me enorgullece el que "se choca" con el diploma en su camino hacia el contínuo avance y progreso.

        Por experiencia propia, conozco a los cuatro tipos enumerados. No me lo contó nadie.

        A eso me refería Ramiro.
        Ojalá tú seas de los que "sienten en la piel" lo que estudian. De los que lloran de emoción cuando logran el éxito en un diseño o en una construcción.

        Si en cambio eres un frío y oscuro personaje que no se inmuta ante nada y te crees el ombligo del mundo por tener un título universitario, sólo serás eso, un oscuro personaje.

        Te repito a tí y a todos los que puedan tener dudas sobre estas ideas. Si tienen la oportunidad, nunca dejen de estudiar, de crecer, de avanzar, de investigar, de enriquecerse. La universidad es la base para saber comprender las nuevas tecnologías. Sin la universidad, todo lo nuevo, se vuelve difícil e incomprensible y es por la falta de una "base" analítica y estructurada de ver, pensar y analizar las cosas nuevas que se interponen en nuestro camino. (excepto que seas una mente brillante)

        Si eres un luchador, un título universitario te elevará las posibilidades de defenderte en este mundo capitalista. Si eres un inútil, un título universitario sólo adornará una pared de tu casa.

        Respecto a mí, no interesa que sea Aprendíz, Técnico, Ingeniero, Master, un millonario excéntrico o un simple perro callejero. Mi vida (que no es corta) se basó siempre en leer, estudiar, aprender, investigar, ensayar, probar, quemar cosas, hacer funcionar muchas otras y por sobre todo ser felíz con lo que hago cada día. Para lograr todo eso … ¿importa el título que tengo?

        Resumen:
        Si el estudio es un medio para lograr la felicidad de tener los conocimientos de cosas que uno siente en lo profundo de su ser, intentarlo está bárbaro y soy el primero en aplaudirte de pié.
        Si el estudio es un objetivo para lograr un trabajo cómodo, podrás tener dinero, pero serás una pobre persona toda tu vida.
        Recuerda que no es lo mismo ser "una persona pobre" que "una pobre persona".

        Ojalá puedas retomar tus estudios y lograr tu título. Desde aquí mis mejores deseos! :))

        Saludos amigo!

  9. que mas decirte que agradecerte por todo lo que haces por nosotros. Sos una persona que vale oro Mario. te agradezco nuevamente tus sabios consejos. Y me hiciste replantearme muchas cosas leyendo lo que escribistes. Voy a optar por el camino que me hace mas feliz y si en algun momento llego a la cuspide de mi felicidad jaja seras el primero en saberlo. Desde Lomas de Zamora, Bs. As., Argentina. Ramiro

  10. Hola mario:

    Siempre leo tus articulos, muy buenos.
    Solo una consulta: estaba haciendo mi arduino, que como mencionas tambien tiene un bootloader, pero para cargarlo se necesita de un conector ICSP que la arduino tambien tiene. Yo intente cargarlo mediante el puerto paralelo de la PC con un cable que yo hice al conector ICSP (la page de arduino muestra como). No funciono. Parpadeo el led pero un rato, en el programa del arduino salia error. Mi pregunta es: para grabar en arduino es indiferente grabarlo por el ICSP o el puerto USB? (serie n mi caso estaba haciendo una version antigua). En la tarjeta que armas usas un PULSADOR para grabar por un medio(el bootloader, USB, creo). La arduino no tiene ese pulsador tons puedes grabarlo por cualkier medio por igual??

    Gracias por tu respuesta.

    PD: Tambien me hizo reflexionar tu ultimo mensaje, realmente eres una gran persona. Exitos!

  11. grande mario.. esta es una herramienta muy buena, yo ya tengo conocimiento en este bootloader de microchip, ya e hecho 3 plaquitas con el y en las 2 ultimas me tire a modificar el boot que entrega microchip y por demás es muy genial dado que te olvidas del grabador, claro esta que si te olvidas de colocar una linea en el programa, tendrás que volver a usar el grabador y grabar nuevamente el boot.

    Saludos.. aunque ya se como funciona esto seguiré leyendo el post completo..=)

  12. una cosa para el que programe en PicBasic pro (como yo) para remapear el vector de reset solo basta colocar:

    DEFINE RESET_ORG 1000h
    al comienzo del programa y ya esta listo =)

  13. Hola Mario, excelente proyecto, amplio mucho mis conocimeintos, solo una cosa…vos decis "cargamos la fila"…es un argentinismo de "cargamos un archivo"??? jajaja file=archivo.
    Va con onda…saludos y gracias.

  14. se ve muy interesante, lastima que no tengo el hardware necesario(nada mas el conector USB) lo de mas ya lo tengo o al menos la base, en cuanto a la placa entrenadora se ve interesante y como buena placa entrenadora, con elementos modulares, tambien me agrada ese cambio rapido del programa con unos cuantos clicks. A probar, y tomar en cuenta el detalle de la ubicacion del codigo, tambien ya tengo que dejar esa necia negacion a querer hcer los programas en C, simpre los hago en ensamblador, esta muy bien asi pero la verdad los proyectos que quiero hacer ya son mas que pesados. Cuidense y ya les estare haciedo capturas o preguntado.

  15. Estimados NeoTEo

    He armado la placa entrenadora pero surge un problema. Mediante un programador JDM cargué el bootloader, luego saque el pic y lo coloqué en la placa entrenadora y cuando lo conecto al USB con el botón de Bootloader presionado, no pasa nada.

    Probé cargando otro bootloader, el Microingeniería y con este archivo por lo menos prende uno de los leds de control, pero no titila.

    Qué puede estar pasando? Qué debería chequear?

    Saludos,

  16. hola a todos, tengo un problema con el hid bootloader, cuando kiero ejecutarlo me sale un mensje de error, alguien sabe como resolver eso?… ahh tengo win xp.

  17. EL PROGRAMA BOOTLOADER.HEX ADJUNTO AL FINAL ES EL UNICO QUE SE LE CARGA AL PIC(POR MEDIO DE UN PROGRAMADOR), PARA QUE YA QUEDE LISTO PARA LAS SIGUIENTES PROGRAMACIONES CON SOLO USB CLARO Q APARTIR DE LA LINEA 0X100 PARA Q NO HAYA PROBLEMA ALGUNO CON EL BOOTLOADER, Y NO ENTENDI EL PROCEDIMIENTO DE MODIFICAR LA LIBRERIA IO_CFG.H ME PODRIAN ACLARAR QUE ES EXACTAMENTE LO QUE SE LE MODIFICA.
    ME PARECE UNA ESTUPENDA FORMA DE ABRIRNOS EL MUNDO HACIA EL USB

    MUCHAS GRACIAS MARIO POR TU APORTE FELICIDADES¡¡¡ POR TU GRAN APLICACION DE CONOCIMIENTOS ADQUIRIDOS ERES UN EJEMPLO A SEGUIR.
    P.D. SOY DE MEXICO ME PODRIAN AYUDAR CON ESTAS DUDITAS GRACIAS.

  18. deja ver si entendi, hago un pograma en el mplab como cualkier otro, y para cargarlo en el botloader, solo voy a esa aplicacion y cargo el HEX que me genero el programa que realice y listo. O tengo que darle una direccion especifica a el programa para que se pueda cargar en el botloader, un ORG XX especifico de acual partir?

  19. Funciona en windows 7?
    googleando me di conque el bootloader para el pic18f4550/2550 , mas bien el driver no es compatible con windows vista/seven,por lo que veo lo tienes en XP, alguien lo ha puesto en windows 7 ?

  20. saludos, me parece interesante el tema y por ello he tratado de compilar el ejemplo que has propuesto pero me genera un error
    MPLINK 4.40, Linker
    Device Database Version 1.3
    Copyright (c) 1998-2011 Microchip Technology Inc.
    Error – section ‘_cinit_scn’ can not fit the section. Section ‘_cinit_scn’ length=0x0000009e
    Errors : 1
    no entiendo que quiere decir esto si puedo obtener ayuda con respecto a ello agradecere bastante.

  21. Hola Mario,

    Exelente todos los artículos pero en el de Bootloader para 18f2550
    no he podido pasar a la siguientes páginas, pues estoy buscando el impreso del circuito.
    ¿ Donde lo puedo encontrar???

    Saludos!

  22. Hola Mario,

    Exelente todos los artículos, pero en el de Bootloader para la Entrenadora de 18f2550, no he podido pasar a las siguientes páginas,
    pues estoy buscando el impreso o diagrama del Bootloader.
    ¿Donde lo puedo encontrar???

    Saludos!

  23. Este bootloader HID de Microchip tambien funcionaría con el compilador CCS???.

    ME refiero a que, si cargo el bootloader como indican con C18, y luego para mi proyecto utilizo el compilador CCS para generar el Hex no tendría problema alguno de compatibilidad. (Obvimente respetando los vectores de interrupción.)

  24. Hola,

    Encantado de ver que cada vez somos más los que ponemos contenido relacionado con los micros y la electrónica en castellano. El artículo está muy bien, hace pocos días precisamente escribí algo de temática similar aunque entrando más en detalle sobre las estrategias a seguir para desarrollar un Bootloader, espero que si lo lees sea de tu agrado, como para mi lo ha sido leerte a ti

    http://www.javierlongares.com/arte-en-8-bits/sistemas-embebidos-reprogramacion-y-cambio-de-funcionalidad-en-tiempo-de-ejecucion/

    Saludos

  25. Hola

    Me parece muy bien el tema y con muchos futuro pero tengo una pregunta, como se graba el PIC ya que al momento tengo bastante opciones y no se cuales activar y cuales no

    Saludos….

  26. Excelente Mario, esta de pelos.
    Lo he estado probando y va de maravilla solo quisiera intercambiar el boton conectado a RC2 y pasarlo a RC0, y el led que esta en RC0 pasarlo a RC2, pero cada ves que intento compilarlo en el mplab me tira errores y no he logrado compilarlo. Me podrias hacer el favor de intercambiarlos??? En verdad te lo agradeceria bastante.

    De antemano,gracias.

  27. En la descarga, vi la carpeta original del Bootloader del 4550 con su op_cfg original, mas no vi el io_cfg modificado para el 2550. Podría por favor subirlo?
    Muy bueno el tutorial. Gracias!

  28. Hola, esta muy interesante; pero cuando lo conecto al PC no reconoce el dispositivo. Hay alguna solución para esto?

    Gracias

Responder a Mario Sacco Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Crean el primer anticuerpo sintético

Roc: Compone música online