¿Cómo identificar el tipo de microcontrolador?

0

Suponiendo que tenemos una aplicación con la que muchos dispositivos pueden conectarse e interactuar entre sí (como Internet of Things). ¿Hay alguna forma de identificar el microcontrolador que contiene cada dispositivo de conexión? Por ejemplo, para identificar si un dispositivo tiene un PIC o un Atmel o si no? Si no, ¿al menos puede identificar si el microcontrolador es de 8 bits frente a 16 bits o si no?

editar: ¿Puede el firmware devolver la versión de un microcontrolador?

    
pregunta user29966

3 respuestas

2

Esta respuesta está escrita en el supuesto básico de que el OP está eligiendo los dispositivos y escribiendo el firmware por sí mismo. El OP indica que esto es cierto en la discusión de comentarios debajo de la pregunta.

Sí, ciertamente puede incluir una funcionalidad que identifique el dispositivo en uso. La mayoría de los microcontroladores (si no todos) tendrán memoria de solo lectura que contiene un ID de dispositivo y un número de revisión de silicona. El microcontrolador probablemente tendrá la capacidad de leer su propia ubicación de memoria en el firmware para que pueda informar esos valores cuando se solicite. La forma en que implementes esa funcionalidad depende completamente de ti.

Si está intentando evitar que los ladrones transfieran su firmware a otros chips, este método no será muy efectivo. Será trivial para ellos informar los valores de identificación ficticios cuando se les solicite hacer que su chip se vea como otro.

    
respondido por el Dan Laks
4

Si solo estás viendo el tráfico de la red, entonces no, los microcontroladores diferentes no dejan "huellas digitales" diferentes de alguna manera en los flujos de bytes.

El comportamiento de un dispositivo en la red depende de su firmware, no del hardware. El hardware debe hacer lo mínimo para que el dispositivo funcione, pero la pila de red sobre la capa MAC se implementará en firmware en dispositivos pequeños y baratos.

Hay estándares para lo que se supone que deben hacer las distintas capas de la pila de protocolos, por lo que la mayoría de las implementaciones diferentes harán lo mismo. Aún así, hay cierto margen de maniobra, y las diferentes implementaciones tendrán diferentes peculiaridades al adherirse a los estándares. Es posible que pueda identificar algunas de estas peculiaridades e inferir alguna implementación dentro, pero eso no será fácil y nunca será definitivo.

    
respondido por el Olin Lathrop
2

Sus preguntas parecen ser "Tengo una aplicación (supongo que está en un servidor o ejecutándose en la web) ¿cómo identifico lo que está hablando de mi aplicación?"

Si desea que un microcontrolador notifique una ID o una versión de firmware, debe codificarlo para hacerlo.

Si está pensando que otros tomarán su código, puerto y se ejecutarán en otro micro, entonces tal vez lo hagan. Pero solo si su aplicación es lo suficientemente exitosa, la gente querrá hacer esto. Entonces no puede imponer ningún cambio en los informes de la versión de firmware o cualquier otra cosa.

Una alternativa es escribir para todas las versiones de micro para que nadie más tenga que hacerlo. En mi opinión, no es práctico, ya que es mucho trabajo.

Otra es usar un número de serie, cifrado y código de acceso individual que solo le da a los usuarios legítimos. No recomendado ya que es un dolor en el culo. He tenido esto con licencias de software.

Otra forma sería liberar el código fuente y contiene comentarios al codificador para incluir el tipo de microcontrolador. Aquí insertaría una tabla de códigos que les indicaba los códigos a utilizar. O simplemente podría decirles que completen una descripción de cadena y acepten lo que quieran. Limítelo a 16 caracteres tal vez.

    
respondido por el Spoon

Lea otras preguntas en las etiquetas