La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuáles son las perspectivas de desarrollo para los ingenieros de desarrollo de controladores y kernel de Linux?

¿Cuáles son las perspectivas de desarrollo para los ingenieros de desarrollo de controladores y kernel de Linux?

En la actualidad, las perspectivas de desarrollo de los ingenieros de desarrollo de controladores y kernel de Linux incluyen principalmente los siguientes puntos:

El desarrollo integrado de ingeniería es actualmente un campo popular. A la hora de hacer una planificación profesional, es obvio que hay tres caminos a tomar:

C1, ingeniero de desarrollo de software embebido

C2. Ingeniero de Desarrollo de Hardware Embebido

C3. Ingeniero de desarrollo de controladores integrados.

Entre...

C1 es una opción para estudiantes de informática, porque los cursos que estudian son relativamente suaves y, por lo general, tienen más programas en sus PC, por lo que Hacer desarrollo de software será relativamente fácil.

C2 es considerado por estudiantes que estudian circuitos electrónicos. Están familiarizados con los circuitos analógicos y pueden diseñar placas de circuitos de alta calidad.

C3 es más difícil. Requiere estar familiarizado con el software y el hardware, combinar verdaderamente el software y el hardware y construir un puente entre el software y el hardware. Por supuesto, el salario en la industria sigue siendo relativamente alto.

Podemos acudir a algunos sitios web de contratación para consultar los requisitos laborales de las empresas relevantes, de modo que podamos tener un objetivo claro a la hora de estudiar. Hoy vi la publicación de un blog de un senior sobre cómo convertirse en un excelente ingeniero de desarrollo de controladores. Estoy tan inspirado que me gustaría compartirlo con todos ustedes.

¿Qué es un buen ingeniero de desarrollo de controladores?

En primer lugar, necesito aclarar qué capacidades creo que debería tener un buen ingeniero de desarrollo de drivers. A continuación se muestra una lista de requisitos, desde fáciles hasta difíciles. Personalmente creo que debería haber varios requisitos:

Ser capaz de completar de forma independiente tareas de desarrollo de funciones impulsadas.

Ser capaz de analizar y optimizar el rendimiento del controlador, y explotar las fortalezas y evitar debilidades de un hardware específico.

Ser capaz de comprender completamente las capacidades relevantes de software y hardware y las direcciones de desarrollo del módulo, y ayudar a los ingenieros de aplicaciones a maximizar el uso de las capacidades del hardware.

Puede ayudar a los ingenieros de hardware a planificar el diseño de hardware, prevenir problemas y encontrar la mejor solución para módulos funcionales.

Puede ayudar a definir la arquitectura del sistema, planificar racionalmente el software y el hardware y encontrar la mejor solución para la implementación del producto.

Como ingeniero de controladores, tiendo a no desarrollar un subsistema completo desde cero, sino trasplantar controladores para hardware y plataformas específicas, agregar funciones, resolver errores, etc. Si miro las manifestaciones externas de esto:

Para resolver este problema, probablemente habrá varias etapas:

No sé dónde está el error.

No sé cómo solucionar este problema

Saber solucionar errores

Saber encontrar errores

Saber cómo diseñar errores

Saber cómo encontrar errores (en lugar de toparse con ellos) no es sencillo. Necesita saber lo suficiente sobre el sistema para poder detectar posibles problemas.

Planificar errores es más difícil y requiere un juicio preciso sobre la prioridad del problema. No existe un mundo perfecto, sólo elecciones, evitaciones y precauciones adecuadas.

Desde la perspectiva del proceso de resolución del problema, creo que se puede dividir en varias etapas:

Ocurre un ERROR -> Mucho código de seguimiento y depuración -> Finalmente encontrado y resolvió este ERROR

Ocurre ERROR -& gt; Especulación teórica sobre posibles causas ->; Localice y resuelva rápidamente el error

Lectura de código ->; Verificar y solucionar Error

¿Qué cualidades debes tener?

Entonces, ¿qué cualidades y habilidades necesitas poseer y desarrollar para lograr un atractivo óptimo?

En primer lugar, conocimientos suficientes de hardware

Poder leer un diagrama esquemático simple, poder analizar las posibles causas de anomalías del hardware y poder utilizar la depuración de hardware de uso común. Creo que este es un excelente controlador. Los ingenieros tienen cualidades profesionales inevitables y necesarias que los distinguen de otros ingenieros de software. Por supuesto, depende de su trabajo específico y los requisitos en esta área son diferentes.

Para los desarrolladores de controladores, si no comprenden los principios del hardware y los conocimientos previos relacionados con los periféricos del controlador que están desarrollando, en muchos casos pueden completar algunas tareas de trasplante y reparación, pero esto es como pasivo Creo que es difícil que un árbol sin raíces llegue lejos.

