¿Cuáles son los conocimientos esenciales para empezar a desarrollar controladores de cámara para Android?
1: Relacionado con el hardware: debe comprender los circuitos digitales simples, comprender el diagrama del circuito (esto es muy simple), poder encontrar el GPIO conectado al hardware de la cámara correspondiente de acuerdo con el circuito y configurar el GPIO al modo correspondiente según el manual del chip; por ejemplo, modo GPIO, entrada IO o salida IO; o configurado en modo PWM; el GPIO funciona de manera diferente en diferentes modos;
2: Controlador de cámara: como ov5640, necesita encontrar este controlador de Linux. Lea libros relacionados, como "Controlador de dispositivo Linux", para saber cómo escribir controladores de dispositivo Linux simples, por supuesto, no necesita escribir el controlador de la cámara en el trabajo. Úselo si tiene una referencia, pero el controlador de referencia generalmente admite las funciones de video y fotografía. Debe depurar el balance de blancos, el enfoque, etc. usted mismo;
3: debe aprender el V4L2. protocolo, porque el controlador exporta la interfaz /dev/video0 a través del protocolo V4L2 y la aplicación de la capa superior C también pasa a través del protocolo V4L2. Acceda a /dev/video0 y el protocolo V4L2 real se comunica con el controlador subyacente a través de algún indicador ioctl de Linux; () funciones el protocolo V4L2 es un protocolo unificado y unificado proporcionado para proteger las diferencias en varios controladores de cámara (como cámaras USB, cámaras con interfaz mipi) Especificaciones para la comunicación del controlador de cámara;
4: debe Conozca el conocimiento relevante de las clases de C ++, y es mejor ver el código de C ++. Dado que tiene conocimientos de C, ¿cómo puede comprender los objetos de C ++? ¿Por qué necesita conocer las clases de C ++? Debido a que Android Camera HAL está escrito en C ++ para acceder a /dev/video0, se implementan más de veinte clases xxxx.cpp diferentes heredándose entre sí y es necesario comprender cómo escribir la capa HAL de Android, al menos buscar información; sepa dónde usarlo; generalmente es CameraModule.cpp o CameraHal.cpp
5: es mejor conocer algunos de los métodos de escritura de JNI, al menos puede copiarlos, porque estos escritos. Los métodos son fijos, porque hay veces que hay que rastrear el código desde la capa Java hasta la capa HAL y hasta el controlador;
6: Debes poder usar Linux, porque todos los códigos fuente de Android son compilado en Linux; necesita conocer la arquitectura ARM y el compilador cruzado; como arm-linux-gcc; saber cómo compilar el código fuente de Android y cómo depurarlo; con cámara;
Resumen:
Se puede decir que la cámara de Android es el módulo más difícil de depurar entre todos los módulos de controladores de Android. Es demasiado complicado incluso si eres muy bueno en ello. Java; C está bien; pero creo que todavía es demasiado difícil aprender todo el proceso por tu cuenta. La autodeducción es demasiado laboriosa; si tienes un amigo que sepa guiarte y pueda darte demostraciones y consejos, todavía es posible entre febrero y marzo.