Новое в разработке ядра Linux / драйверов - PullRequest
21 голосов
/ 21 апреля 2010

Недавно я начал разработку драйвера для встроенного устройства под управлением Linux.

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

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

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

    Другими словами, учитывая источник-код файла
    , к каким другим файлам относится соответствующий код

    ("#include" дает частичное представление)

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

    Спасибо.

Ответы [ 2 ]

18 голосов
/ 21 апреля 2010

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

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

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

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

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

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

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

7 голосов
/ 21 апреля 2010

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

...