Escribir software incrustado requiere habilidades muy diferentes de las que exige el software empresarial. En particular, los ingenieros de software integrados deben tener una perspectiva completa del sistema y comprender los conceptos de bajo nivel de cómo el software “habla” con el hardware subyacente.
Desde un punto de vista teórico , el estudio de las siguientes áreas es importante:
1.) Organización informática
- Como ingeniero de software de sistemas, ¿de dónde obtiene su satisfacción?
- ¿Cuáles son los deberes principales del desarrollador de software líder?
- ¿Cuál es la historia más interesante que has escuchado al alojar un podcast de ingeniería de software?
- ¿El curso de certificado de posgrado de 'minería de conjuntos de datos masivos' que ofrece Stanford vale el costo de $ 14,000- $ 17,000?
- ¿VB.Net está muriendo? ¿Vale la pena aprenderlo?
Visualización de los componentes que componen el sistema. Se supone que conoce el diseño de hardware del sistema integrado cuando escribe software para el mismo. En otras palabras, uno debe conocer los diferentes periféricos conectados al sistema y los buses involucrados.
2.) Sistemas operativos
El software básico necesario para ejecutar cualquier sistema. Esto es en lo que un ingeniero de software integrado trabajaría principalmente. Pero lo más importante, a diferencia de los sistemas de escritorio, el software del sistema operativo para sistemas integrados tiene un gran espacio de diseño. Esto se debe a que hay múltiples optimizaciones y compensaciones permitidas, dependiendo del propósito del sistema. Compare esto con un sistema de escritorio de uso general donde tendría casi todo el hardware rudimentario. Los recursos son limitados en un sistema integrado, por lo que debe estar familiarizado con cada uno de ellos para saber qué no incluir en el diseño.
Ahora, desde el punto de vista de la implementación , hay varias herramientas que, si dominas, pueden facilitar un poco tu vida. Los enumero aquí en (IMO) orden decreciente de utilidad. Recomendaría explorar las características de cada uno y tratar de desarrollar sus propios hábitos de trabajo.
Lenguaje de programación de bajo nivel : AFAIK, solo me vienen a la mente C y ensamblaje.
Domina tus conceptos de C. Eso debería enviarle automáticamente conceptos de búsqueda sobre cómo funcionan el software y el hardware al unísono.
Este debería ser un buen comienzo: PUZZLES C, algunos problemas C interesantes
Navegador de origen : cscope funciona bien para las bases de código C y C ++.
Tutorial de Vim / Cscope
Uso de un editor avanzado : Vim es mi favorito. La idea básica es editar mediante programación. Por ejemplo, usar macros para agrupar una secuencia de comandos y luego ejecutarla en varias secciones del archivo. Junto con cscope, vim lo ayuda a desarrollar un buen flujo de trabajo. Las funciones de múltiples ventanas son una bendición absoluta. La capacidad de ir y venir entre las interfaces cscope y vim grita “buena integración”.
Siete hábitos de edición de texto efectiva
Scripting : recomendaría familiarizarse con Python y Bash, especialmente para el formato de texto. Soy un gran fanático de unir varias herramientas de procesamiento de texto para formar una diseñada específicamente para mi propósito.
Dive Into Python es un buen libro para programadores.
Control de versiones : no es inevitable, pero seguramente es algo que agradecería por aprender.
Yo recomendaría GIT. Git – Libro