Задать вопрос

Как тестировать драйвера?

Известно мне стало что некоторые модули невозможно компилировать отдельно от всего ядра, от сюда вопрос, как можно тестировать компоненты ядра(которые нуждаются в полной компиляции) без перекомпиляции всего остального содержимого. Сразу скажу, комп у меня слабенький и ждать 3-4 часа чтоб понять что забыл в конце оператора точку с запятой поставить, это не хорошо?!
  • Вопрос задан
  • 423 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
С копмиляцией вам уже посдказали. Давайте я про отладку расскажу. Во первых очень желательно иметь две машины - одну для компиляции и отладки, вторую - таргет, куда все грузим и где тестируем и проверяем
1) используем printk, в 95% случаев этого достаточно
2) если аппаратура позволяет, используем jtag - это аппаратный модуль для отладки - 100% успех!
3) можно использовать kgdb - не всегда это работает.

Ну и совсем сильная магия - использовать статическую область памяти, где реализуем кольцевой буфер и туда пишем своими средствами отладочную информацию напрямую. Но для этого статическая память должна быть на каком-то из устройств, я обычно пишу в статику в часики реального времени, но не везде они есть и имеются. За то таким образом можно отлаживать абсолютно все, от NME, до драйверов высокоскоростных устройств.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Сразу скажу, комп у меня слабенький и ждать 3-4 часа чтоб понять что забыл в конце оператора точку с запятой поставить, это не хорошо?!

При разработке необязательно использовать конфигурацию ядра со всеми включёнными опциями. Типичный конфиг который я использую при разработке собирается с нуля за 2 минуты.
Кроме того, ядерный Makefile понимает цели вида *.o. Т.е. можно взять и откомпилировать один файл из дерева исходников ядра. Например: make init/main.o.
Если ты меняешь что-то в исходниках, перекомпилироваться будет только то, что действительно зависит от того, что ты поменял. Поменяешь .c -- перекомпилируется единственный соответствующий ему файл .o.

как можно тестировать компоненты ядра

Это совсем другой вопрос. Под просто тестированием понимают проверку того, что код работает правильно, а не то, что он собрался.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы