La clave del software es que necesita hardware para ejecutarse, sin el hardware el software no puede ejecutarse. La mayoría del desarrollo de aplicaciones de software comienza en hardware informático generalizado, como una PC de escritorio o un servidor o incluso en la nube. En la mayoría de los casos para pequeñas tareas simples, esto funciona bien, pero eventualmente si una aplicación necesita ejecutarse más rápido, con menor potencia o más ancho de banda, una computadora más grande o más instancias en la nube pueden no funcionar, o en el caso de baja potencia definitivamente no funcionará.
Esto es cuando entra en juego la ingeniería de hardware y firmware. Un ingeniero de firmware haría que el software se ejecute en una paz de hardware enfocada. Por lo general, por razones de rendimiento / potencia / memoria / costo, el software incorporado (o firmware) debe ejecutarse de una manera particular para que ocurran estas ganancias. Uno no puede simplemente transferir una solución de software típica y hacer que sea el producto final. El software incorporado deberá aprovechar el hardware como sea posible. Esto podría estar usando un DMA y otros periféricos especializados, así como también ir con un RTOS en lugar de un sistema operativo completo, o incluso aplicaciones reales de metal desnudo. Comprender la arquitectura del hardware es importante para que el firmware se ejecute de la mejor manera. El trabajo de los ingenieros de firmware es hacer que el software funcione lo mejor posible en el hardware.
Hay muchos problemas técnicos fascinantes que enfrentará un ingeniero de software integrado. Los más interesantes serán aquellos que resuelvan problemas reales en el mundo físico. El software de alto nivel generalmente procesará los datos sin procesar recopilados por un sistema integrado de algún tipo. El firmware es crítico para convertir eventos físicos al dominio digital donde se puede convertir en datos útiles.
- ¿El Raspberry Pi Zero más nuevo es capaz de jugar Minecraft Pi?
- ¿Para qué se utilizan Raspberry Pi y Banana Pi?
- Tengo un diseño de producto relacionado con Raspberry Pi y quiero externalizar la fabricación a Shenzhen, China. ¿Cuáles son los principales ODM allí?
- Hackathons: ¿Cuáles son algunas ideas geniales para una compilación electrónica de Hackathon? ¿Algo que tal vez use arduino o raspberry pi?
- ¿Cuáles son algunas razones para no usar Raspberry Pi para un producto de hardware comercial?
En términos de lo que encontrarán los ingenieros de firmware, lo cual es inspirador, dependerá del campo. Al observar la tecnología emergente de IoT, habrá una tonelada de nuevos productos que serán desarrollados por ingenieros de firmware, y las aplicaciones de este campo solo serán casi infinitas. La tendencia para IoT será mover más y más sensores al mundo real, los sensores IoT no se pueden hacer a través de la programación de software de alto nivel, simplemente usarán demasiada energía, usarán demasiados recursos, etc. Todavía se necesitará software de alto nivel fusionar todos estos datos del sensor en algo más grande, pero los sensores en sí son hardware y firmware. Hacer un sensor que funciona en una celda de monedas durante muchos años requiere un conjunto especial de habilidades y un pensamiento no típico para que funcione correctamente.
Mirando su ejemplo para el Proyecto Tango, para que este proyecto incluso despegue, se tuvo que hacer una paz de hardware personalizada. Para sincronizar todos estos sensores en este teléfono y ahora en una tableta, se necesitan muchos bloques de firmware que se ejecutan en muchos microcontroladores diferentes incluso antes de que llegue al procesador principal. Al trasladar más y más aplicaciones al hardware, la solución general se vuelve más rápida, de menor potencia y de menor costo, todo lo necesario para un producto real.
Desde el punto de vista de la innovación y de dónde viene, realmente proviene de las secciones transversales de hardware / firmware / software y de ver cómo encajan todos en la imagen más amplia del sistema. Una buena ingeniería de firmware necesitará conocer el hardware y el software y sabrá mejor qué se ejecuta dónde. Esto a su vez convertirá una idea en algo real.
En resumen, los problemas técnicos más fascinantes que encontraría son los desafíos de convertir el mundo físico en el mundo digital con las limitaciones del mundo físico.