Muchas buenas respuestas a esta pregunta. Creo que debes decidir qué significa la palabra software integrado para ti y/o qué quieres que signifique. Tal vez su definición no esté realmente integrada. Mi definición significa que no hay sistema operativo. Y eso probablemente molestará a muchos ingenieros de software integrados, pero los experimentados como los que ya han respondido entenderán nuestras variaciones en la definición y por qué. Creo que me llamarían especialista en microcontroladores, y eso es cierto, pero paso la mayor parte del tiempo en procesadores de velocidad completa con montones de memoria y ROM y E/S, redes, etc. Soy el tipo que trae el hardware la primera vez, elimina los errores de la placa y del chip, y luego lo transfiere a lo que la mayoría llamaría ingenieros de software integrados. Soy un ingeniero eléctrico por capacitación e ingeniero de software de oficio, así que estoy a horcajadas en la línea.
Es muy posible, y no es raro que pueda permanecer en el mundo incrustado en C/C++, nunca tener que leer una hoja de datos o un esquema, todo lo que haría sería llamar a api que alguien más ha creado. Hay un mercado grande y cada vez más grande para eso como lo que solía ser (mi definición de) verdadero incrustado, o rtos basado incrustado (que a menudo es llamadas API y no la experiencia completa) a esta cosa embebida en Linux que ha explotado. No tiene nada de malo, es bastante parecido a la experiencia de desarrollar código para una computadora de escritorio, pero tiene que intentar un poco más para obtener un código confiable, ya que puede estar basado en flash/rom y es posible que no quieran tenerlo semanalmente. actualizaciones mensuales a las unidades en el campo. Lo ideal es nunca actualizar, pero eso también se está volviendo más raro.
La rtos/embedded Linux api based embedded es, y puede ser, una experiencia diferente a la que yo llamo programación de aplicaciones. Es posible que aún desee o necesite leer una hoja de datos o un esquema, es posible que aún necesite saber ensamblador para la plataforma de destino.
Me gustan todas las respuestas hasta ahora a esta pregunta, supongo que estamos luchando por comprender lo que realmente está preguntando o lo que realmente está buscando en la vida, agregue a eso lo que disfrutamos de nuestras elecciones y obtiene esta mezcla de respuestas.
Veo algunos grupos, ciertamente hay cosas buenas del microcontrolador incrustado, pero incluso eso se está convirtiendo en bibliotecas y aplicaciones en lugar de en el metal, mira a la comunidad arduino y stellaris y un montón de otras. Paso mucho tiempo en el tablero y prueba, tienes que saber bastante acerca de todo el hardware del sistema, registros, esquemas, etc. Debes saber lo suficiente sobre el ensamblador tanto para reiniciarlo como para depurarlo. cosas mirando los vertederos de desensamble y buscando signos de vida en la E/S o en los buses de memoria, etc. Si tiene suerte, también podrá trabajar en el diseño de chips y ver cómo se ejecutan sus instrucciones en la simulación. El siguiente grupo es el gestor de arranque/sistema operativo. El hardware funciona lo suficientemente bien en este momento, las botas de chip, la memoria parece funcionar, rom está ahí. Este equipo escribe el código de arranque de producción y obtiene el producto del encendido en el sistema integrado, rtos, linux, vxworks, bsd, lo que sea. esto es un talento en sí mismo, cadena de herramientas, sistema de archivos raíz, etc. El siguiente grupo son las masas, los ingenieros de software que escriben las aplicaciones para ese sistema operativo, ahora algunos leerán hojas de datos, esquemas, etc., escribiendo controladores de dispositivos o apis para que otros lo usen, y el nivel más alto puede ser alguien que es toda la programación a nivel de aplicación, las llamadas api y sdk, algunas de las cuales pueden ser desarrolladas por la compañía, otras pueden comprarse u otras.
Conclusión: Absolutamente, hay especialidades dentro incrustadas. ¿Vas a saber todo? NO, tal vez hace 20 años, probablemente hace 40 años, hoy no, el campo es demasiado grande y amplio. ¿Qué es lo mejor que puedes hacer por ti mismo en este campo? Aprenda el ensamblador para algunos conjuntos de instrucciones diferentes. Los populares, arm definitivamente, versión de pulgar de brazo, tal vez mips o powerpc u otros. Si se inclina hacia los microcontroladores, aprenda (brazo, pulgar,) avr, pic (blah), msp430, quizás 8051. Lea algunas hojas de datos, los microcontroladores pueden enseñarle esto incluso si ese no es el campo que desea, toneladas de desarrollo sub $ 50/eval boards (sparkfun.com por ejemplo) que dan hojas de datos, esquemas simples, ensamblador, C, etc. Si eres un tipo de software, aprende a hablar tipo de hardware, el software y el hardware no hablan el mismo idioma, si puede evitar elegir lados y mantenerse neutral y hablar en los dos idiomas, usted se ayudará a sí mismo, a su carrera ya cualquier persona para quien trabaje. A pesar de los puntos de vista personales que pueda tener sobre los endians o la numeración de bit o byte, es probable que tenga que lidiar con cosas complicadas y hablar con clientes/compañeros de trabajo que solo pueden tratar con octal (sí realmente) o solo con el msbit de cualquier cosa es cero. Recomiendo buscar en verilog y tal vez vhdl. Al menos en un sentido legible, no necesariamente crearlo desde cero. Si ya puede programar y conocer C, es muy legible. Según el trabajo y los compañeros de trabajo, el verilog y el esquema pueden ser su única documentación que utiliza para escribir su software. Si no puedes hacerlo, pueden reemplazarte con alguien que pueda (en lugar de conseguir que la gente del hardware documente sus cosas).
Podría agregar a las respuestas ya dadas, pero no agregaría mucho a lo ya dicho. Para obtener una visión general amplia de la extensión de los sistemas integrados, consulte http://embedded.com/ – Clifford
La característica n. ° 1 que la mayoría de los desarrolladores de escritorio que ingresan al trabajo integrado parecen carecer de familiaridad con la programación de hardware, llevar placas , controladores de dispositivo, rutinas de servicio de interrupción, habilidades rudimentarias de electrónica digital lo suficiente como para entender la "guía del programador" que se produce para su CPU/MCU, etc. –
Obtenga una placa real, como un kit de desarrollo Rabbit 2000, y cuando tenga real hardware, entonces estás aprendiendo cosas realmente integradas. De lo contrario, es toda teoría. :-) Mojarse las manos. No literalmente. Eso sería malo para sus placas de sistema integradas. –