Diretório de artigos
1. Camada de abstração de hardware HAL da arquitetura do sistema Android
1.1 Visão geral do HAL
Android 硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节
.
Ou seja, o suporte para hardware é dividido em duas camadas, uma camada é colocada no espaço do usuário (User Space), e a outra camada é colocada no espaço do kernel (Kernel Space). espaço do usuário e os Programas do driver do kernel do Linux são executados no espaço do kernel.
Por que você quer organizar isso dessa maneira? Não é viável integrar a camada de abstração de hardware e o driver do kernel juntos no espaço do kernel?
Do ponto de vista da implementação técnica é possível, mas do ponto de vista comercial, colocar toda a lógica de suporte para hardware no espaço do kernel pode prejudicar os interesses dos fabricantes. Sabemos que os direitos autorais do código-fonte do kernel Linux seguem a licença GNU, enquanto os direitos autorais do código-fonte do Android seguem a licença Apache. O primeiro deve publicar o código-fonte ao lançar um produto, enquanto o segundo não precisa publicar o Código fonte. Se todos os códigos suportados pelo hardware forem colocados na camada do driver Linux, isso significa que o código-fonte do driver deve ser divulgado quando for lançado, e a divulgação do código-fonte significa que os parâmetros relevantes e a implementação do hardware são divulgados.Na acirrada competição de hoje, isso é muito prejudicial para os fabricantes. Portanto, Android才会想到把对硬件的支持分成硬件抽象层和内核驱动层,内核驱动层只提供简单的访问硬件逻辑,例如读写硬件寄存器的通道,至于从硬件中读到了什么值或者写了什么值到硬件中的逻辑,都放在硬件抽象层中去了
desta forma, os segredos comerciais podem ser ocultados. É precisamente por causa dessa camada que o Android foi expulso da árvore de código principal do kernel do Linux. Pense nisso, o programa de driver colocado no espaço do kernel do Android tem suporte de hardware incompleto. Quando o kernel do Linux é transplantado para outras máquinas, o hardware fica completamente inutilizável devido à falta de suporte da camada de abstração de hardware. É por isso que o motivo Android é um sistema aberto em vez de um sistema de código aberto .
Deixando esses argumentos de lado, aprender a camada de abstração de hardware do Android é extremamente útil para entender todo o sistema Android, porque envolve a camada de driver de hardware, camada de abstração de hardware, biblioteca de tempo de execução e camada de estrutura de aplicativo do sistema Android de baixo para cima . A figura a seguir ilustra a posição da camada de abstração de hardware no sistema Android e sua relação com outras camadas:
Por se tratar de um processo sistemático de aprendizagem, o autor irá dividi-lo em seis artigos para descrever cada processo de aprendizagem, incluindo:
( 重点
)
1. No Android 内核源代码工程中编写硬件驱动程序
. Referência
2. No sistema Android 增加C可执行程序来访问硬件驱动程序
. Referência
3. No Android 硬件抽象层增加接口模块访问硬件驱动程序
. Referência
4. No sistema Android 编写JNI方法在应用程序框架层提供Java接口访问硬件
. Consulte
5. No sistema Android 应用程序框架层增加硬件服务接口
. Consulte
6. No sistema Android 编写APP通过应用程序框架层访问硬件服务
. referir-se
A arquitetura geral é a seguinte: