Hola, creo que soy elegible para responder esta pregunta, yo mismo soy un desarrollador de controladores de dispositivo. Por lo tanto, al llegar a la pregunta, ¡permítanme explicar primero qué es “Controlador de dispositivo”!
Si miras a tu alrededor, hay numerosos microcontroladores disponibles en el mercado, Intel, NXP, Freescale, Infineon, Microchip, Toshiba, ¡la lista sigue y sigue! ¿Imagínese si un desarrollador de aplicaciones tiene que leer el manual del nuevo dispositivo cada vez antes de continuar con el desarrollo de su aplicación?
No solo tomaría mucho tiempo escribir nuevas funciones para acceder a registros, memoria, E / S y otros periféricos de ese microcontrolador, sino que también haría que la aplicación dependiera del hardware subyacente.
- Sistemas embebidos: ¿Cómo ejecuta un microprocesador el código binario?
- ¿Hay alguna startup que trabaje en dominios de telecomunicaciones / semiconductores / embebidos en la región de Delhi / NCR? Si los hay, ¿dónde puedo obtener una lista de ellos?
- ¿Cuál es el mejor PLC o sistemas embebidos?
- Estoy confundido acerca de si debo continuar con mi trabajo en el campo incrustado o ir al GRE. Como no puedo hacer ambas cosas al mismo tiempo, ¿qué debo hacer?
- ¿Cuáles son las principales diferencias entre mlockall () y swapoff -a?
¡Aquí es donde un controlador de dispositivo es útil! ¿Quién más conocerá el microcontrolador mejor que el propio fabricante? Por lo tanto, la mayoría de las compañías de semiconductores escribirán y entregarán los controladores del dispositivo junto con el dispositivo (microcontrolador).
Los ingenieros que suelen escribir este controlador se denominan “Desarrollador de controladores de dispositivo”. Las principales responsabilidades de dichos ingenieros son:
- Comprensión profunda del hardware (microcontrolador) .-
- Cómo funciona el periférico.
- Conocimiento de todos los registros disponibles en el microcontrolador para un determinado periférico.
- ¿Cuáles son los diferentes modos de operación?
- ¿Limitaciones de hardware, si hay alguna?
- Cualquier enfoque nuevo que pueda considerarse sobre la IP actual.
- Desarrolle un diseño basado en los requisitos (proporcionados por el cliente o especificados por algún estándar, como AutoSar).
- Escriba el controlador según el diseño.
- Finalmente, pruebe el controlador con escenarios de prueba de muestra.
- Otras tareas básicas como:
- Asegurar que todos los requisitos estén cubiertos en Diseño y Código.
- Realización de análisis estático del código.
- Asegurar la “complejidad ciclomática” del conductor.
- Cálculo de la profundidad de la pila y el rendimiento del controlador.
- Corrección de errores.
Esto es todo lo que puedo pensar ahora. Lo editaré si se me ocurre algo más.
Editar 1:
Complejidad ciclomática en la complejidad del código (no de ramas, argumentos pasados a una función, etc.). Algunos estándares, como MISRA, especifican cierto límite, como cc <15, para una función para garantizar que opere con seguridad en condiciones extremas.
Profundidad de la pila: como puede saber, en C todas las variables relacionadas con el tiempo de ejecución, las llamadas a funciones se almacenan en la pila. La memoria es la principal limitación en un sistema embebido, un controlador de dispositivo debe asegurarse de que su código no ocupa una gran cantidad de pila, lo que priva a la aplicación de hambre.
Rendimiento: es el tiempo que lleva completar una operación (transmisión de N bytes a través de SPI, conversión de ADC, etc.). Para conocer más en profundidad, puede leer sobre el concepto del modo Pulgar y Normal en ARM.