Casa > C > Como Portar Um Novo Kernel Num Dispositivo Android Com Kernel Existente

Como portar um novo kernel num dispositivo Android com kernel existente

Há várias questões a serem respondidas antes de iniciar esta actividade. Por exemplo,

  • Se as alterações do Android estão ou não presentes na versão mais recente do kernel, ou seja, se é ou não o kernel vanilla kernel?
>p>Se os patches do Android não estão presentes no kernel a ser alvo, então o mesmo tem de ser puxado para dentro. sem o qual o android não funcionará corretamente

>p>>br><

ul>Alt>Alt>Alt> no KConfig ou entradas defconfig da placa de referência>>p>p>Por vezes com uma versão mais recente do kernel, certas entradas Config adicionariam ou removeriam dependências que podem muito bem quebrar alguma funcionalidade. Portanto, a revisão do mesmo valeria a pena.

>br>

ul>É baseado em uma definição antiga de plataforma baseada em arquivos de placa ou em uma árvore de dispositivos - há uma migração necessária?

Na maioria dos casos, um fornecedor de chips colaria os arquivos de placa para definição do hardware. Nesse caso, a vida útil seria fácil - apenas puxar os arquivos seria suficiente. Mas a tendência recente tem sido de migrar para árvores de dispositivos. na revisão mais recente do kernel você está migrando, se o fornecedor de chipset migrou a definição da placa de referência para árvores de dispositivos. você pode ter que acabar fazendo o mesmo. Note que, migrar para uma árvore de dispositivos baseada no kernel também requereria uma alteração associada no gestor de arranque - uma vez que é tarefa do gestor de arranque's escolher/popular o dispositivo apropriado - árvore de dispositivos a partir do binário/partição inicializável.

>

>br>>

ul>Mudanças nos dados da plataforma do driver's?

Pode haver alguma modificação no periférico dos drivers dos componentes SoC, ou seja, adição ou remoção de algumas entradas na estrutura de dados da plataforma que é utilizada pelo driver durante a sonda e inicialização. Na definição anterior da plataforma baseada em arquivos de placa, os respectivos arquivos mach-xxx usados para ter esses dados da estrutura preenchidos. Assim, se houver de facto a adição de novos campos ou alterações de funcionalidade de algum tipo no driver, pode muito bem resultar em quebra de tempo de execução ou ainda pior pânico do kernel. Isto precisa ser avaliado - pode não ser para todos os drivers, pelo menos para os críticos que é apenas o suficiente para trazer a plataforma base e o espaço do usuário associado (Android neste caso) para funcionar.

>br>>

ul>>li>Rebuild and migration of modules for plugin functionality like Modem(WiFi, GSM etc.), p>Para uma mudança na versão do kernel, os drivers que são construídos como módulos precisam ser reconstruídos contra o mais novo kernel(headers). Caso contrário, o modprobe falharia

>br> Estas são algumas das questões que devem ser analisadas no que diz respeito ao kernel. Uma vez que elas são respondidas, podemos imediatamente puxar para dentro da nossa placa alterações específicas para a versão mais recente do kernel, ou seja, o kernelbr>

ul>li>li>device tree / board filesli>board specific fixes/workaroundsli>li>perform additional modification as per changes in new kernel specific to subsystem>li>Migrate, review & make necessary changes for board's def config.

Para fazer isso, é sempre desejável fazer uso do GIT ou qualquer sistema de gerenciamento de versão, pois a integração do patch será fácil de rastrear e completa.

De Gaige

Que coisas diferentes posso fazer com o meu smartphone? :: Quero fazer um aplicativo andróide que possa mudar o estado do telefone para o modo silencioso em uma chamada recebida. Como devo fazer?