Inyectar UUIDs en la ROM durante la producción

4

Soy nuevo en electrónica y me preguntaba si alguien podría explicarme cómo se puede asignar una identidad única a las unidades de electrónica con MCU / MPU en la línea de fábrica.

Por ejemplo, digamos que se está construyendo un dispositivo en particular. Este dispositivo tiene una MCU / MPU (aún no entiendo completamente su diferencia) que tiene una CPU, ROM para contener un binario / RTOS y RAM para ejecutar ese binario en tiempo de ejecución. Un programa de control se transfiere a la ROM en algún momento durante la producción.

Digamos que este dispositivo tiene la necesidad de recibir un UUID que se puede leer de la memoria cuando el programa de control pone en marcha. Obviamente, cada dispositivo necesita una identificación diferente (única). Entonces, me gustaría imaginar que el MCU pasaría por dos fases diferentes durante su construcción de producción: un parpadeo inicial del programa de control a la ROM, seguido de un segundo parpadeo que "anexa" (sin sobrescribir, es decir, ) un UUID específico del dispositivo a una dirección específica en la ROM. El programa de control se codificará para buscar el valor (UUID) almacenado en esta dirección al inicio.

¿Estoy en el buen camino aquí, o hay una manera más eficiente / diferente / estándar de realizar tal tarea? Y creo que lo generalizaría más allá de un UUID y haría la misma pregunta a cualquier situación en la que todas las unidades comparten un binario (el programa de control) pero también tienen su propia información única que debe estar presente en la ROM en el inicio.

    
pregunta smeeb

5 respuestas

6

La forma en que lo describe es válida, al menos es una que usamos en nuestros proyectos. Primero mostramos todo el programa que contiene un conjunto inicial de valores, por lo que el programa funcionará bien. Durante la calibración, se establecerá el número de serie (UUID) del dispositivo, junto con los otros factores de calibración. Para ello, reservamos una página flash al final del flash, por lo que es posible actualizar el programa sin borrar las constantes de calibración.

Para que esto funcione, por supuesto, necesita alguna forma de comunicarse con el controlador y una parte del programa que haga la escritura en el flash. Si su producto no está diseñado para tener eso, debe inyectar esos datos durante el parpadeo inicial. Para eso, puede cambiar el archivo hexadecimal sobre la marcha para cada uno (el formato es bastante fácil) o usar las capacidades del intermitente para incluir un número de serie incrementado automáticamente o algo así. Las capacidades de los intermitentes también son bastante diferentes, por ejemplo, Segger produce algunas con capacidades de programación de producción bastante buenas.

Si solo necesita una forma de identificar un dispositivo sin el requisito de qué aspecto tiene el UUID, los microcontroladores suelen tener información sobre el dispositivo, entre otros, una ID. El hecho de que sea utilizable debe determinarse para cada tipo de microcontrolador que utilice, ya que no hay ningún estándar que conozca.

Por ejemplo, el STM32F401 (un dispositivo con el que estoy trabajando actualmente) tiene un ID de dispositivo único de 96 bits que puede leer la CPU y con JTAG. (más detalles en el manual de referencia )

    
respondido por el Arsenal
6

Los programadores de producción generalmente tienen una opción para serializar la imagen escrita en la memoria: cada producto individual se muestra con datos que son diferentes, por ejemplo, incrementando una palabra de datos específica, pero también son posibles operaciones más complejas.

Otra opción es comprar un chip que a su vez tenga un número único. Esto se hace, por ejemplo, para las direcciones Ethernet, que están asignadas por alguna autoridad. Verifique, por ejemplo, los "Productos de chip de identificación únicos" de Microchip.

Los productos Dallas / Maxim de 1 cable pueden usar un bus compartido (1 cable) para (virtualmente) cualquier número de chips. Para hacer que esto funcione, cada chip tiene un número de serie único. La forma más simple de estos chips no tiene nada más que esta identificación.

    
respondido por el Wouter van Ooijen
2

Hay dispositivos para tal fin, por ejemplo, esta es la página de Maxim integrada para su ID DE PCB Y AUTENTICACIÓN , que proporcionan una ID de ROM única de 64 bits programada de fábrica y estoy seguro de que hay otros fabricantes que ofrecen productos similares

    
respondido por el Kvegaoro
1

Otra solución ideal para este problema es utilizar una de las partes de EEPROM serie de Microchip que vienen con un identificador único programado en ellas. Estos dispositivos son dispositivos I2C de tamaño reducido que usted compra listos para llenar en su tablero como cualquier otra parte. No se requieren pasos especiales en el tiempo de fabricación. Puede usar el acceso I2C simple desde su microcontrolador y no puede consumir ningún recurso adicional en su tarjeta o en los pines MCU si ya tiene uno o más dispositivos I2C en la tarjeta.

Las partes de Microchip están dirigidas principalmente al mercado de Ethernet para suministrar la dirección MAC para su dispositivo. Sin embargo, nada le impide utilizar el identificador único de otras maneras para serializar su producto o para sintetizar UUID a partir del código en la EEPROM serial.

Microchip confirma una parte del dispositivo EEPROM para mantener el identificador y bloquea el borrado y la programación de esa parte de la parte. El resto de las células EEPROM se pueden utilizar libremente de otros datos de configuración o constantes de calibración.

La parte que estoy usando en mi diseño actual es el 24AA025E48.

    
respondido por el Michael Karas
0

Además de todas las respuestas publicadas, algunos dispositivos contienen dos memorias separadas: una flash / EEPROM grande para el programa y otra memoria más pequeña (por lo general, alrededor de 100 bytes aproximadamente) para datos. Para tales dispositivos, almacenaría el UUID en la EEPROM de datos.

Se pueden programar por separado (he visto dispositivos donde se muestran los números de serie y los datos de calibración justo antes de enviarlos a los clientes) o durante la ejecución de producción (necesitaría un programa, normalmente solo un script de Perl, para generar el UUID luego se lo pasa al programador).

    
respondido por el slebetman

Lea otras preguntas en las etiquetas