Autor Tema: uTasker, un bootloader configurable y mucho más para Kinetis, STM32 y otros  (Leído 229 veces)

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

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2734
 
Andaba buscando un bootloader para mis placas con Kinetis y me topé con uTasker, un proyecto de código abierto impresionante. http://www.utasker.com

Tiene un montón de cosas, aunque a mi por ahora solo me interesa el bootloader para tarjetas SD, creo incluso que tiene un pequeño sistema operativo multitarea.

En la parte del bootloader, permite configurarlo para varios tipos de dispositivos (tarjeta SD, USB, puerto Serie, Can bus, Ethernet). Soporta prácticamente todo los micros Kinetis, STM32, etc... y es fácil de configurar desde la guia de usuario que dan y algunos videos que han colgado. Y la bomba, también soporta bootloader con ficheros encriptados para evitar que nos copien las actualizaciones que demos a los clientes.

Además, su autor atiende dudas desde el foro de NXP o por email.
https://community.nxp.com/message/930808?commentID=930808#comment-930808

Las guías de uso en PDF:
http://www.utasker.com/docs/uTasker/uTaskerSerialLoader.PDF
http://www.utasker.com/docs/uTasker/uTasker_BM_Loader.pdf

Y un par de videos que ha colgado para configurar el MK66 que a mi me interesa, en el primer video como importar el proyecto a KDS, y en el segundo video como configurarlo.



« Última modificación: 04 de Agosto de 2017, 09:03:28 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2734
Re:uTasker, un bootloader configurable y mucho más para Kinetis
« Respuesta #1 en: 04 de Agosto de 2017, 08:10:13 »
 

Ahora que lo estoy viendo mejor, no solo soporta Kinetis, también muchas otras familias de micros, STM32, LPCxxx y Atmel.

http://www.utasker.com/docs/documentation.html



Top ranking

NXPTM Kinetis K/KL/KE/KV/KM/KW - 32 bit CortexTM M4 (or M0+) with up to 256k SRAM and 1M FLASH at up to 150MHz, optional FPU, integrated 10/100M Ethernet controller (external PHY) and USB-OTG Project details here

STTM STM32 F1/F2/F4 and F7 - 32 bit Cortex TMM3/M4 with up to 192k SRAM and 1M FLASH at up to 168MHz, integrated 10/100M Ethernet controller (external PHY) and USB-OTG


Medium ranking

ATMELTM AVR32 - 32 bit AVR [UC3A, UC3B and UC3C] with up to 64k SRAM and up to 512k FLASH, integrated 10/100M Ethernet controller (external PHY) and USB host/device/OTG: 66MHz 1.3mW/MHz. Project details here

ATMELTM AT91SAM7X / ATMELTM AT91SAM7S - 32 bit ARM7 with up to 128k SRAM and up to 512k FLASH, integrated 10/100M Ethernet controller (external PHY) and USB device

FreescaleTM M5225X Kirin3 / FreescaleTM M52XXX - 32 bit ColdFire with up to 64k SRAM and up to 512k FLASH, integrated 10/100M Ethernet controller (integrated PHY) and USB-OTG Project details here

NXPTM LPC17XX - 32 bit Cortex TM M3 with up to 64k SRAM and up to 512k FLASH, integrated 10/100M Ethernet controller (external PHY) and USB-OTG

NXPTM LPC2XXX - 32 bit ARM7 with up to 58k SRAM and up to 512k FLASH, integrated 10/100M Ethernet controller (external PHY) and USB. Supports LPC24XX, LPC23XX and LPC2101..LPC2106 devices


Legacy - not recommended for new designs

Luminary MicroTM LM3SXXXX - 32 bit Cortex TM M3 with up to 64k SRAM and up to 256k FLASH, integrated 10/100M Ethernet controller and PHY with auto cross-over

FreescaleTM MC9S12NE64 - 16 bit HC12 single chip with 8k SRAM and 64k FLASH, integrated 10/100M Ethernet controller and PHY

STTM STR9 - 32 bit ARM9 with up to 96k SRAM and up to 544k FLASH, integrated 10/100M Ethernet controller (external PHY). Including STR910, STR911 and STR912 devices

« Última modificación: 04 de Agosto de 2017, 09:19:48 por planeta9999 »

Desconectado juaperser1

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2373
Re:uTasker, un bootloader configurable y mucho más para Kinetis, STM32 y otros
« Respuesta #2 en: 04 de Agosto de 2017, 09:04:41 »
No he podido verlo todavia, pero suena a que es un sistema operativo en tiempo real o por lo menos el scheduler para manejar las tareas, parece interesante.

En cuanto pueda le echare un vistazo a ver como esta progamado y lo que es capaz de hacer.

Un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2734
Re:uTasker, un bootloader configurable y mucho más para Kinetis, STM32 y otros
« Respuesta #3 en: 04 de Agosto de 2017, 09:20:44 »
 
El bootloader se puede usar de manera independiente, a mi es lo que me interesa de ese proyecto, aunque tiene muchas más cosas. Ahora mismo necesito sacar al  mercado varios productos con Kinetis y necesitaba con urgencia un bootloader encriptado para poder dar actualizaciones de firmware a los clientes.

