Самый простой способ получения dev_dbg
сообщений без установки / настройки syslog / etc. Похоже, необходимо выполнить следующие шаги:
предоставить ключ debug
в bootargs
параметрах ядра
добавьте #define DEBUG
в первой строке файла драйвера - если драйвер представляет собой один файл и использует общий Makefile, или добавьте -DDEBUG
в сборку CC
параметры, если драйвер содержит несколько исходных файлов и, как обычно, имеет собственный Makefile
после загрузки ядра и появляется приглашение включить сообщения уровня отладки, выполнив либо dmesg -n 8
, либо echo 8 > /proc/sys/kernel/printk
загрузить драйвер, если модуль с командой insmod <driver name>
или modprobe <driver name>
или если драйвер интегрирован в ядро, команды вставки могут различаться.
пример того, как назначить встроенный драйвер ядра для подсистемы шины i2c
:
echo <driver name> <i2c bus address> > /sys/bus/i2c/devices/i2c-0/new_device
примечания:
, еслиУ DTS будет запись с драйверамиНапример, повторное назначение драйвера вручную приведет к ошибке - в случае подсистемы i2c
- ошибка EBUSY
(-16), драйвер будет назначен до командной строки, а сообщения dmesg будут ограничены уровнем по умолчанию (обычно dev_info
только)
в случае, если драйвер уже был назначен DTS
и нет способа исключить его временный из источника дерева - полезно отсоединить и повторно подключить его послеАктивированы сообщения уровня debug
(трассировки)
для подсистемы i2c, для которой потребуется выполнить команду:
echo <driver name> > /sys/bus/i2c/drivers/<drivername>/unbind
затем
echo <driver name> > /sys/bus/i2c/drivers/<drivername>/bind
предупреждение:
механизм трассировки драйверов ядра не поможет при отладке внутреннего драйвера, неправильно настроенного или отсутствующего сервисных структур.т. е. если драйвер загружен, но хранит молчание без сообщений о трассировке, это означает, что probe
никогда не выполнялся из-за того, что некоторые ожидаемые ядром данные о служебных структурах отсутствовали или были неисправны