Отладка ядра AOSP - PullRequest
       36

Отладка ядра AOSP

1 голос
/ 27 сентября 2019

Мы создаем пользовательскую плату для Android на базе imx6 SoC.Используемая версия Android довольно старая (KitKat 4.4.2), как и ядро ​​(3.0.35).Мы имеем дело с проблемой, которую мы еще не выяснили.

Обычно, когда все работает нормально, перезагрузка платы занимает 5-6 секунд.Но иногда перезагрузка платы занимает длительное время в диапазоне от 1,30 до 2,30 минут.

Прежде всего нам хотелось бы узнать, какой модуль / функцияядро застряло. Мы подозреваем, что это может быть проблемой eMMC, но это длинная догадка, и мы действительно не имеем ни малейшего представления о том, что происходит в данный момент.

Ребята, вы знаете, как сделатьядро лишнее многословно?как печатать каждый вызов функции?Может ли кгдб или аналогичные средства отладки помочь нам на этом этапе?

Спасибо,

С уважением,

Vauteck

1 Ответ

1 голос
/ 27 сентября 2019

Если вы включите CONFIG_PRINTK_TIME в ядре, dmesg будет печатать время до журналов (в секундах).Это позволяет вам искать промежутки времени между строками и, возможно, вы сможете найти причину этой проблемы.

Если вы обнаружили, что проблема действительно существует в ядре, вероятно, вы можетевключите некоторый элемент конфигурации CONFIG_DEBUG_* или определите CONFIG_DEBUG в драйвере для получения дополнительной информации.В противном случае, printk будет лучшим, что у вас есть.

Кроме того, взгляните на следующие конфигурации ядра:

CONFIG_DEBUG_LL
CONFIG_DEBUG_IMX_UART
CONFIG_DEBUG_IMX6Q_UART
CONFIG_EARLY_PRINTK
CONFIG_EARLY_PRINTK_DIRECT

Для завершения: Вы можете использовать logcat, чтобы увидеть, задерживает ли какая-либо инициализация загрузку.Если ваша компания создает аппаратное обеспечение, я думаю, стоит посмотреть, что чип делает с областью действия (потому что я не сразу думаю, что Linux откладывает загрузку), но не раньше, чем вы наверняка узнаете, что несколько плат имеютта же проблема.

Мне интересно, что вы найдете.Держите меня (нас) в курсе; -)

...