¿Cuáles son las diferencias entre los ingenieros de sistemas integrados y los ingenieros de firmware?

Notarás en las otras respuestas, cada uno tiene su propia terminología que es una mezcla de “incrustado”, “sistema”, “ingeniero”, “software“, “firmware”, …

Confuso, lo sé, cambiar de compañía te trae de inmediato este tipo de sorpresas en terminología.

El firmware es de hecho un subconjunto de software, por lo general (lo sé, terminología) significa el software o el código que se ejecuta en un controlador incorporado. Pero hay una gran variedad de sistemas integrados, algunos son muy simples y solo tienen hardware dedicado y no hay código para ejecutar. Algunos tienen un código de ejecución de controlador incorporado, algunos tienen más controladores y varios niveles de firmware. Uno podría ser un controlador simple con código escrito a mano. Otro podría ejecutar un sistema operativo completo (sistema operativo incorporado). Hay muchas cosas que decir sobre la terminología que utilizó y existe una gran variedad de sistemas. En mi línea de trabajo, sistemas complejos en chip, hay un tipo de sistema de hardware, el arquitecto de hardware y la contraparte del software, los controladores y el código incrustado. De hecho, podría escribir un libro de texto solo para responder a su pregunta :-).

En resumen, creo que el concepto de ingeniero de FW está extinto. Los ingenieros de SW integrados conocen HW. Como en todas las tareas de software, hay programadores que codificarán pequeños módulos basados ​​en especificaciones claras, e ingenieros de software que miran una imagen más grande con más detalle. La palabra clave Sistema debería responder a su pregunta inicial.

Ahora la respuesta larga: –

Quiero responder esta pregunta en partes. ¿Qué es el firmware?

El hardware es fácil de entender. Es el sistema físico. Es difícil cambiar y moverse.

El software es un código que se carga en el hardware para que se comporte. Es algo muy dinámico, aunque puede residir en una cinta o disco, es fácil para los usuarios reemplazarlo. Una máquina de uso general, como una computadora hogareña, cambiaría de roles al cargar un nuevo software, desde un juego de arcade hasta un procesador de textos y una hoja de cálculo.

El firmware tiene una semi permanencia. Tradicionalmente, la palabra se refería al código que residía en ROM (PROM, EPROM). Este código se ejecutó, muy a menudo directamente (ejecutar en el lugar) desde la ROM. Para cambiar este código en un sistema, deberá reemplazar la ROM. PROM significaba que un dispositivo podía personalizarse antes de la implementación (alguna vez usar un dispositivo OTP – fusibles quemados permanentemente). EPROM permitió la reutilización del dispositivo, normalmente con la eliminación de un chip de memoria, y el reemplazo por uno nuevo. El ciclo de borrado fue de 20 minutos bajo una lámpara UV después de quitar la etiqueta y un cheque en blanco antes de volver a usar. Pernos doblados recuento de inserción limitado. El firmware se utilizó en máquinas dedicadas de una sola función, como cajas registradoras, sistemas de climatización y gestión de motores. El firmware también fue la forma de implementar el BIOS. ¿Alguna vez cambiaste un chip BIOS en los años 80? Eso estaba cambiando el FW.

Ingrese a la memoria Flash, y todo comienza a ser confuso. Inicialmente, flash era algo que todos sabíamos que podíamos remotamente programar en el campo, y ahora todos lo hacemos en un abrir y cerrar de ojos. Piensa en tu celular. Lo que tradicionalmente se guardaba en el disco como software o ROM como firmware ahora está en la memoria Flash o EEPROM (borrable eléctricamente). Con los cambios en la tecnología de memoria, también vemos que lo que solía ejecutarse en el lugar se carga en la RAM y se ejecuta desde la memoria interna del SoC.

Entonces, en esencia, FW y SW siempre han sido instrucciones para la máquina, solo un conjunto fue más difícil de reemplazar. Yo diría que en este momento deberíamos, en la validez de continuar el uso del nombre de Firmware Engineer.

Debido a la naturaleza de los problemas que se están resolviendo, el firmware se asoció con controladores de hardware de bajo nivel y sistemas simples “integrados”. Un sistema integrado es un subsistema autónomo, esta podría ser la tarjeta controladora de su lavadora o el BIOS de su PC. Los controladores de dispositivo y / o HAL (capa de abstracción de hardware), hablan con el hardware. Una función de control escucharía las entradas y las salidas del variador.

El software vivió en un nivel superior. Podría aprovechar el BIOS, pero no sabría sobre el hardware debajo. Si observa un teléfono celular contemporáneo, a menudo se lo denomina dispositivo incorporado. Hasta cierto punto era cierto, pero ahora es una computadora que funciona completamente. Cualquiera que esté escribiendo el código de la aplicación en un teléfono celular, aunque conozca las limitaciones de energía, no es realmente un programador o ingeniero de software incorporado. Les permitiría elegir el nombre programador de aplicaciones, ingeniero de aplicaciones SW o desarrollador de aplicaciones.

Así que ahora te he dicho que no creo que existan ingenieros de FW, responderé en qué se diferencian de los ingenieros de sistemas integrados.

