Как установить LDDK?

Скачал Linux Device Driver Kit.

Там книга по написанию драйверов, документация и ядро.

Я так понял, чтобы пользоватся пакетом LDDK, нужно установить это ядро?

Что такое LDDK — какой-то IDE или оболочка?

Кто уже сталкивался с этим пакетом?

Какие проги могут облегчить написание драйвера?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Ctrl + Enter
Ctrl + Enter

В Линуксе мой друг, он сам по себе прекрасная ИДЕ.

mcedit

Всем спасибо.
Кстати, где наилучше разрабатывать драйвер?

Говорят Eclipse, NetBeans?

Начинать писать такой драйвер следует с изучения шин PCI/PCIe, самого девайса (в идеале иметь разработчика камня под рукой или comprehensive datasheet) и соответствующих интерфейсов ядра. Также имеет смысл глянуть src/linux/drivers/net/pci-skeleton.c — это скелет драйвера типичной сетевой карты. Прграммирование DMA машины, как уже было верно замечено, для каждого девайса свое — обычно она выглядит как набор регистров в устройстве — выделяем DMA буфер в ядре, записываем в карту этот адрес и по прерыванию вынимаем/кладем данные, плюс обработка ошибок, в принципе все очень просто.


Вопрос: Ети примеры драйверов с нета — нерабочие, или они реально не реализируют аппаратние возможности некого девайса, или частично,

тоесть только инициализируют, региструют, дают DMA и IRQ?

Да, так и есть, это скелетоны, т.е. каркасы драйверов, всю начинку для работы с железом нужно делать самому. 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

Я так понял, чтобы пользоватся пакетом LDDK, нужно установить это ядро?

Нет, исходники ядра идут как пример кода драйверов, не более.

Что такое LDDK — какой-то IDE или оболочка?

Это просто набор документации, книг и исходники ядра, собранные в одном месте.

Какие проги могут облегчить написание драйвера?

Смотря под что драйвер будет писаться, но в любом случае код для работы с ядром, это < 10% кода драйвера. Возьми готовый скелетон character драйвера за базу www.captain.at/...te-skeleton.php — это единственное, что может облегчит начало написания драйвера.

Підписатись на коментарі