19 votos

¿Por qué hay tantos diferentes núcleos Android (técnico responda por favor)

No es Android un núcleo común que se utiliza en todos los dispositivos? Por ejemplo CentOS instalar en Dell, HP, y una variedad de otros tipos de hardware. Seguro que hay diferentes módulos pero aún así es CentOS, no obstante.

¿Cuál es la razón por la que CyanogenMod es siempre "roto"? Siempre me escuchan en los foros que están trabajando en portar este driver o controlador. Si se utiliza el mismo kernel no los controladores sólo trabajar con él? También puedo ver un millón de diferentes tipos de Núcleos para los diferentes dispositivos.

26voto

Nick Pierpoint Puntos 7976

Los núcleos variar de un fabricante a otro. Muchos de esos granos proceden de la pura cepa línea del kernel de fuentes encontradas en la CAF, lo que estos fabricantes de hacer es tomar esas acciones las fuentes, modificar para satisfacer basado en la junta directiva y el chipset utilizado, también, poner en práctica sus propios controladores.

Tome una buena mirada a su alrededor, hay variaciones de las pantallas táctiles, las variaciones de wifi chipsets, por no mencionar, acelerómetro, sensores, baterías, compás, gps, sonido, gráficos.

Tomando uno de los fuentes del kernel, por ejemplo, desde HTC no funciona en un Samsung, y viceversa.

Los fabricantes son libres de cherry-pick o fuera de la fuente de varios bits que quedar incorporado en la placa de circuito. No hay ningún disco duro rápido o normas en cuestión. De ahí la gran cantidad de piratería y/o modificaciones para obtener el kernel para que funcione correctamente.

Usted no debe nunca, comparar a Linux de escritorio de la distribución de los núcleos en los que se ha PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet, son totalmente diferentes ball-juego de parque. Las principales diferencias con CentOS y con Android en el Kernel de Linux se esta - TODOS los controladores están compilados como módulos o incorporado, por lo que cualquier distribución de Linux simplemente "trabajar fuera de la caja". De nuevo, con distribuciones de Linux de escritorio - usted tiene una arquitectura x86, por lo tanto el núcleo de Linux de una PC de Dell, puede trabajar fuera de la caja en una Lenovo siempre que el consejo directivo estándar de controladores están compilados.

No olvides que en el mundo Android, no hay variaciones de un núcleo construido para determinados BRAZO de chipsets, tales como binarios armv6, ARMv7, hay TEGRA, hay EXYNOS, y que son binarios incompatibles el uno con el otro. Por lo tanto, si un kernel compilado para TEGRA, olvídalo, no va a funcionar en ARMv7!

La razón por la que algunos núcleos en Android parecen ser "roto" el fabricante. Algunos (Zte es un muy buen ejemplo), la liberación de un masacrados fuente que puede compilar desde el código fuente, pero no se inicia debido a que falta un controlador que no está cubierto por la GPLv2 o licencia GPLv3. Ese es el problema, por lo tanto, algunos hackers han de ir recorriendo alrededor de github buscando algunas pistas; algunos fabricantes, si no todos, de hacer cumplir. La encarnación actual de Zte origen es supuestamente para ser 2.6.35.7, pero, en realidad, su realidad 2.6.32.9 fuente de base con una gran cantidad de modificaciones, por lo tanto no representa la verdadera fuente del kernel para 2.6.35.7!

Esto es donde los fabricantes tienen a la liberación de sus respectivas fuentes, no sólo de ser compatible con la GPLv2 o posterior, sino más bien, para que la comunidad sea capaz de mod, tales como la adición de capacidades de overclocking.

Por lo tanto, no hacking involucradas detrás de las escenas y un mucho de joder con conductores tratando de conseguir que funcione, y que no es fácil de depurar, ya sea.. Algunos conductores pueden ser cruzada con licencia, PERO no puede ser distribuidas en función de la cláusula y condiciones de negociación.

Afortunadamente, todo eso ha cambiado ahora con el kernel 3.x.x. línea de fuentes, como Android conductores están ahora integrados en la corriente principal de las fuentes. Pero hay un problema!

