¿Cuáles son las habilidades imprescindibles para un desarrollador de software integrado junior?

En base a mis casi 40 años de trabajo en el campo de los sistemas integrados:

  • Una buena comprensión de la electrónica analógica digital y de pequeña señal.
  • Capacidad para leer y comprender esquemas.
  • Posibilidad de utilizar eficazmente un medidor de voltios / ohmios y un osciloscopio.
  • Competencia en al menos un lenguaje ensamblador.
  • Competencia en el lenguaje de programación ‘C’.
  • Una buena comprensión de los componentes internos del microprocesador (principalmente los registros).
  • Una comprensión de las regiones de memoria y sus usos (montón, pila, IVT, código).
  • Un alto nivel de confort con números hexadecimales y matemática hexadecimal.
  • Una muy buena comprensión de las matemáticas booleanas (lógica).
  • Un buen conocimiento de qué son las interrupciones y cómo funcionan en código.
  • Una comprensión de los diferentes tipos de memoria (RAM, ROM, Flash), las diferencias entre ellos y cómo se leen, escriben y acceden.
  • Posibilidad de utilizar un depurador para realizar al menos operaciones simples, como establecer puntos de interrupción, pasos individuales, examinar valores variables, examinar memoria, examinar registros.
  • La capacidad de leer y comprender hojas de datos y producir código de controlador para un dispositivo determinado en función de la información contenida en su hoja de datos.

En mi opinión, estas son las principales habilidades “imprescindibles” para un desarrollador incrustado junior. Tenga en cuenta que no digo “desarrollador de software embebido”, ya que ningún desarrollador embebido tendrá éxito solo sabiendo codificar para sistemas embebidos; también deben tener una muy buena comprensión y capacidad para trabajar con la electrónica; Este no es un campo para las personas que solo desean desarrollar código y no desean comprender el hardware subyacente: como desarrollador integrado, usted será responsable de comprender y solucionar problemas tanto del firmware como del hardware como un único sistema unificado.

1. Conocimiento de los protocolos de comunicación.
2. Fundamentos de sonido o microcontrolador.
3. Sepa cómo funcionan las cosas por dentro. Por ejemplo, cuándo el temporizador decide incrementar el valor de conteo.
4. Fundamentos de C
5. Actitud de resolución de problemas
6. Actitud positiva