¿Puede una ciencia informática trabajar en sistemas integrados?

Si está más interesado en el software integrado, la ingeniería informática es probablemente la mejor opción. La ingeniería electrónica / eléctrica también sería buena.

Hay diferentes niveles de incrustados. En el extremo superior, tiene cosas como procesadores Cortex-A53 de 1 GHz con 512 MB de RAM con Linux. La programación para ellos realmente no es muy diferente de la programación para PC. Claro, tiene menos recursos, pero todas las instalaciones estándar todavía están allí.

Si desea escribir controladores de kernel, es un poco más difícil, y sería muy beneficioso hacer un curso sobre diseño de circuitos digitales (para que sepa cómo funcionan los registros de IO y funciones especiales mapeados en memoria, y qué significan las diferentes especificaciones de temporización de hardware , etc.)

En el extremo más bajo, tiene cosas como microcontroladores de 8 bits (e incluso Cortex-M7 de hasta 32 bits) que funcionan con metal desnudo (sin un sistema operativo). Programar para ellos es un poco como hacer la programación del controlador del núcleo, pero ni siquiera tiene recursos del núcleo (asignador de memoria, etc.).

También está el aspecto práctico: muchas empresas que contratan desarrolladores de software embebido preferirían personas que también tengan algún conocimiento de hardware, para que puedan depurar de manera más efectiva con personas de hardware cuando surjan problemas. El error más memorable que encontré en el desarrollo embebido fue una anomalía de características de alto nivel que ocurre muy raramente en un sistema complejo (más de 50 subprocesos que hacen cosas diferentes en un SoC Cortex-A9 de doble núcleo que ejecuta Linux despojado) que tenía todos los signos de ser una condición de carrera, y me llevó una semana rastrearlo hasta un valor de capacitancia demasiado bajo en la PCB. Pasó de pruebas unitarias a depurador a kernel printk a osciloscopio.

Hay algunos trabajos integrados que puede obtener sin mucho conocimiento de hardware, pero si sabe (o sospecha mucho) que es la carrera que desea seguir, obtener más conocimiento de hardware sería una muy buena inversión. Abrirá muchas más puertas.

Sí, la mayor parte de mi carrera ha sido en sistemas integrados. Estoy particularmente afectado por la electrónica, porque mi universidad no tenía una escuela de ingeniería. No tuve la oportunidad de tomar incluso cursos básicos de ingeniería informática o electrónica digital.

Al escribir SW incorporado, debe obtener información de los diseñadores de tableros y chips. Algunos son mejores que otros para poder describir la interfaz de programación a su diseño HW. Es entonces cuando puede ser útil ser un EE, porque puede determinar usted mismo la interfaz de programación a partir del diseño completo de HW.

Si desea diseñar tanto HW como SW, entonces una especialización EE probablemente sea más apropiada. Pero recomendaría cursos avanzados en algoritmos y estructuras de datos, si desea una fuerte competencia tanto en SW como en HW de computadora.