He configurado y compilado el Bootloader para Kinetis MK66, y el ejecutable tan solo ocupa 18K.

Ya he visto como funciona la encriptación. Dan un pequeño aplicativo para linea de comandos DOS (uTaskerConvert), le pasas como parámetro el binario a encriptar,  un código de producto configurable para evitar que se carguen actualizaciones que no son para esa placa y una clave de encriptación, con todo eso te crea un nuevo fichero al que le añade una cabecera con un checksum, código de producto y el binario encriptado.

Una maravilla, justo lo que andaba buscando, de código abierto, gratuito y totalmente compatible con Kinetis y STM32. El resto de útiles de uTasker no lo he mirado, creo que tiene funciones de sistema operativo y algunas cosas más.


Encryption option
http://www.utasker.com/docs/uTasker/uTaskerBoot_003.PDF

Often it is undesirable that the software which is up be updated to the remote device is available in a readable form. In order to make it difficult for the program content to be interpreted, the Boot Loader supports also an optional encryption/decryption function. Whether encryption is used or not is defined in the project setup and also in the use of the conversion utility.

When the conversion utility performs encryption it has the following use:
uTaskerConvert uTasker_demo uTasker_update.bin -0x1234 –a748b6531124 –ab627735ad192b3561524512 -17cc – f109

The additional parameters cause the encryption step to be performed.

ab627735ad192b3561524512 is an encryption key which is used to transform the data content. It must have a length dividable by 4) and its length determines the strength of the coding.

17cc is used to prime a pseudo-random number generator used during the process (should not be zero) which must also match.

F109 is a shift value in the code which makes it much more difficult to break using bruteforce techniques. Without this shift it would be much easier to match known code patterns at the start of the file. Since the start code can be anywhere in the data this avoids this possible weakness.

The header added to the upload file is increased slightly in length due to the need for a second CRC.

unsigned long ulCodeLength;
unsigned short usMagicNumber;
unsigned short usCRC16;
unsigned short usRAWCRC;


In this case usCRC16 is the check sum of the encrypted file (as it is stored during the upload) and usRAWCRC is the check sum of the real code (before encryption) so that successful decryption can also be verified.

The decryption process is an additional step in the Boot Loader which is performed when the code is copied to its executable position in FLASH.

It is advisable to always use a different magic numbers for projects with and without encryption. This ensures that encrypted data will never be copied to its executable location by a project without decryption support.

The encryption method can be used with both internal FLASH and also external SPI FLASH

« Última modificación: 04 de Agosto de 2017, 09:37:03 por planeta9999 »

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 543
    • ElektroQuark
Re:uTasker, un bootloader configurable y mucho más para Kinetis, STM32 y otros
« Respuesta #4 en: 10 de Agosto de 2017, 15:46:09 »
No es código abierto ni libre. Pero la licencia es MUY permisiva y hay muchas opciones para utilizarlo gratuitamente.
Mi blog sobre electrónica y cosillas afines: www.elektroquark.com
EQVideo en Youtube
El foro de KiCad en castellano.
Mi librería para KiCAD ¡AQUÍ!

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2734
Re:uTasker, un bootloader configurable y mucho más para Kinetis, STM32 y otros
« Respuesta #5 en: 25 de Agosto de 2017, 10:52:12 »
 

Ya tengo el bootloader de uTasker funcionando sobre Kinetis, y va de fábula. El sistema de encriptación y control de producto, es genial.

Tuve algunos problemas al principio, no me funcionaba bien. Si forzaba el modo boot, ya que mis tarjeteros SD no tienen switch de detección de tarjeta, me grababa el firmware pero no saltaba a la aplicación de usuario y si lo ponía en modo normal, solo cargaba firmware la primera vez.

Tras intercambiar unos cuantos (bastantes) mensajes con el autor en los foros de NXP, descubrí que si configuro el producto para Teensy 3.6 es cuando falla, mientras que va perfecto configurado para la FRDM K66 de NXP. Al final el autor no ha sabido dar una explicación al fallo, según él, la única diferencia es la frecuencia del cuarzo y el USB FS o HS, pero tiene que haber algo más que impide que vaya bien con la configuración de Teensy.

Resumiendo, ya lo tengo en funcionamiento y muy contento, me ha ahorrado un montón de faena, y el hecho de que sea un bootloader encriptado y además con control de código de producto (para evitar cargar las actualizaciones de un producto en otro distinto) es perfecto para aplicaciones profesionales.

Este fin de semana, me tengo que currar el acceso a tarjeteros SD por SDIO con Kinetis en mis programas, y ya puedo empezar a liberar unos cuantos productos míos, que los clientes ya me pisan los talones con los pedidos.

En teoría este mismo bootloader se puede usar también con los STM32, aunque por ahora me he centrado más en los Kinetis. Le pregunté al autor si tenía pensado incluir los Atmel SAM S70, pero no, una pena.
« Última modificación: 25 de Agosto de 2017, 13:37:11 por planeta9999 »


 

anything