Справочный материал для ArmSoM: полное техническое содержание 8-страничного руководства Rockchip Android LOG. Имя файла не указывает язык, однако текст китайский; отдельного английского оригинала нет. Английский, русский и немецкий тексты переведены полностью; четыре оригинальных снимка с китайскими пометками снабжены переведёнными инструкциями. На обложке V1.1.0, последняя внутренняя техническая версия — v1.2.0; расхождение отмечено, используется фактический основной текст. Таблица передаёт область применения источника, а не подтверждённые испытания всех плат ArmSoM.
| Продукт | Ядро |
|---|---|
| ALL | linux-5.10 |
Обзор системы RK LOG
RK Log — система журналирования, запускаемая событиями ошибок и предназначенная для следующих задач.
-
Работает в сборках user. Чтобы не создавать слишком много журналов, журналы ошибок формируются при возникновении исключений; записи загрузки отдельно описаны ниже.
-
После kernel panic и перезагрузки сохраняет сведения ядра о предшествовавшем panic.
-
После запуска Android собирает журналы исключений Android: system crash, ANR, watchdog, lowmem, tombstone и других.
-
Все журналы сохраняются в
/data/user_de/0/com.android.shell/files/bugreports. Их можно получить через adb либо скопировать на USB-накопитель или SD-карту. Для копирования используйте штатное приложение Android Files. Сначала включите параметры разработчика, затем выполните действия на исходных снимках ниже.
Шаг 1: откройте настройки и выберите Storage.

Шаг 2: в Storage выберите Documents & other для просмотра документов.

Шаг 3: в Documents нажмите кнопку меню вверху слева либо проведите слева направо, чтобы открыть меню.

Шаг 4: выберите Bug reports для списка собранных журналов. В файловом менеджере их можно копировать или удалять. Перед удалением убедитесь, что нужные журналы успешно экспортированы.