Intentar trasladar un 3.x.x. núcleo existentes en un receptor que está alrededor de los 12 a los 18 meses de edad; No una bola de nieve de la oportunidad en el infierno es trabajar, eso es debido a que, de los diferentes factores, la 3.x.x fuentes es muy diferente a la 2.6.x fuente y tomar un montón de hacking para conseguir trabajo - debería saberlo, han tratado de trasladar 2.6.38.6 fuente para el Zte Blade y error.

Asimismo, la última versión del kernel 3.0.1 - cuando se trabaja en el ics4blade proyecto en Modaco, se han hecho numerosas tentativas para el puerto, sino que por el simple hecho de que Zte hizo una muy mala lío de la fuente que representa portar casi imposible.

13voto

sarego Puntos 1150

La arquitectura de PC está construido alrededor de los productos básicos partes porque lo que comenzó como clones de un producto específico, el IBM PC, que fueron diseñados específicamente para ser compatible con ella, y por lo tanto uno con el otro. En general, se puede tomar un programa o dispositivo periférico de un PC compatible y la ponemos en otra, y esperar que funcione. De que capacidad es útil suficiente de que las personas que han seguido a la demanda, incluso a medida que la tecnología ha evolucionado. Usted puede poner una tarjeta PCI Express en cualquier PC moderno al igual que usted puede poner una tarjeta ISA en cualquier PC clon de aquel entonces.

Los Smartphones no tienen historia. Están diseñados como monolítico de productos, un sistema completo que consta de hardware y software que "simplemente funciona" como-es. No hay ninguna expectativa de que la gente va a tomar partes de un teléfono y ponerlos en otro, así que los ingenieros no tienen que tomar la interoperabilidad en cuenta a la hora de diseñar sus productos.

Incluso dentro de la fuente del núcleo de Linux árbol, hay un montón de fragmentación en los controladores para las plataformas ARM. Puesto que los teléfonos son generalmente diseñados detrás de puertas cerradas, los equipos de ingeniería a diferentes empresas a menudo terminan haciendo el trabajo duplicado, el diseño básicamente el mismo hardware que sus competidores y, a continuación, escribir sus propios controladores para su propio diseño. Una vez que se hayan terminado y que el producto es liberado, van directamente a trabajar en el próximo; no vale la pena su tiempo para volver atrás y rehacer los últimos controladores para los productos o combinación de ellos con los competidores de los controladores. El resultado es una gran cantidad de controladores para los dispositivos que son similares pero no exactamente la misma.

Además, los teléfonos inteligentes están generalmente basados en SOCs que se han especializado en hardware integrado, junto con el procesador. Para algunos de este, puede ser más que una cuestión de si se carga o no carga de un determinado controlador; el núcleo, como un todo, puede necesitar ser construido con la especial configuración de opciones para ejecutar en uno SOC, que son incompatibles con las opciones necesarias para que se ejecute en otro SOC.

5voto

Lie Ryan Puntos 15629

La razón es porque Android en el kernel de Linux en general no son compilados en Android en sí, sino que tenía que ser compilado desde otro equipo. Esto provoca varios problemas, debido a que el dispositivo de configuración no están disponibles en tiempo de compilación, y no es posible compilar un kernel genérico con todos los conductores debido a la limitación de espacio (mientras que la mayoría de las distros de escritorio simplemente tenía todos los drivers compilados en los módulos de carga de un sistema de ficheros initramfs). Por lo tanto, los desarrolladores tenían que averiguar que drivers de cada dispositivo en particular. No sólo eso, cada uno de los conductores tienen, generalmente, una docena más o menos de tiempo de compilación opciones para alternar entre diferentes funciones del controlador, y los fabricantes no suelen liberar a sus oficiales de configuración (en el peor de los delincuentes ni siquiera abrir la fuente de sus drivers, o no aguas arriba de la copia de los drivers hasta la fecha). Porque el fabricante no suelte sus configuraciones, a menudo, la configuración ligeramente diferente que el desarrollador utiliza expondrá sutiles errores que no existe con la configuración del fabricante.

