Depurando o VHAL

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 .