En segundo lugar, cuanto más conocimiento sobre el sistema operativo, mejor.

Al realizar el desarrollo de controladores, especialmente el trasplante de controladores periféricos puros, al principio, es posible que no necesite saber mucho sobre el sistema operativo en sí (como administración de memoria, programación de procesos, bloqueos, el marco principal de varios subsistemas del kernel, etc.) y puede completar con éxito algunas tareas en cuestión.

Pero si es necesario optimizar el controlador, mejorar el marco del software o rastrear y resolver problemas difíciles, comprender el sistema operativo y el núcleo mismo demostrará su valor.

Esto es especialmente cierto para los desarrolladores de controladores del kernel de Linux. En primer lugar, el código es completamente de código abierto, por lo que tienes la oportunidad de comprender el mecanismo operativo detrás de él. En segundo lugar, el kernel de Linux y sus subsistemas siempre están evolucionando y desarrollándose rápidamente, y es necesario que usted se mantenga al día.

En tercer lugar, gran curiosidad y entusiasmo persistente

Si el desarrollo de conductores no es solo su pasatiempo, sino también la forma en que mantiene a su familia, creo que en muchos casos, es posible que no esté allí. Será una oportunidad para centrarse en el desarrollo y mantenimiento de uno o dos módulos con los que tenga más experiencia. A medida que sus capacidades crezcan, se le pedirá que contacte y domine el desarrollo de más y más módulos de controladores diferentes.

Por este motivo, incluido yo mismo, a veces tenía la siguiente reacción:

Vaya, el trabajo original era demasiado largo y aburrido. Estoy feliz de estar haciendo un trabajo diferente.

¿Eh? ¿Quieres hacer otros módulos? ¡Tengo demasiado trabajo entre manos!

Este módulo es aburrido y no quiero hacerlo.

Creo que la mayoría de los jóvenes aspirantes son los primeros en mostrar entusiasmo. Sin embargo, a veces encuentro que el entusiasmo de muchas personas no dura mucho. Después de trabajar en un módulo nuevo durante mucho tiempo, se cansan de él. ¿Finalizado? No necesariamente, tal vez simplemente arreglaron algunos errores y dejó de ser aburrido. Muchas veces, cuando entrevisto a ingenieros que vienen a solicitar empleo, encuentro que el currículum dice que he hecho esto y aquello, pero una vez me preguntan qué problemas he resuelto, qué impulsores, marcos, procesos y principios tengo. Trabajé, estaba confundido.

Siento que si mi objetivo es ser excelente, entonces el estándar mínimo debe ser el flujo de trabajo general y el marco de los subsistemas relacionados con el módulo controlador específico, y debo tener la suficiente curiosidad para comprender y aprender. No solo debes trabajar para completar la tarea, de lo contrario será difícil acumular experiencia y tecnología sólidas.

En cuarto lugar, una clara capacidad de pensamiento lógico.

Quizás un desarrollador de software debería tener esto. Pero como ingeniero de desarrollo de controladores, a veces, en la mayoría de los casos, el entorno de trabajo del hardware no es perfecto. Cuando encuentre un problema, debe analizar y determinar si la causa del error es un problema de hardware o un error del controlador. En este momento, las habilidades claras de pensamiento lógico son particularmente importantes.

5. Buenos hábitos de trabajo

La mayoría de las personas no son genios. Convertirse en un excelente ingeniero de desarrollo requiere esfuerzos continuos y tiempo para acumular experiencia. En este proceso, los buenos hábitos de trabajo son muy importantes. Por ejemplo, preste atención al mantenimiento de los documentos de diseño, registre los problemas encontrados durante el trabajo, registre rápidamente las experiencias pasadas, los procesos de desarrollo de software adecuados, etc. El trabajo de documentación que muchas personas tal vez no quieran hacer requiere mucho tiempo. Pero ¡ay! . . A medida que envejezco, una buena memoria no es tan buena como un mal estilo de escritura.

. Por supuesto, de hecho, los documentos de diseño tratan más de brindarle la oportunidad de pensar. El resumen de experiencias pasadas también puede servir para comunicarse con usted sobre tecnología y progresar juntos.

6. Inglés

Esto también es imprescindible. No hay otra manera. Listas de correo, documentos técnicos y comunidades. Ser competente en inglés es definitivamente una gran ventaja, especialmente para. proyectos de código abierto. La velocidad de lectura de varios documentos estándar de especificaciones sigue siendo muy importante. La accesibilidad a la lectura es una cosa y es reconfortante poder leer tan rápido como un hablante nativo. ¡Ay, la vida es corta y eficiente! Con solo mirar los documentos, no sabes cuánto más tiempo llevará que los extranjeros.