Controlador de programación es mucho más difícil que la programación de aplicaciones, ya que no hay kernel que te protegen de los spot de hardware que tienen un determinado tiempo real los requisitos de tiempo y tal, y esto significa tener una característica de rendimiento diferente puede causar que el conductor pierda algunas duro de eventos en tiempo real del hardware; estas misses de mayo de superficie como de los errores o problemas de rendimiento.

Otro problema es la incompatibilidad binario. Hay dos causas de incompatibilidad binario, el primero es el tipo de CPU, que ha sido cubierto por la t0mm13b bien, pero la otra cuestión es más relevante de la portabilidad es el ABI incompatibilidad (application binary interface). Si los fabricantes no abra la fuente de sus conductores, a continuación, los desarrolladores tenían que usar el módulo compilado a partir de un stock ROM. Esto plantea varios ABI problemas de incompatibilidad, ya que los módulos de los controladores de sí mismo tener expectativas acerca de, por ejemplo, una estructura de diseño y función de los parámetros de llamada, y cuando el kernel está compilado, no tiene el archivo de encabezado para describir la ABI en el momento en que el conductor se compila, así que los desarrolladores han tenido que rediseñar el controlador para crear un archivo de encabezado o el encabezado de los archivos en el árbol de código fuente podría haber sido modificado fuertemente desde que el conductor se compila y los desarrolladores han tenido que revertir esas modificaciones para hacer que el kernel compatible de nuevo con el driver de la ABI. A diferencia de compilar desde el código fuente para compilar driver binario, no dará lugar a error de compilación debido a la función parámetro o desajuste struct incompatibilidad, simplemente se acaba de estrellar su dispositivo mientras está en marcha, y la depuración de estas cuestiones son muy difíciles. En el mundo del PC, estamos familiarizados con el lío que nVidia y ATi nos dejó, debido a su insistencia en la liberación de binario sólo los conductores, imagina tener que lío para todos los conductores, imaginar la "diversión" que se crea.

PC hardware también son generalmente más estandarizado de hardware móvil, la mayoría de los equipos no necesitan controladores para los vibradores, acelerómetro, giroscopio, radio 3G, sensor de proximidad, NFC, etc. Incluso en los dispositivos que tienen 3G, se conecta generalmente con el hardware que utilizan conexiones estandarizadas como PCMCIA o PCI-E.

4voto

Bryan Denny Puntos 18960

Bien.... drivers y el kernel no son exactamente los mismos.

Los conductores son los que el control de la antena celular, wifi, bluetooth, etc. Estos son los controladores propietarios debido a que el fabricante tiene que crear una forma (los controladores) para hablar con su hardware.

El núcleo es un intermediario entre el sistema operativo y el de la aplicación y los controladores actuales (o de la cpu o de memoria o cualquier otro hardware). Es lo que permite que su OS/apps para la interfaz con estos componentes de hardware.

Todos los millones de granos de ver en realidad no son tan diferentes el uno del otro. Normalmente un programador/modificador tendrá el kernel ya existente y "ajustar" para intentar y conseguir una diferencia de rendimiento. Básicamente puedes decir que son sólo de ajuste (la mayor parte) de la "configuración" del kernel. En el mundo Android, estos creadores son principalmente mirando a: más o underclocking el reloj de la CPU (importante para ahorrar vida de la batería o tratando de ejecutar la mayoría de los proceso intensivo de aplicaciones tales como video juego de emuladores o la reproducción de vídeo), o que están mirando bajo-volting (para salvar la vida de la batería mediante la ejecución de la CPU fuera de su original conjunto de parámetros... lo que varía en efecto una persona a otra porque no hay dos CPUs están hechas de 100% exactamente el mismo).

2voto

R C E Mortimer Puntos 11

Teléfonos y otros incrustado no tiene BIOS para proporcionar la abstracción entre el hardware y el sistema operativo como resultado el sistema operativo está compilado para el hardware que se implementan. Incluso los dispositivos que utilizan el mismo conjunto de chips puede ser configurado de diferentes maneras (utilizando alternativas de comunicación de autobuses, etc.) \el resultado es que el núcleo tiene que ser compilado en consecuencia. Como no hay ninguna expectativa de cambios en el hardware no es la detección de hardware realizadas. Kernel arranca más rápido y es más pequeño como resultado de ello - esto es un estándar principio de un SO embebido

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X