В этой статье объясняется, как получить отладочную информацию при разработке 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 в сторожевом таймере автомобиля, см. сторожевой таймер автомобиля .