Cualquier ingeniero de software integrado, o el ingeniero de software de escritura del conductor debe tener un nivel de competencia de hardware. Incluso si no están cuidando los electrones, no pueden realizar sus tareas sin conocer una cantidad significativa de HW. Deben entender cómo funciona un pin GPIO, alto, bajo, tristado, push pull versus drenaje abierto. Son capaces de comprender y manipular la sincronización de las señales emitidas desde su SoC o MCU, para hacer esto necesitan poder leer sus hojas de datos e interpretar no solo un analizador lógico, sino también una traza de alcance analógico. Independientemente del protocolo que aborden, aquellos en el nivel más bajo deben entender que es la interfaz física. Deben conocer los mapas de registro y los bloques internos del dispositivo para el que escriben y el dispositivo con el que interactúan. Finalmente, deben poder leer los esquemas, sabiendo cómo funcionan las puertas, los FET y los muxes para propagar su señal. Un buen ingeniero senior de FW también conocería una mala implementación lógica de HW. No esperaría que detectaran problemas de RC, traducción de voltaje o problemas de ruido.

Se esperaría que un ingeniero de hardware incorporado supiera todas las cosas que complementan la experiencia de un ingeniero de hardware integrado. Es decir, comprender la física de los circuitos, leer las especificaciones eléctricas en las hojas de datos y dar vida a una placa con respecto a su disponibilidad para el código. Como los ingenieros de SW integrados se dividen entre expertos en sistemas de control, especialistas en controladores / HAL y expertos en RTOS, también veo a ingenieros de HW integrados divididos entre diseñadores y diseño, y en cada uno de ellos, ingenieros analógicos / RF y digitales. Una vez más, los autobuses contemporáneos de alta velocidad difuminan la distinción ya que las altas frecuencias significan que incluso lo digital es un problema analógico, especialmente en el diseño.

Un ingeniero de sistemas integrados es una bestia híbrida. Tendrán una buena visión general del código embebido, tanto para CPU como para FPGA, y hardware embebido, pero también esperaría que aporten otros conocimientos, como suficiente ingeniería mecánica para tratar problemas térmicos y suficiente conocimiento de RF para tratar Problema de ruido. El nombre lo dice todo ingeniero de “sistemas”. Creo que en un gran equipo, el ingeniero de sistemas embebidos tiene más experiencia en EE, pero también creo que un ingeniero experimentado de CS / SW también podría asumir ese papel.

Lo sé, una respuesta larga y loca. En resumen, creo que el concepto de ingeniero de FW está extinto. Los ingenieros de SW integrados conocen HW. Como en todas las tareas de software, hay programadores que codificarán pequeños módulos basados ​​en especificaciones claras, e ingenieros de software que miran una imagen más grande con más detalle. La palabra clave Sistema debería responder a su pregunta inicial.

“Firmware” es un subconjunto de “software” que normalmente es un programa cuyo propósito es controlar un “sistema integrado”, que incluye tanto el hardware como el software. entonces los ingenieros de “firmware” hacen el software integrado, mientras que los ingenieros de “sistemas” manejan el diseño del hardware y luego la integración del hardware y el software.

Como ingeniero de sistemas integrados que también ha ocupado puestos de firmware, puedo decir que la gran diferencia es el conocimiento de la electrónica.

Los ingenieros de firmware generalmente solo necesitan escribir código. Los ingenieros de sistemas integrados diseñan tanto el hardware como el firmware, además de realizar trabajos de nivel arquitectónico: todo el sistema integrado. Esto es lo que hago.

Prefiero llamar “programadores” a los ingenieros de software y firmware. La ingeniería implica un conocimiento y una comprensión mucho más amplios de lo que realmente está sucediendo a nivel de la placa, y a menos que una persona conozca el hardware en profundidad, realmente no creo que el título de “ingeniero” sea muy apropiado. Los ingenieros de sistemas embebidos reales pueden diseñar tanto el hardware como el firmware, y realizar compensaciones en el uno para el otro para obtener el mejor rendimiento al menor costo.

El “ingeniero de sistemas integrados” podría ser hardware o software.

Esa es la única diferencia.

Vería que un ingeniero de sistemas embebidos realiza principalmente diseño de hardware y diseño de firmware en sistemas muy pequeños (de los cuales hay muchos). Mientras que un ingeniero de firmware, mientras trabaja en estrecha colaboración con los diseñadores de hardware, solo hará firmware.

More Interesting

¿Sería una lástima que obtuviera un doctorado en Ciencias de la Computación en una buena universidad, pero solo trabajara como ingeniero de software (no como investigador científico o profesor)?

Cómo verificar si un archivo es ransomware o no

¿Qué problemas legales enfrentan los bancos cuando implementan la tecnología blockchain en sus sistemas?

¿Te gusta realizar entrevistas con ingenieros de software?

¿Es demasiado tarde para estudiar programación y convertirme en ingeniero de software si ya estoy trabajando a tiempo completo?

¿Es realista perseguir proyectos personales mientras trabajas a tiempo completo como ingeniero de software?

¿Cuál es la calidad de los ingenieros de software en Ticketmaster? ¿Tienen buena reputación?

¿Qué papel desempeñan los más nuevos como ingeniero de software asociado en una pequeña multinacional?

¿Qué computadora o computadora portátil utilizan los ingenieros o programadores de software de Microsoft, Google, Facebook, Amazon y / u otras grandes empresas tecnológicas?

¿Se paga demasiado a los ingenieros de software?

¿Cuánto tiempo se considera correcto que un ingeniero de software pierda por día con actividades que no distraigan el trabajo?

¿Los ingenieros de software programan mucho?

¿Quién es un ingeniero de plataforma? ¿En qué se diferencia del ingeniero de software y devops?

Cómo hacer que mi equipo compre en las guías de estilo de proyecto / programación

Teniendo en cuenta el importante envejecimiento en la industria de la tecnología, ¿hay una gran cantidad de ingenieros de software talentosos de más de 30 años disponibles con salarios más bajos?