Недавно, я начал разрабатывать драйвер встроенного устройства под управлением Linux.
До сих пор я только читал о внутренностях Linux.
Не имея никакого предшествующего опыта в драйвере devlopment, я нахожу немного трудным посадить мой первый шаг.
Может кто-то описывать структуру (т.е. связующие звенья)
из различных каталогов в исходном коде ядра.Другими словами, учитывая файл исходного кода,
к которому другие файлы были бы он относиться для связанного кода("#include"-s обеспечивают частичную идею),
Кто-то мог помочь мне в получении лучшее представление?
Любая справка будет значительно цениться
Спасибо.
Для файла C вы должны смотреть на функции, которые он вызывает, и структуры данных, которые он использует, а не беспокоиться о конкретных файлах.
Есть два основных пути к разработке собственного драйвера устройства:
Файлы, из которых состоит ваш драйвер, станут более понятными, когда вы завершите этот процесс. Обязательно подумайте о том, что принадлежит каждому файлу, но до некоторой степени разделение драйвера между файлами - это больше искусство, чем наука. Меньшие драйверы часто помещаются всего в один или два файла.
Немного дизайна тоже может быть хорошо. Подумайте, что делает ваше устройство и что нужно делать вашему драйверу.Исходя из этого, вы сможете определить, какие функции должны быть у драйвера устройства.
Я также считаю, что Драйверы устройств Linux, третье издание могут помочь вам в разработке драйверов.
Сами файлы Linux включают файлы в зависимости от того, что они делают, на каком уровне они находятся и к какому уровню они получают доступ в стеке вызовов. Общая картина действительно показывает, как каждый файл связан с другим.
Однажды мне пришлось исправить драйвер ядра. Мой самый большой совет (если вы используете vim) - настройте его с помощью ctags, чтобы вы могли перемещаться по исходному тексту ядра с помощью ctrl-] каждый раз, когда видите функцию, которую вы не понимаете.