2011-12-07 22 views
6

Estoy tratando de crear un Linux minimalista para un dispositivo incrustado. Eso significa la necesidad de compilar kernel y controladores. Un controlador está escrito directamente para el tablero del dispositivo por su creador, por lo que no es un repositorio. Se puede compilar como un módulo kernel.Compilación de un controlador como parte de un kernel, no como un módulo

Sin embargo, debido a la naturaleza inmutable de Linux y el requisito de un uso extremadamente pequeño de la memoria, no quiero usar módulos. Quiero todos los controladores integrados en el kernel. Y todos los controladores provistos con núcleo he configurado de esta manera.

Así que mi problema es cómo compilar ese controlador especial para el kernel?

Todas las búsquedas no me han proporcionado una solución; todas solo se trata de compilar como módulos.

Gracias por cualquier ayuda.

+0

Sería necesario poner el módulo en el árbol de fuentes del núcleo, y el parche algunos de los Makefile para incluirlo. Sin embargo, no estoy seguro de los detalles. ¿Qué módulo estás usando? –

+0

Es un controlador hecho en casa. Sé que necesito agregarlo a la fuente del kernel. Sin embargo, necesito algunos detalles, cómo modificar makefiles, etc. –

+1

Posible duplicado de [Insertar módulo de kernel de Linux estáticamente] (http://stackoverflow.com/questions/7353851/insert-linux-kernel-module-statically) –

Respuesta

5

Definitivamente va a tener que poner la fuente del controlador en el árbol de fuentes del núcleo y actualizar el archivo MAKE para incluirlo. Puede ver cómo funciona esto en los pasos 1.1 a 1.3 here.

Si el software de nivel de usuario habla con el controlador del dispositivo, probablemente lo haga mediante llamadas al sistema. Busque a través de la fuente del controlador que busca asmlinkage si encuentra alguno de estos y está buscando agregar algunas llamadas al sistema. El resto del documento anterior explicará cómo configurarlos. Tendrá que modificar al menos dos archivos (y pueden variar ligeramente según la versión de su kernel).

Si el controlador del dispositivo habla directamente con el kernel, estamos ante interrupciones, memoria asignada de E/S o DMA. Para ser honesto, no sé si se pueden manejar dentro del archivo fuente para su controlador (en cuyo caso es bueno que lo haga), o si también requieren modificar otros archivos en el árbol fuente. This es un buen recurso para tales cosas.

buena suerte

Cuestiones relacionadas