В новинку для разработки Ядра/Драйвера Linux

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

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

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

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

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

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

Кто-то мог помочь мне в получении лучшее представление?
Любая справка будет значительно цениться

Спасибо.

21
задан TheCodeArtist 9 July 2013 в 09:17
поделиться

2 ответа

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

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

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

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

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

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

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

18
ответ дан 29 November 2019 в 21:41
поделиться

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

7
ответ дан 29 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

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