Подтвердить что ты не робот

Новое для ядра Linux/Разработка драйверов

Недавно я начал разрабатывать драйвер встроенного устройства, работающего под Linux.

До сих пор у меня есть только читать о внутренних функциях Linux.
Не имея предварительного опыта в разработке драйверов, я нахожу, что мне трудно сделать первый шаг.

  • Я загрузил исходный код ядра (v2.6.32).
  • Я прочитал (skimped) драйверы устройств Linux (3e)
  • Я прочитал несколько связанных записей здесь, в StackOverflow.
  • Я понимаю, что linux имеет "монолитный" подход.
  • Я построил ядро ​​(включая существующий драйвер в menuconfig и т.д.)
  • Я знаю основы файлов kconfig и makefile, поэтому это не должно быть проблемой.

Может кто-нибудь описать структуру (т.е. межсоединения)
различных каталогов в исходном коде ядра.

Другими словами, данный файл исходного кода,
какие другие файлы он ссылается на связанный код

( "#include" -s предоставляет частичную идею)

Может ли кто-нибудь помочь мне в получении лучшей идеи? Любая помощь будет принята с благодарностью

Спасибо.

4b9b3361

Ответ 1

Учитывая C файл, вы должны посмотреть на функции, которые он вызывает, и на структуры данных, которые он использует, а не беспокоиться о конкретных файлах.

Существует два основных пути разработки собственного драйвера устройства:

  • Возьмите водителя, который похож на ваш; вычеркните код, который не применим к вашему устройству, и заполните новый код для вашего устройства.
  • Начните с самых простых частей драйвера устройства и немного добавьте фрагменты, пока ваше устройство не начнет функционировать.

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

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

Я также считаю, что Драйверы устройств Linux, третье издание могут помочь вам в разработке драйверов.

Файлы Linux сами включают файлы, основанные на том, что они делают, на каком слое они находятся и на каком слое они обращаются в стек вызовов. Большое изображение действительно сообщает, как каждый файл связан со следующим.

Ответ 2

Мне пришлось исправлять драйвер ядра один раз. Мой самый большой совет (если вы используете vim) - настроить его с помощью ctags, чтобы вы могли прыгать через источник ядра с помощью ctrl-] каждый раз, когда вы видите функцию, которую вы не понимаете.