Autor Tema: Tiny Bootloader para 12F18xx y 16F18xx  (Leído 2765 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Tiny Bootloader para 12F18xx y 16F18xx
« en: 30 de Junio de 2013, 07:12:35 »
Hola!
Hace unos meses conoci a varios electronicos que utilizan Arduino, y ademas por algunos proyectos que me piden me estoy empezando a familiarizar con la Raspberry Pi. Desde entonces he empezado a entender el concepto de bootloader, cosa que antes ni se me ocurria preguntar para que era, ya que el ICSP me era mas que suficiente.
Pero por lo visto tiene varias ventajas (y sus inconvenientes tambien), asi que he decidido probarlo. He dado el salto completo a la nueva gama "enhanced mid range" de Microchip, que tiene PICs que son una brutalidad, y mucho mejores precios que los anteriores!

Buscando he encontrado el Tiny Bootloader que esta muy extendido y ocupa muy poco en la memoria del micro, pero por desgracia esta muy desactualizado y soporta muy pocos PICs. Pero buscando por internet se puede encontrar gente que sigue haciendo sus modificaciones al bootloader original y consigue compatibilidad con nuevos micros.
Este es el caso de los nuevos enhanced midrange, que he encontrado el bootloader en el foro de microchip:
http://www.microchip.com/forums/m614768.aspx
Y un proyecto llamado "Moleculine" que utiliza varios de estos nuevos PICs y ha hecho las modificaciones para casi todos los nuevos PICs:
https://sites.google.com/site/psmoleculine/

Quiero probar, pero me surgen ciertas dudas con respecto a los bootloaders.
-El PIC mantiene TODAS sus funciones exactamente igual que si no tuviera bootloader?
-Como modifico los fuses del bootloader?
-Alguna consideracion a tener en cienta a la hora de diseñar el software o hardware?
-Que ventajas me aporta los pines DTS y RTS?
-Supongo que habra que crear un bootloader para cada tipo de PIC, y ademas, para cada configuracion diferente dentro del mismo PIC.

Bueno, son varias dudas, pero tengo ganas. Asi que intentare poner cualquier avance, asi como los bootloader que puebe y funcionen correctamente.

Salu2!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Tiny Bootloader para 12F18xx y 16F18xx
« Respuesta #1 en: 30 de Junio de 2013, 08:14:48 »
He encontrado este bootloader que tambien tiene buena pinta y parece que lo actualizan mas a menudo:
http://mrmackey.no-ip.org/elektronik/ds30loader/index.php
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Tiny Bootloader para 12F18xx y 16F18xx
« Respuesta #2 en: 30 de Junio de 2013, 11:10:36 »
Yo he usado este de microchip (AN1310)  funciona bastante bien. Soporta PICs 16F y 18F.

Saludos.
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re: Tiny Bootloader para 12F18xx y 16F18xx
« Respuesta #3 en: 30 de Junio de 2013, 13:09:28 »
En otros ambitos, como por ejemplo los receptores de satelite, los bootloaders son generalmente utilizados, ya que facilitan la actualizacion del firmware del receptor. Permiten dicha actualizacion por los distintos puertos estandard que tenga el receptor, como suele ser RS232 y USB.
El bootloader no es sino, como su propio nombre indica, un gestor de arranque y carga, que permite en cualquier caso, incluso cuando el firmware se corrompe, recuperar el equipo en cuestion mediante la carga de un nuevo firmware y sin necesidad de manipular en su interior ni conectar ningun hardware auxiliar para la programacion.
En el caso concreto de los PIC's, es bastante practico en el proceso de diseño y desarrollo, ya que nos permite reprogramarlo sin necesidad del PicKit o similar, basta con una conexion RS232 o USB. Tambien en el proceso de produccion, si se preveen cambios frecuentes en el programa. Aunque el uso del ICSP no es demasiado engorroso, siempre es mas practico utilizar un interface estandard que no requiere hardware adicional.

Citar

-El PIC mantiene TODAS sus funciones exactamente igual que si no tuviera bootloader?


Claro, el bootloader tan solo es una rutina que ocupa un pequeño segmento de la flash y se dedica a ir depositando en el resto de la flash el programa que recibe por RS232 o USB. Tienen un "control" para saber si arrancamos en modo bootloader, o sea programacion o en modo normal o de trabajo. En el primer caso arranca la rutina del bootloader y hace su trabajo, en el segundo caso, directamente se "puentea" el bootloader, saltando a la primera posicion del programa y ejecutandolo como si no existiese el bootloader.

Citar

-Como modifico los fuses del bootloader?


No entiendo muy bien tu pregunta, los fuses creo que son los mismos que para el programa principal, salvo ese "control" que mencionaba antes.

Citar

-Alguna consideracion a tener en cienta a la hora de diseñar el software o hardware?


En cuanto al hardware, nada especial. El software, simplemente debe tener en cuenta que va a trabajar con cierto offset, pero creo que eso lo implementa ya el propio bootloader, realizando unas comprobaciones en el momento del arranque y saltando a la primera posicion del programa, si no se trata de entrar en programacion.

Citar

-Que ventajas me aporta los pines DTS y RTS?


Eso son lineas de control del protocolo RS232, no tienen nada que ver directamente con el bootloader, aunque pueden ser utilizadas por aquel.

Citar

-Supongo que habra que crear un bootloader para cada tipo de PIC, y ademas, para cada configuracion diferente dentro del mismo PIC.


Como ya dije antes, la mision del bootloader es simplemente copiar a la flash el programa que recibe por RS232 o USB, por tanto creo que sea comun para todos los PIC's, salvo en lo que concierne a tamaño de la flash, ancho de la palabra y algunos otros parametros. Entre proyectos del mismo PIC no hay cambios en el bootloader.
« Última modificación: 30 de Junio de 2013, 13:13:50 por AcoranTf »

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Tiny Bootloader para 12F18xx y 16F18xx
« Respuesta #4 en: 01 de Julio de 2013, 15:56:07 »
Gracias Sander! El bootloader de microchip por un lado me da confianza y supongo que sera robusto al ser la version "oficial", pero por otro lado no soporta el 12F1822/40 y el tamaño del bootloader es de aproximadamente 450 palabras que llega a ser 1/4 de la memoria para micros chicos :S

Acoran, agradezco las aclaraciones!
Leyendo un poco mas pude ver y responder mis propias preguntas:
-El tema de los fuses creo que hay que ajustarlos en el propio bootloader, usando unos que sean adecuados luego para nuestro firmware. Si no tenemos el codigo fuente del bootloader, solo el HEX, lo que podriamos hacer es omitir los fuses que tenga configurados y decirle al programador que use los que nosotros le indiquemos en el momento de meter el bootloader en el PIC.
-El pin RTS lo utilizan algunos bootloaders para entrar en modo de programacion automaticamente haciendo un reset al PIC a traves del puerto serie. Esto facilita el trabajo. El DTS no se si se utiliza para algo.
-Si que se necesita un bootloader para cada PIC, ya que el bootloader debera saber la memoria disponible y otros parametros necesarios a la hora de autoescribirse. Con las configuraciones diferentes me referia a los fuses, pero si podemos omitir los que tiene nuestro bootloader y seleccionarlos manualmente probablemente no haga falta volver a compilar el bootloader.

Seguire investigando en el tema que me parece muy interesante!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Tiny Bootloader para 12F18xx y 16F18xx
« Respuesta #5 en: 19 de Julio de 2013, 07:57:43 »
Encontre este Bootloader que parece una continuacion del Tiny Bootloader, ya que contiene todos los nuevos PICs, incluso el 10F322!
Y sigue con las 100 palabras de tamaño. Al bajarlo tienes el codigo fuente y todo.
Aun si probarlo parece una muy buena opcion!
Y tambien tiene bootloader para ATMEL
http://tinypicbootload.sourceforge.net/
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.