¿Qué hace un ingeniero de sistemas integrados?

Al igual que los ingenieros de software de escritorio, escriben código para resolver problemas e implementar sistemas.

A diferencia de los ingenieros de software de escritorio, a menudo necesitan:

– Trate con nuevo hardware / silicio, que puede tener errores. He trabajado en sistemas donde, debido a fallas de hardware, escribir un byte en la memoria y luego leerlo nuevamente me dio un valor diferente. Encuentra el problema, envíalo a los ingenieros de hardware y espera a que solucionen el problema.

– Haga rodar su propio sistema operativo, o al menos configure un sistema operativo para que se ajuste al diseño de hardware y al mapa de memoria de su sistema. Los ingenieros de software de escritorio esperan que se les proporcione un sistema operativo y no les preocupa cómo cobra vida ese sistema operativo o el mapa de memoria del hardware en el que se ejecuta. A menudo, estas son cosas que un ingeniero integrado debe atender, en algún nivel u otro. He tratado esto en diferentes niveles; una vez tuve la gran alegría de diseñar e implementar mi propio sistema operativo multitarea cooperativo para una placa personalizada para la que no existía ningún sistema operativo. Otras veces, solo se trata de configurar Linux embebido. En cualquier caso, necesitará conocer su hardware para hacer el trabajo correctamente.

– Preocuparse por los dispositivos. A veces, el hardware es nuevo o personalizado para el diseño. Otras veces, está listo para usar, pero no existe un controlador para su sistema operativo. En los sistemas de escritorio, el sistema operativo en sí proporciona el soporte necesario, pero es mucho más probable que necesite instalar el suyo en un sistema integrado, especialmente si el hardware es nuevo.

– Tratar con las limitaciones de memoria / recursos. Los sistemas integrados pueden, y a menudo lo hacen, tener recursos limitados de memoria y CPU, debido a restricciones comerciales, o el entorno / empaque en el que deben implementarse. La fragmentación de la memoria puede ser un problema grave. Dependiendo del diseño / dispositivo, a veces se deben utilizar esquemas de asignación de memoria personalizados para reemplazar los proporcionados por el proveedor del compilador para hacer frente a estas restricciones.

– Preste mucha atención a los problemas de fiabilidad, seguridad y corrección. Los sistemas integrados utilizados en el sistema de frenos de su automóvil, o en los sistemas de aviónica Boeing 777, no pueden fallar, porque las vidas dependen de ello. Esto a menudo significa que los ingenieros integrados pasan por niveles de especificación, prueba / control de calidad, revisiones de código, etc., a los que normalmente no somete a los desarrolladores de aplicaciones de escritorio. Los sistemas pueden tener componentes redundantes que computan u obtienen resultados de forma independiente o leen sensores, y usan algunas heurísticas como votar para obtener un resultado final que se informa al resto del sistema.

– Observar las limitaciones en tiempo real. Los desarrolladores de sistemas integrados a menudo tienen restricciones más estrictas con respecto a la rapidez con que los sistemas que implementan responden a los eventos, o emiten comandos para activar los controles. A menudo, el comportamiento correcto y las vidas pueden depender de cumplir con estas limitaciones de tiempo. Mientras que la comunicación entre un cliente / servidor a través de TCP / IP se puede volver a intentar hasta que se complete con éxito con una latencia observada por parte del usuario, las aplicaciones integradas en tiempo real fallarían en circunstancias similares. Las comunicaciones no deben perderse y las latencias deben ser mínimas. Los comandos para hacer que los alerones de un Boeing 777 se muevan en respuesta al comando del piloto deben ser altamente sensibles a la entrada de los pilotos.

– Desarrollar una estrategia de depuración. En mi experiencia, el desarrollo y la depuración de sistemas embebidos pueden ser un desafío. En algunos casos, para mí, ha significado encender LED o voltear bits en la RAM de video para detectar que mi código ha alcanzado un cierto punto de ejecución. Muchas veces, lo primero que hará un desarrollador es hacer que funcione un controlador de puerto serie e implementar printf para que las declaraciones de registro / rastreo puedan emitirse a través del puerto serie. Más idealmente (y probablemente) un desarrollador integrado con uso de JTAG, emulación en circuito, Nexus u otro mecanismo proporcionado por el diseño de hardware / cadena de herramientas para depurar sistemas integrados.

