Asumiré que no tiene documentación, y que la placa no es una placa “lista para usar” de la que podría buscar fácilmente en Google.
Esta es una situación en la que he estado profesionalmente. Me han pagado para hacer este tipo de ingeniería inversa antes, y no es fácil pero es posible.
Primero haga una lista de todos los circuitos integrados en el tablero. Usando Google encuentre las hojas de datos para cada uno de los circuitos integrados en el tablero. Ahora debería poder identificar el procesador y tener una idea aproximada de sus capacidades (es de 8 bits, 16 bits, 32 bits, cuánta memoria interna tiene, qué conjunto de periféricos contiene). Si hay dispositivos únicos en la placa, como un códec o un controlador de motor, esto le dará una indicación aproximada de qué tipo de trabajo está destinado a hacer, pero no los detalles. Para eso, necesitas ver el código.
- ¿Cuál es la diferencia entre IoT y sistemas integrados?
- ¿Cuál es el futuro de los sistemas embebidos?
- ¿Cuál es el mejor instituto en Pune para Linux incrustado?
- ¿Todos los sistemas integrados tienen un sistema operativo?
- ¿Cuáles son algunos lenguajes c-to-gates de última generación?
Tuve suerte en mi proyecto de ingeniería inversa, utilizaba PROM externas para guardar el código. En este caso, pude eliminar las PROM de la placa y la placa de pruebas de un dispositivo que leería los contenidos y los almacenaría en un archivo. Luego se trataba de traducir el código de la máquina en mnemónicos de ensamblaje y buscar todos los lugares donde se producen ramas condicionales e incondicionales, comenzando en el “punto de entrada” del código, que es la dirección a la que los vectores de procesador en particular se encienden o reinician (Esto se puede encontrar en la hoja de datos del procesador). Si son instrucciones de ramificación a subrutina, sé que el código en el salto a la dirección es el comienzo de una subrutina (o función, si estaba codificada en C). Miro para ver si hay un código de entrada y salida de función común que use la pila, y si es así, el código probablemente se escribió en C o C ++, y si no, el código probablemente se escribió en ensamblador.
En cualquier aspecto, identifico los puntos de entrada y salida para las subrutinas y les doy “etiquetas” para que sea más fácil trabajar con ellas. Busco lecturas y escrituras de E / S y determino a qué dispositivos internos y externos se accede en estas lecturas y escrituras. En este momento, la imagen, aunque lejos de estar completa, comienza a revelarse lo suficiente como para determinar cuál es la función principal del tablero. Para obtener más información, solo sigue profundizando en el código.
Estos son solo algunos “consejos” sobre cómo realizar ingeniería inversa en una placa, pero de ninguna manera es todo lo que necesita saber; tomaría más tiempo explicarlo que yo.
¡Espero que esto ayude! 🙂