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.