¿Es práctico que el firmware se identifique de forma única en la producción?

12

¿Hay sistemas disponibles en la fabricación a gran escala que permitan programar un número de serie único en el firmware o algún espacio de memoria libre para cada PCB que ingrese?

He descubierto que la FDA ha decidido comenzar a aplicarlo para dispositivos de grado médico, pero ¿es esto algo fácil de lograr o requeriría desarrollar su propio proceso de fabricación?

Lukeyb
fuente
77
¿Qué tipo de sistema tienes? Muchas CPU (y MCU de gama alta) ya tienen algún tipo de registro de ID preprogramado con un valor único.
Dmitry Grigoryev
44
Primero verifique que su MCU no tenga un identificador único
Jeroen3

Respuestas:

14

La mayoría de los programadores de producción son capaces de insertar un número de serie único en la memoria programada, es un proceso que normalmente se llama serialización . Esta es una captura de la pantalla de serialización de un antiguo programador de Dataman.

pantalla de serialización del programador Dataman

Steve G
fuente
serializationes una posibilidad pero requiere un cuidado extremo, especialmente si el rango de valores cruza el límite de una palabra. Si subcontratas la programación, se vuelve aún más complicado: si un proveedor bien conocido se equivoca no una, sino dos veces seguidas, antes de admitir finalmente que su programador para la parte en cuestión no pudo serializar en varios bytes. Terminé enviándoles un archivo único para cada valor del byte más significativo, para cada uno de los cuales ejecutaron un trabajo de programación único de 256 piezas que serializa el inferior. Para el próximo diseño, creamos un programador personalizado.
Chris Stratton
14

Es posible que esté preguntando por una solución solo de software, pero si puede agregar un IC barato a su placa, puede usar un chip 'Número de serie de silicio'.

Estos son pequeños chips ROM que cada dispositivo contiene un número binario único. Los ejemplos son DS2401 de Maxim (bus de 1 cable) y DS28CM00 (I2C) que tienen un número único de 48 bits.

El número es único entre todos los circuitos integrados hechos de ese número de parte por ese fabricante. Obviamente, no es único entre todos los chips SSN hechos por todos en el mundo. Pero hacen que sea muy fácil elegir un dispositivo para su placa y saben que cada placa que se haya leído leerá un número diferente y único.

TonyM
fuente
1
Ese es posiblemente el mejor enfoque de bloqueo de proveedores que he visto.
Básico
"no es único entre todos los chips SSN hechos por todos en el mundo, obviamente" ¿Por qué debería ser "obvio"? Otros identificadores destinados a ser globalmente únicos, por ejemplo, las direcciones MAC de Ethernet, lo logran mediante la asignación de prefijos: el proveedor usa su prefijo y luego elige los bits / dígitos restantes.
Ben Voigt
1
Las direcciones MAC de @BenVoigt no son globalmente únicas. Solo regionalmente único. Es posible venir a Asia y comprar un dispositivo con una dirección MAC que choque con un dispositivo en Europa. Diablos, en muchos dispositivos incluso puedes cambiar tu dirección MAC para chocar deliberadamente con un dispositivo que tienes.
slebetman
Hola @BenVoigt, existen muchas familias de SSN IC, muchos procesadores / MCU tienen ID únicos, solo son exclusivos de la familia IC. ¿Cuántos esquemas de numeración de IC globalmente únicos puede enumerar? (no numeración de productos como IMEI)
TonyM
5

sí, ciertamente, como las direcciones mac mencionadas son obvias, generalmente en un flash / eeprom al lado del mac si es una parte separada, o en un flash / eeprom en otro lugar. Los datos vitales del producto (número de serie de la placa, etc.) se pueden colocar en un eeprom o flash separado o en el mismo dispositivo utilizado para almacenar otro firmware.

Cuando tiene una situación, por ejemplo, donde es posible realizar actualizaciones de campo del firmware, parte del diseño del sistema, no desea que se borren los datos VPD cuando se borra y reprograma el flash del firmware, por lo que debe resolverlo utilizando las funciones de protección contra escritura. del dispositivo flash (colocando el VPD en su banco / área y bloqueando esa área), y no necesariamente publicando / documentando públicamente cómo liberar el pin de protección contra escritura y / o alguna otra solución para que pueda programar el VPD en mfg y luego manténgalo bloqueado de lo contrario (un despliegue hacia abajo / hacia arriba según sea necesario y luego, cuando se programe durante / alrededor de las TIC, ese dispositivo puede tirar hacia el otro lado).

Probablemente sea más común de lo que piensas, la medicina no es más que un subconjunto muy pequeño de personas que harían esto. Tal vez no sea un control remoto de televisión, sino probablemente un mouse o teclado y ciertamente un teléfono celular, etc.

