Autor Tema: Posibilidad de mandar actualizaciones a un pic18f4550  (Leído 125 veces)

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

Desconectado Icat

  • PIC10
  • *
  • Mensajes: 38
Posibilidad de mandar actualizaciones a un pic18f4550
« en: 12 de Enero de 2021, 06:39:38 »
Hola feliz año atrasado, me gustaría comentar una duda que me ha surgido en un proyecto, os pongo un poco en contexto.

En mi proyecto se va a estar utilizando el UBS para comunicarse con el PC como un HID, para cargar el programa en el PIC por primera vez no hay problema simplemente conecto mi PicKit3 al puerto ICSP y listo el PIC ya tiene su programa volcado, pero en mi proyecto cabe la posibilidad de que se tenga que actualizar el programa interno pero claro ya no tendría acceso directo al PIC con lo cual no es una opción programarlo a través del ICSP, ¿es posible programarlo a través del usb?  Si es así ¿donde puedo encontrar información al respecto? Llevo buscando unos cuantos días información y no consigo encontrar nada.

Muchisimas gracias de antemano.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8005
Re:Posibilidad de mandar actualizaciones a un pic18f4550
« Respuesta #1 en: 12 de Enero de 2021, 09:42:35 »
Lo que buscas se llama USB bootloader.

Basicamente lo que creas es un programa que se le llama Bootloader, el cual SI o SI lo grabas con el Pickit, de alli ese programa, al comenzar el micro pedira la actualizacion, si no se le envia nada, entonces pasara al programa normal, este programa ocupara una posicion de memoria distinta del bootloader. Ya que es necesario borrarlo. Asi que estaran en distintas paginas de la memoria Flash.

Te sugiero que busques codigos realizados, no tiene ningun sentido estar haciendolo, lo que si vas a encontrar muchos son bootloader por UART, el cual te serviria si tenes un integrado USB/Serial
« Última modificación: 12 de Enero de 2021, 09:46:11 por KILLERJC »

Desconectado Icat

  • PIC10
  • *
  • Mensajes: 38
Re:Posibilidad de mandar actualizaciones a un pic18f4550
« Respuesta #2 en: 12 de Enero de 2021, 10:39:48 »
Así es uso el Pic18f4550 el cual tiene la capacidad de comunicarse vía Usb

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8005
Re:Posibilidad de mandar actualizaciones a un pic18f4550
« Respuesta #3 en: 12 de Enero de 2021, 12:48:14 »
Si yo considero que te vas a enfrentar a 2 problemas.

El primero es memoria.
Tu Bootloader debería poder transmitir en cantidad, por lo tanto no va a ser un HID, sino un CDC seguramente.

Lo cual para facilitar las cosas tengas un stack USB en el bootloader, y tengas un stack USB en el programa. Ocupando el doble.

El segundo es encriptación.
Como tu programa va a estar en manos de otros, necesitas encriptarlo, y solo el micro es quien debería desencriptarlo. Por lo tanto implementar algún algoritmo de desencriptado, por acá muchos han usado XTEA

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1217
Re:Posibilidad de mandar actualizaciones a un pic18f4550
« Respuesta #4 en: 12 de Enero de 2021, 15:18:56 »
Que tal Icat:

He encontrado uno precisamente que cumple con dichas características.
El microcontrolador será reconocido como un HID, usa un algoritmo de encriptado XTEA y lo mejor es que es gratuito.

Este es el link:

https://diolan.com/pic-bootloader

Microchip tambié desarrolló un USB bootloader para el PIC18F4550, he encontrado este link en donde se explica paso a paso cómo implementarlo:

https://openlabpro.com/guide/bootloader-for-pic18f4550/

Si requieres más información simplemente teclea en google USB booloader for PIC, y encontrarás miles de resultados.

elreypic.

Desconectado Icat

  • PIC10
  • *
  • Mensajes: 38
Re:Posibilidad de mandar actualizaciones a un pic18f4550
« Respuesta #5 en: 13 de Enero de 2021, 11:37:55 »
Muchisimas gracias a ambos no sabía lo del tema del bootloader me pondré a estudiarlo a fondo después de que solucione un problemilla con un MUX 74HC4067 que me esta dando la lata, a ver si puedo encontrar el modo de que funcione o si no haré otro post para que si alguien tiene la misma duda aprenda de mis errores  :D


 

anything