![ícone HAL do veículo Android](https://source.android.google.cn/static/devices/images/ape_fwk_hal_vehicle.png?authuser=7&hl=pt-br)
Muitos subsistemas do carro se interconectam entre si e com o sistema de infoentretenimento (IVI) do veículo por meio de várias topologias de barramento. O tipo de barramento e os protocolos exatos variam muito entre os fabricantes (e até mesmo entre diferentes modelos de veículos da mesma marca); os exemplos incluem barramento de rede de área de controlador (CAN), barramento de rede de interconexão local (LIN), transporte de sistemas orientados a mídia (MOST), bem como redes Ethernet e TCP/IP de nível automotivo, como BroadR-Reach.
A camada de abstração de hardware do Android Automotive (HAL) fornece uma interface consistente para a estrutura do Android, independentemente da camada de transporte físico. Este veículo HAL é a interface para o desenvolvimento de implementações do Android Automotive.
Os integradores de sistemas podem implementar um módulo HAL de veículo conectando interfaces HAL de plataforma específicas de função (por exemplo, HVAC) com interfaces de rede específicas de tecnologia (por exemplo, barramento CAN). As implementações típicas podem incluir uma unidade de microcontrolador (MCU) dedicada executando um sistema operacional proprietário em tempo real (RTOS) para acesso ao barramento CAN ou similar, que pode ser conectado por meio de um link serial à CPU que executa o Android Automotive. Em vez de um MCU dedicado, também pode ser possível implementar o acesso ao barramento como uma CPU virtualizada. Cabe a cada parceiro escolher a arquitetura adequada ao hardware desde que a implementação cumpra os requisitos de interface para o HAL do veículo.
Arquitetura
O veículo HAL é a definição da interface entre o carro e o serviço de rede do veículo:
![Arquitetura HAL do veículo Android](https://source.android.google.cn/static/devices/images/vehicle_hal_arch.png?authuser=7&hl=pt-br)
Figura 1 . Arquitetura automotiva HAL do veículo e Android
- API do carro . Contém as APIs, incluindo
CarSensorManager
. Para obter detalhes sobre APIs suportadas, consulte/platform/packages/services/Car/car-lib
. - CarService . Localizado em
/platform/packages/services/Car/
. - Veículo HAL . Interface que define as propriedades do veículo que os OEMs podem implementar. Contém metadados de propriedade (por exemplo, se a propriedade do veículo é um int e quais modos de alteração são permitidos). Localizado em
hardware/libhardware/include/hardware/vehicle.h
. Para uma implementação de referência básica, consultehardware/libhardware/modules/vehicle/
.
Para obter mais detalhes, consulte Propriedades do veículo .
Segurança
O veículo HAL suporta estes níveis de segurança ao acessar dados:
- Acessível ao aplicativo com permissão (através do serviço de carro).
- Acessível sem permissão (através de serviço de carro).
O acesso direto às propriedades do veículo é permitido apenas a componentes selecionados do sistema com rede de veículo com proteção de acesso selinux. A maioria dos aplicativos passa por gatekeeping adicional por serviço de carro (por exemplo, apenas os aplicativos do sistema podem controlar o HVAC, pois requer permissão do sistema concedida apenas aos aplicativos do sistema).