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