- Символическая ссылка
bugreportsв корневом каталоге указывает на/data/user_de/0/com.android.shell/files/bugreports, поэтому файлы доступны напрямую через/bugreports/:
rk3588_s:/ $ ls bugreports -l
lrw-r--r-- 1 root root 50 2022-09-16 07:36 bugreports -> /data/user_de/0/com.android.shell/files/bugreports
Руководство по использованию
Каждое исключение создаёт ZIP-файл, имя которого начинается с даты. Сортировка по времени позволяет найти последние журналы, например:
rk3588_s:/ $ ls bugreports/
2023-03-14-10-04-27-SYSTEM_BOOT.zip 2023-03-14-10-04-30-TOMBSTONE.zip
2023-03-14-10-04-34-TOMBSTONE.zip 2023-03-14-10-04-39-system_app_crash.zip
Загрузка и перезапуск Android
При включении создаётся журнал загрузки:
rk3588_s:/ $ ls bugreports/
2023-03-14-10-04-27-SYSTEM_BOOT.zip
Файлы с более поздним временем относятся к текущему сеансу загрузки. При перезапуске Android создаётся файл с SYSTEM_RESTART в имени:
rk3588_s:/ $ ls bugreports/
2023-03-14-09-12-03-SYSTEM_RESTART.zip
По этим именам можно определить время загрузки системы и перезапуска Android.
Перезагрузка и зависание ядра
Рассматриваются перезагрузки и зависания ядра. При настройках RK из источника лишь некоторые ситуации, например segment fault, вызывают panic и перезагрузку; hard lock, soft lock или rcu stall могут оставить систему зависшей. Если доступен последовательный порт, соберите дополнительные журналы инструментом fiq через него. Иначе источник рекомендует следующие параметры для перезагрузки и сбора журналов:
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_RCU_STALL_PANIC=y
В описанных источником патчах и SDK эти параметры по умолчанию включены только для сборок user. Для userdebug добавьте соответствующие параметры в arch/arm64/configs/rockchip_defconfig. Пример сохранённого исключения:
rk3588_s:/ $ ls bugreports/
2022-09-24-09-58-10-kernel_panic.zip
Этот архив содержит подробный журнал kernel panic.
Типы исключений Android
| Исключение | Значение |
|---|---|
| TOMBSTONE | Сбой на уровне native |
| system_server_crash | Сбой системной службы |
| system_server_anr | ANR системной службы |
| system_server_lowmem | Недостаток памяти |
| system_server_watchdog | Исключение watchdog в system_server |
| SYSTEM_RESTART | Перезапуск Android |
| system_app_crash | Принудительное закрытие системного приложения |
| system_app_anr | ANR системного приложения |
| system_server_wtf | Серьёзная ошибка Android framework; wtf означает What a Terrible Failure |
| data_app_anr | ANR установленного пользователем приложения |
| data_app_crash | Сбой установленного пользователем приложения |
| data_app_wtf | wtf установленного пользователем приложения |
Свойство persist.sys.rklog.level определяет собираемые исключения. Значение 0 отключает журналы исключений Android, оставляя только журналы kernel panic. Значение по умолчанию — 7. Определения:
enum {
DROPBOX_SYSTEM_SERVER_CRASH = 1,
DROPBOX_SYSTEM_SERVER_ANR = 2,
DROPBOX_SYSTEM_SERVER_LOWMEM = 3,
DROPBOX_SYSTEM_SERVER_WATCHDOG = 4,
DROPBOX_SYSTEM_RESTART = 5,
DROPBOX_SYSTEM_APP_CRASH = 6,
DROPBOX_SYSTEM_APP_ANR = 7,
DROPBOX_SYSTEM_SERVER_WTF = 8,
DROPBOX_SYSTEM_APP_WTF = 9,
DROPBOX_DATA_APP_ANR = 10,
DROPBOX_DATA_APP_CRASH =11,
DROPBOX_DATA_APP_WTF = 12,
DROPBOX_MAX_ENTRY,
};
persist.sys.rklog.level=7 включает DROPBOX_SYSTEM_APP_ANR и предшествующие элементы dropbox в перечислении: это порог по порядку, а не битовая маска. Tombstone срабатывает по умолчанию, кроме случая persist.sys.rklog.level=0. Перечисление также содержит DROPBOX_SYSTEM_APP_WTF=9, отсутствующий отдельной строкой в описании; исходное определение сохранено. Тип исключения включается в имя файла, например:
2022-09-24-09-58-17-SYSTEM_BOOT.zip 2022-09-24-09-58-10-kernel_panic.zip
2022-09-24-09-55-10-system_app_crash.zip 2022-09-24-09-58-24-system_app_crash.zip
2022-09-24-09-55-16-system_app_crash.zip 2022-09-24-10-01-24-system_app_crash.zip
Ограничение места и очистка
Журналы находятся в /data/user_de/0/com.android.shell/files/bugreports. Источник ограничивает размер файлов, создаваемых системой журналирования, примерно 300M. Свойство dumpstate.max_log_size задаёт размер в M: 200 означает 200M. Значение по умолчанию меняется в frameworks/native/cmds/dumpstate/dumpstate.rc. При превышении лимита удаляются самые старые журналы. Фильтруйте файлы по дате в имени. Источник рекомендует очищать каталог после получения нужных журналов; предварительно проверьте полноту экспортированных файлов и сохраните необходимые резервные копии.
Подавление повторных исключений
Чтобы повторяющаяся ошибка не создавала слишком много журналов, система проверяет, встречалась ли та же ошибка после текущей загрузки. Если да, следующий журнал создаётся лишь через 5 минут. Например, многократные одинаковые system_server_wtf из одного места создают только один журнал за 5 минут.
Границы и меры предосторожности
Поведение и значения по умолчанию относятся к SDK/патчам источника и linux-5.10, а не ко всем прошивкам Android или ArmSoM. Параметры panic превращают некоторые зависания в перезагрузки, влияют на доступность и могут привести к потере несохранённых данных; проверяйте на соответствующей версии ядра. Знак + в начале строк конфигурации обозначает добавление в патче и не входит в имя параметра. Журналы могут содержать идентификаторы устройства, данные приложений и другую конфиденциальную информацию; проверяйте и защищайте их перед экспортом или передачей. Изменения конфигурации, внесение неисправностей, удаление файлов и аппаратные испытания не выполнялись.
