Отладка VHAL

В этой статье объясняется, как получить отладочную информацию при разработке VHAL:

  • Дамп текущего состояния VHAL.
  • Включите дамп процесса VHAL в dumpstate.

Когда оба включены, каждый элемент включается в adb bugreport .

Кроме того, путем регистрации в car watchdog можно получить статус VHAL во время выполнения, если он не в хорошем состоянии.

Дамп информации об отладке VHAL

Реализовать отладку для IVehicle.hal

IVehicle::debug вызывается при lshal debug <interface> <options> . Вы можете сбросить внутреннее состояние VHAL или выполнить необходимые действия с VHAL в зависимости от параметров.

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();
}

Сбросить VHAL

Используйте lshal для создания дампа VHAL. Нужна системная привилегия.

shell$ adb shell lshal debug android.hardware.automotive.vehicle@2.0::IVehicle

Включить дамп процесса HAL в состояние дампа

В выпуске Android 10 QPR2 HAL могут быть включены в дамп процесса при dumpstate дампа состояния (или отчета об ошибке).

Настройка конфигурации

Настройте политику SELinux

Добавьте dump_extra_hal(hal_server_domain) в dumpstate.te . Если dumpstate.te не существует в папке sepolicy vendor , создайте dumpstate.te .

shell$ cat dumpstate.te
dump_extra_hal(hal_vendor_special_control)
dump_extra_hal(hal_vendor_display_power)

Список интерфейсов HAL

Добавьте имена интерфейсов HAL в системное свойство ro.dump.hals.extra . Многочисленные имена разделены запятыми. Android.mk или makefile продукта являются оптимальными местами для этих элементов.

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

Дамп процессов HAL

Чтобы перехватить системный statusCall , вызовите adb shell dumpstate или отчет adb bugreport . Выходные данные будут содержать дамп процесса указанных интерфейсов HAL.

Включить автомобильный сторожевой таймер для контроля состояния VHAL

Car Watchdog отслеживает состояние здоровья зарегистрированных клиентов и сбрасывает или прекращает работу зарегистрированных клиентов, когда они становятся неработоспособными. Чтобы зарегистрировать VHAL в сторожевом таймере автомобиля, см. сторожевой таймер автомобиля .