¿Cuáles son algunos libros de sistemas integrados que pueden llevarlo de cero a un alto nivel?

Dudo que tal libro exista o incluso se escriba. En mi humilde opinión, la clave para aprender sistemas embebidos es comprender cómo los sistemas embebidos son diferentes de simplemente producir C en una estación de trabajo. Cuando se incorporaron nuevos ingenieros, no me sorprendió que no supieran nada sobre la naturaleza del mundo incrustado. Por lo general, eran bastante buenos programadores de C. Los nuevos graduados de CS generalmente no sabían nada sobre hardware en un sentido práctico. En el mundo de los sistemas integrados, nos esforzamos por la previsibilidad y la estabilidad de la ejecución dentro de un conjunto de recursos informáticos limitados (CPU, memoria, etc.). Así es como me esforzaría por capacitar a mis nuevos ingenieros en el transcurso de un proyecto:

  1. Comprenda por qué ciertas características de lenguaje de programación de alto nivel generalmente no se usan en sistemas integrados. Lo que hice para avanzar en la curva de aprendizaje es hacer que miren los esfuerzos del lenguaje C incrustado y entiendan por qué ciertos aspectos de C generalmente no se usan en el mundo incrustado. Principalmente aborda la falta de recursos informáticos en el marco incrustado y algunos aspectos del tiempo (el tiempo real es un animal diferente). Por lo general, no hacemos asignaciones dinámicas de memoria (minimizamos pérdidas de memoria, agotamiento del montón), no recolectamos basura automáticamente (no es determinista), básicamente nos deshacemos de cualquier cosa en la que los métodos de asignación de tiempo y recursos sean sospechosos de cómo funcionan o impactan la sincronización y el procesamiento. Básicamente, mantenga el software simple, eficiente. Es el viejo principio KISS.
  2. Comprenda que los sistemas “en tiempo real” no son “realmente rápidos” sino programables para garantizar que se cumplan todos los plazos. Muchos sistemas integrados son rápidos pero no en tiempo real.
  3. Obtenga una comprensión del hardware subyacente. No tiene que ser un experto, pero debe tener conocimiento de cómo funciona el hardware, las diversas configuraciones posibles, cómo se manejan los datos y las señales, cómo funcionan las interrupciones. Comprenda la sobrecarga de cambio de contexto y los impactos en el tiempo, como la inversión de prioridad. Los sistemas integrados no son solo software o hardware, sino que están diseñados para complementarse mejor entre sí.
  4. Aprenda a depurar un sistema integrado. Es un animal diferente del software de depuración en una estación de trabajo estable con un IDE robusto. Su depurador se bloqueará y se perderá toda la información. El sistema se bloqueará debido a punteros no válidos o algún problema y se perderá la información de depuración. El conocimiento del hardware subyacente es esencial para poder determinar dónde se pueden manifestar los problemas. Verá lenguaje ensamblador o incluso código de máquina en algunos niveles. En este punto, está bajo el sistema operativo (si tiene uno en primer lugar) y está viendo la belleza de la máquina en funcionamiento. Una vez expuesto a este entorno de bajo nivel, comenzará a comprender por qué y cómo usamos ICE, eJTAG, analizadores lógicos, O-Scopes y dicho equipo especializado.
  5. Destacar los sistemas durante la integración. Asegúrese de que se cumplan todos los requisitos y luego me esforzaría por sobrecargar el sistema para determinar el manejo de fallas. Recuerde que el sistema no puede fallar. Debe recuperarse con gracia. La vida y las extremidades pueden estar en riesgo. Recuerde que la solución establecida para sus requisitos es una cosa. El complemento de ese conjunto de soluciones son las incógnitas. Puede ser bastante vasto a menos que uno tome tiempo para recortarlo a un tamaño manejable. Me gusta recordar lo que dijo mi mentor: “Los diagnósticos a bordo solo son buenos para encontrar los problemas que ya conoce”. La forma en que se bloquea un sistema suele ser tan importante como su funcionamiento.

Para concluir, me encantaría saber acerca de una panacea para iluminar a los nuevos ingenieros en el ámbito de los mundos de ingeniería informática integrados y en tiempo real. Sin embargo, encontré los 4 pasos anteriores en el transcurso de un proyecto útiles para convertir a los novatos en fanáticos del sistema embebido.