Si / cuando también se usa una etiqueta adhesiva en el tablero, es posible que tenga un código de barras, de modo que durante la fabricación del dispositivo o el operador pueda escanear el código de barras, revoluciones de ensamblaje, etc. y agregarlo al VPD para ese tablero.

viejo contador de tiempo
fuente
si ha diseñado para actualizaciones de campo, entonces al menos desea saber qué versión de firmware tiene, que simplemente se compila en el firmware, pero antes de realizar la actualización en el campo, es posible que necesite saber qué plataforma / placa específica es (para verificar / use el firmware correcto y / o los matices de la programación de campo, etc.) por lo que no solo desea proteger el VPD, sino que NECESITA la información VPD como parte del diseño para permitir la actualización del firmware.
old_timer
3

Tener códigos únicos para cada producto es posible y factible. Una forma de hacerlo sería tener un sistema de programación de software que cambie secuencialmente el número de identificación del firmware para cada dispositivo programado. Con algunos sistemas esto es fácil de hacer; algunos microcontroladores, por ejemplo, tienen una ubicación reservada de eeprom específicamente para almacenar una identificación.

Otra alternativa sería agregar una identificación de hardware única. Un ejemplo de esto es un circuito integrado de número de serie de silicio Dallas Semi (ahora Maxim Integrated) ( DS2401 ). Este dispositivo le proporciona un número de serie y tiene la garantía de que será único. Este número de serie se puede usar para inferir una dirección única para un producto específico.

Adam Z
fuente
2

Las tarjetas de red producidas en masa tienen sus números de serie en forma de dirección de hardware (MAC) programados en su flash / EEPROM durante la fabricación.

Si bien los números de serie aplicados a la carcasa del producto como adhesivo se pueden quitar o volver a aplicar, quemar el número de serie en la placa específica plantea otra forma de rastrear el uso de la placa; lo más probable es que este número de serie también se imprima en la documentación médica para rastrear qué dispositivo se utilizó exactamente para el diagnóstico o la operación médica.

Anónimo
fuente
2

... ¿es algo fácil de lograr o requeriría desarrollar su propio proceso de fabricación?

Hace unos 10 años, estaba en una situación similar con el firmware de un dispositivo médico que he desarrollado para uno de mis clientes. Este era un dispositivo de Clase 2, que elevó el listón. Las cantidades de producción fueron en cientos.

No pudimos encontrar un programador listo para usar que pudiera escribir números de serie de forma automática o semiautomática. Hicimos una solución alternativa. Teníamos un firmware de fábrica que se usaba para la calibración y las pruebas. Este firmware de fábrica se comunicó con el resto del equipo de prueba a través de un puerto serie. Como parte de esta prueba, descargaríamos el número de serie, que estaba almacenado en la EEPROM del microcontrolador. (El firmware de fábrica sobrescribió el firmware de fábrica).

Nick Alexeev
fuente
0

Los programadores de producción de SEGGER admiten el flasheo de números de serie únicos en MCU.

filo
fuente
0

Si tiene muchas opciones para esto (algunas se tomaron de esta respuesta ):

  1. Use la identificación única de su microcontrolador si está disponible.
  2. Seleccione una dirección única configurando algunos puentes externos en E / S dedicadas.
  3. Programe un UID para flashear o EEPROM durante la producción. El archivo de firmware en sí se puede cambiar a través de la serialización. Si su línea de ensamblaje no tiene esta característica, pero puede personalizarla, es fácil de hacer ubicando el desplazamiento del archivo de firmware con un editor hexadecimal y utilizando su script / idioma favorito para modificar el archivo. A veces puedes "arreglar" esta dirección con el script del enlazador.
  4. Inferface un chip externo que proporciona un UID.
  5. Configure el flash interno / eeprom (si está disponible) con su interfaz de servicio o gestor de arranque. Esto puede hacerse incluso durante las pruebas (no exactamente en la "línea de producción" en algunos casos). Algunos dispositivos tienen esta interfaz de servicio donde solo el fabricante de técnicos autorizados puede cambiar algunos valores. Dado que este valor no debe ser modificable, asegúrese de que el código marque los valores modificados y prohíba modificaciones adicionales. Si tiene un gestor de arranque, asegúrese de que esta sección no se sobrescriba en las actualizaciones de campo.
Ronan Paixão
fuente
0

Si tiene acceso a un buen RNG de hardware y 16 bytes de almacenamiento persistente adicional, una forma que no implica cambiar demasiado su proceso de producción es generar un GUID v4 en el primer inicio y almacenarlo. Puede hacer que el firmware lo descargue en serie durante cualquier prueba posterior a la programación que ejecute. No es secuencial, pero eso no importa para la mayoría de las aplicaciones.

Reid Rankin
fuente
0

Si el uso de una RFID o etiqueta inteligente en cada PCB cumple con los requisitos, será el método de implementación más fácil, bajo su control.

Guill
fuente