Aprendí C, microcontroladores y C ++. ¿Qué debo hacer después de trabajar en sistemas integrados? ¿Debo aprender Java?

Java no te servirá de nada a menos que estés planeando mudarte a sistemas más grandes como el integrado basado en Linux, lo cual, en mi humilde opinión, es una disciplina bastante diferente a AVR y ARM. Si desea ir a sistemas más grandes basados ​​en Linux, el resto de este consejo es un punto discutible. Aprende el núcleo y conviértete en un profesional de bash y python.

Pero si quieres seguir con cosas profundamente incrustadas, te sugiero que el siguiente paso sea aprender cómo hacerlo mejor y hacer más con él. Aquí hay una larga carrera sin cambiar idiomas y entornos …

– Seleccione e internalice un buen estándar de codificación, que es al menos tanto sobre lo que no debe hacer la calidad del código como la claridad, tanto sobre qué características del lenguaje no usar como lo que debe usar.
– Aprenda algunas buenas herramientas y métodos para pruebas unitarias
– Conviértete en un profesional absoluto con los ISR
– Conviértase en un profesional absoluto con los protocolos I2C y SPI, adquiera experiencia con ADC, DAC, periféricos DIO, incluidos DMA y funcionamiento en modo de bajo consumo.
– Aprenda suficiente EE para manejar la depuración con alcance, analizador lógico y retrabajo básico de SMT y otros componentes.

Y hacer MUCHOS proyectos. Esto debería mantenerte ocupado durante un año o tres. Entonces estás listo para …

– Realmente bueno a baja potencia
– Capacidades especializadas, como las capacidades DSP del Cortex M4
– Dispositivos con una pila de red integrada, como la TI CC3200
– Pequeños RTOS: uC / OS, eCos, etc.
– ¡Cualquier otra cosa ha surgido durante el período de tiempo intermedio!

Enjabonar, enjuagar, repetir. La educación es un proceso continuo.

Apoyo completamente la respuesta de Jim Reich.

Java conduce a la ira, la ira conduce al odio, el odio conduce al lado oscuro 🙂

Así que has construido los principios de una base sólida en lenguajes integrados y microcontroladores, controlando el mundo físico. ¡Excelente! Pero acaba de comenzar: esta puede ser una carrera para toda la vida.

Sigue con eso. Mejora en eso. Observe la mayor cantidad de código de firmware incorporado de código abierto que pueda ver y luego hágalo usted mismo en sus propios proyectos de hardware.

Ada también es un lenguaje incrustado viable; de ​​hecho, es el lenguaje incrustado diseñado específicamente, es solo que se usa principalmente en el sector aeroespacial y militar, pero no es necesario que sea así, y hay organizaciones que trabajan para popularizarlo más allá de eso. alcance limitado.

Intente trabajar con diferentes categorías de hardware: sensores físicos, sensores de imagen, control de motores, aprenda sobre la miríada de protocolos de comunicaciones que existen y luego cree uno propio entre, por ejemplo, un cerebro integrado de alto nivel (por ejemplo, un Raspberry Pi o BeagleBone o … , y probablemente ejecutando Linux) y un microcontrolador que se dedica a interactuar con el hardware (porque muchos sistemas integrados que necesitan controlar tanto el hardware como la interfaz a redes / internet dividen esas responsabilidades (aunque en el caso del BeagleBone, tiene ambos integrado). Pruebe algunos de los nuevos (y aún en evolución) protocolos de IoT.

También recomendaría aprender Python. Es una herramienta realmente útil en su cinturón de herramientas para probar, depurar y, en general, hacer cosas, tanto en su computadora de desarrollo como incluso en hardware de destino basado en Linux.

También sumérjase en el entorno Linux, las herramientas de línea de comandos y la programación a nivel de sistema. Para todo lo que esté conectado a la red / a Internet, es prácticamente el SO defacto y el entorno de programación.

Escriba su propio mecanismo de cargador de arranque / actualización remota, hágalo al comienzo del proyecto, luego trátelo sin piedad durante todo el proceso de desarrollo hasta que haya probado cada caso de esquina y sea a prueba de balas, porque una vez que un producto de hardware desaparece en el mundo real en manos del público, cuando (no si) algo sale mal, se descubre un error y se corrige, necesita una forma a prueba de balas para actualizar su producto, prácticamente sin riesgo de bloquear el producto del cliente que paga. Nada afectará el negocio de su empleador, o el suyo, más rápido que tener que proporcionar un reemplazo de garantía para cada producto vendido cuando todos mueren durante la noche debido a una mala actualización desde la cual el producto o el cliente no puede deshacerse.

Del mismo modo, si crea un dispositivo conectado a Internet, debe aceptar el panorama de seguridad e información, los ataques siempre presentes que puede esperar que reciba las 24 horas, los 7 días de la semana, y la realidad fundamental de que * cada * conexión a Internet El sistema informático, ya sea de escritorio / portátil o servidor, hasta un pequeño dispositivo, se basa en el mismo ecosistema de código limitado (Windows, Mac, pero principalmente Linux, y un amplio conjunto de módulos de código abierto) y eso cuando se descubre una vulnerabilidad en alguna parte de esa pila del sistema operativo, si su widget conectado a Internet tiene ese módulo, su producto ahora también tiene esa vulnerabilidad, y las personas nefastas / maliciosas intentarán usar su dispositivo para hacer daño, incluso si es simplemente como un pie en la puerta de la red más amplia de su cliente, pero potencialmente mucho peor directamente en su dispositivo.

Debe aceptar la lectura exhaustiva y la comprensión de la mayoría de las hojas de datos de los chips utilizados en un sistema de destino. La mayoría de los fabricantes siguen plantillas similares, pero no todas. Conozca la diferencia entre las “especificaciones de titulares” en la página 1, y las “trampas” esenciales enterradas más abajo. Comprenda que las condiciones extremas como la temperatura pueden ser algo que necesita manejar, y que puede haber una diferencia significativa en el rendimiento entre los números que lee en la columna “típica” frente a los números en la columna de temperatura máxima. Un ingeniero profesional diseña para el peor de los casos, no el típico o el mejor: esto es lo que separa a los aficionados y hackers de los ingenieros.

Por último, trabaje con otros en un equipo, sea cual sea su situación de aprendizaje (escuela, universidad, espacio de piratería local o un equipo de código abierto repartido por todo el mundo). Nada grita más la empleabilidad que los proyectos en los que trabajas con otras personas involucradas. Y asegúrese de que las cosas estén en Github, que puede ser una parte integral de su currículum que habla más que cualquier cosa que escriba en ese currículum.

Sobre todo, ¡diviértete! Descubre qué disfrutas y qué no, en qué eres bueno y en qué no eres tan bueno, y qué alguien está dispuesto a pagarte por hacer. Esperemos que encuentres esa feliz intersección entre esos tres.

Construir cosas.

Usando lo que has aprendido.

No. Sé un hombre, aprende ensamblador.