Además del tradicional google y wikipedia, aquí está mi lista de los 10 mejores sitios web que debe visitar.

1) Intenta obtener acceso a la revista IEEE- Spectrum. Hazte miembro de IEEE.
http://spectrum.ieee.org/
2) Si quieres construir algo genial
http://www.instructables.com/ es uno de los mejores sitios web.
3) Una vez que empiezas a hacer algo,
http://stackoverflow.com/ se convertirá en tu mejor amigo.
4) Puedes encontrar algunas cosas interesantes aquí también
http://makezine.com/
5) https://hackaday.io/ Nuevamente para algunos proyectos geniales
6) https://www.edx.org/
https://www.coursera.org/
http://www.tutorialspoint.com/ Puede aprender algo nuevo dependiendo de su interés y obtener un certificado en caso de un curso universitario.
7) http://www.engineersgarage.com/ tiene muchos proyectos integrados de electrónica
8) https://www.sparkfun.com/ y http://www.arduino.cc/ Esto le ayuda con proyectos, componentes y un foro de ayuda.
9) http://www.circuitstoday.com/
10) http://www.mathworks.in Esto será de gran ayuda una vez que comience a trabajar en MATLAB. El foro de ayuda también es bastante bueno. También tiene muchas bibliotecas y ejemplos de código.

Los ingenieros de sistemas tienden a ser un especialista normal (eléctrico / mecánico, aeronáutico, etc.) con capacitación adicional.

Con los sistemas integrados, el rol es el mismo que el de la mayoría de los ingenieros de sistemas, usted es 20% arquitecto, 60% solucionador de problemas y 20% experto en la materia. En las cosas integradas, esto tiende a ser más acerca de alinear la visión de todos del sistema y determinar cuándo tiene que ocurrir un cambio.

Ejemplos serían el presupuesto de poder. Su sistema está por encima de su presupuesto de energía debido a que un chip ya no está disponible al costo correcto. Debe determinar si A) reduce un poco la energía en todas partes y se acerca a la tolerancia de algunos componentes. B) elimine una función para liberar parte de la asignación. C) Vuelva a trabajar todo el sistema alrededor de un chip diferente, D) cambie el presupuesto de energía o E) cambie el costo de la Lista de materiales.

Ninguna de estas son respuestas correctas o incorrectas, pero habrá una que sea más adecuada para la situación en cuestión. Los ingenieros de sistemas a menudo estarán involucrados ya que tienen una visión general

More Interesting

Estoy en b. 2do año de tecnología con ece stream y quiero capacitarme en un sistema integrado, pero ¿qué debo hacer en el sistema integrado?

¿Cuál es el mejor microcontrolador para trabajar hoy en día, ARM Cortex-M4 o AVR?

¿Es necesario aprender sobre la arquitectura del kernel y la programación del controlador del dispositivo para convertirse en un desarrollador integrado? ¿Cuál es la importancia de eso?

¿Cómo funciona un localizador en un sistema integrado?

¿Por qué es tan difícil diseñar sistemas embebidos en tiempo real en multiprocesadores? ¿Cuáles son los principales desafíos y cómo se puede mejorar?

¿Cuáles son los lenguajes de programación esenciales, además de C incrustado, para aprender para una buena carrera en un dominio de sistema embebido?

¿Alguien puede ayudarme a encontrar el mejor instituto de capacitación integrado en Hyderabad?

Cómo conectar Raspberry Pi 2 a internet

¿Cuáles son las preguntas en tiempo real de un microcontrolador 8051 para la práctica de laboratorio?

Como novedad, ¿cómo y dónde puedo encontrar un trabajo decente (posiblemente una buena MNC) como ingeniero de software integrado en la India?

¿Cuál es la mezcla de C y lenguaje ensamblador en un sistema embebido? ¿Cómo es útil?

Cómo hacer procesamiento de datos de imagen con módulo de cámara incorporado

¿Cuál es el mejor instituto de capacitación para sistemas integrados en kolkata?

¿Por qué necesitamos precargar un temporizador en un microcontrolador?

Cómo desarrollar un conocimiento sólido del diseño de circuitos para sistemas embebidos