Este artigo explica como obter informações de depuração ao desenvolver o VHAL:
- Despeje o status atual do VHAL.
- Inclua o dump do processo VHAL no dumpstate.
Quando ambos estão habilitados, cada item é incluído no adb bugreport
.
Além disso, registrando-se no car watchdog , o status VHAL de tempo de execução pode ser recuperado se não estiver em boas condições.
Despejar informações de depuração do VHAL
Implementar depuração para IVehicle.hal
IVehicle::debug
é chamado quando lshal debug <interface> <options>
é invocado. Você pode despejar o estado interno do VHAL ou executar as ações necessárias no VHAL com base nas opções.
Return<void> VehicleHal::debug(const hidl_handle& handle, const hidl_vec<hidl_string>& options) { if (handle.getNativeHandle() == nullptr || handle->numFds < 1) { ALOGE("Invalid parameters passed to debug()"); return Void(); } int fd = handle->data[0]; // Process options if (options.size() == 0) { dump_VHAL_state(fd); return Void(); } std::string option = options[0]; if (EqualsIgnoreCase(option, "--help")) { print_out_help(fd); } else if (EqualsIgnoreCase(option, "--whateveroption")) { do_whatever_needed(fd, option); } else { dprintf(fd, "Invalid option: %s\n", option.c_str()); } return Void(); }
Despeje o VHAL
Use lshal
para despejar o VHAL. O privilégio do sistema é necessário.
shell$ adb shell lshal debug android.hardware.automotive.vehicle@2.0::IVehicle
Incluir dump do processo HAL no dumpstate
Na versão Android 10 QPR2, as HALs podem ser incluídas no dump do processo quando o dumpstate
(ou relatório de erros) é iniciado.
Configuração de configuração
Configurar uma política SELinux
Adicione dump_extra_hal(hal_server_domain)
em dumpstate.te
. Se dumpstate.te
não existir na pasta sepolicy do vendor
, crie dumpstate.te
.
shell$ cat dumpstate.te dump_extra_hal(hal_vendor_special_control) dump_extra_hal(hal_vendor_display_power)
Listar interfaces HAL
Inclua nomes de interface HAL na propriedade do sistema ro.dump.hals.extra
. Numerosos nomes são separados por vírgulas. Android.mk
ou makefile
do produto são os locais ideais para esses itens.
shell$ % cat vendor_product.mk PRODUCT_PROPERTY_OVERRIDES += \ ro.dump.hals.extra=vendor.company.hardware.special.control@1.0::ISpecialControl,vendor.company.hardware.power.displaypower@1.0::IDisplayPower
Despejar processos HAL
Para capturar o statusCall
do sistema, chame adb shell dumpstate
ou adb bugreport
. A saída conterá o dump do processo das interfaces HAL especificadas.
Ative o watchdog do carro para monitorar a integridade do VHAL
O watchdog do carro monitora o status de integridade dos clientes registrados e despeja ou encerra os clientes registrados quando eles se tornam íntegros. Para registrar o VHAL no car watchdog, consulte Car Watchdog .