Как установить LDDK?
Скачал Linux Device Driver Kit.
Там книга по написанию драйверов, документация и ядро.
Я так понял, чтобы пользоватся пакетом LDDK, нужно установить это ядро?
Что такое LDDK — какой-то IDE или оболочка?
Кто уже сталкивался с этим пакетом?
Какие проги могут облегчить написание драйвера?
9 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВ Линуксе мой друг, он сам по себе прекрасная ИДЕ.
Мне нравится joe
mcedit
Кстати, где наилучше разрабатывать драйвер?
Говорят Eclipse, NetBeans?
Начинать писать такой драйвер следует с изучения шин PCI/PCIe, самого девайса (в идеале иметь разработчика камня под рукой или comprehensive datasheet) и соответствующих интерфейсов ядра. Также имеет смысл глянуть src/linux/drivers/net/pci-skeleton.c — это скелет драйвера типичной сетевой карты. Прграммирование DMA машины, как уже было верно замечено, для каждого девайса свое — обычно она выглядит как набор регистров в устройстве — выделяем DMA буфер в ядре, записываем в карту этот адрес и по прерыванию вынимаем/кладем данные, плюс обработка ошибок, в принципе все очень просто.
Да, так и есть, это скелетоны, т.е. каркасы драйверов, всю начинку для работы с железом нужно делать самому. DMA со времён PCI 2.x — это BusMaster DMA, т.е. PCI устройство само будет по комманде/событию захватывать шину и пересылать данные в обе стороны, поэтому для DMA пересылок обычно выделяют линейную физическую память, поэтому унифицированной работы с PCI BMDMA в Linux ядре нет, у каждой PCI/PCI-E карточки своя работа.
Все существующие сетевые драйвера в линукс ядре поддерживают не одну модель сетевой карточки, а, обычно, целый модельный ряд, поэтому размер исходника ни о чём не говорит.
LDD3 просмотрел, все ето уже раньше знал.
Может ето глупый вопрос, но все-таки
Смотрел интеловский драйвер к сетевой карточке 10GBase-T, там ориентовно 100 тис рядков кода, с которых мне понятно гдето 20%.
У примерах с нета драйвера по ~100−200 не тис рядков, некоторие и то поменше, но все 100% понимаю.
Если писать драйвер к сетевой карточке по LDD3 выйдет гдето тоже 100−200.
Я сейчас не имею возможности проверить драйвер,
потому что нет еще нужного девайса.
Мое задание-написать драйвер к некому сетевому устройству на PCIe шине.
Вопрос: Ети примеры драйверов с нета — нерабочие, или они реально не реализируют аппаратние возможности некого девайса, или частично,
тоесть только инициализируют, региструют, дают DMA и IRQ?
Наперед спасибо.
Следует учесть что книга устарела, практически сразу как вышла. Для написания драйверов достаточно gcc/binutils и исходников ядра. Кроме того что в сети немеряно примеров, драйвер вам могут написать бесплатно, см. kerneltrap.org/node/7636
Нет, исходники ядра идут как пример кода драйверов, не более.
Это просто набор документации, книг и исходники ядра, собранные в одном месте.
Смотря под что драйвер будет писаться, но в любом случае код для работы с ядром, это < 10% кода драйвера. Возьми готовый скелетон character драйвера за базу www.captain.at/...te-skeleton.php — это единственное, что может облегчит начало написания драйвера.