Pull to refresh
0
@artempodoprigora read⁠-⁠only

Пользователь

Send message

Как написать свой первый Linux device driver

Reading time 7 min
Views 58K
Здравствуйте, дорогие хабрачитатели.

Цель данной статьи — показать принцип реализации драйверов устройств в системе Linux, на примере простого символьного драйвера.

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

Это моя первая статья, пожалуйста не судите строго!

P.S

Получилось слишком много букв, поэтому я принял решение разделить статью на три части:

Часть 1 — Введение, инициализация и очистка модуля ядра.
Часть 2 — Функции open, read, write и trim.
Часть 3 — Пишем Makefile и тестируем устройство.

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

Итак, начнем.
Читать дальше →
Total votes 59: ↑52 and ↓7 +45
Comments 41

Как работает CPU: интерактивный урок для начинающих

Reading time 2 min
Views 115K
Simple CPU — маленький урок, который знакомит новичка с ключевыми понятиями информатики. Хотя урок далеко не полный и предназначен для «самых маленьких», но даже образованному человеку приятно видеть, насколько доступно и элегантно можно изложить сложный материал.

Урок состоит из 8 интерактивных примеров.

1. Бинарное счисление.

2. Логические операции на примере штриха Шеффера (NAND gate).


Штрих Шеффера (NAND gate)
Читать дальше →
Total votes 52: ↑41 and ↓11 +30
Comments 13

Генератор своими руками на 220 вольт. Теперь отключения света не страшны

Reading time 2 min
Views 544K
Я покажу как собрать простой, но достаточно мощный, генератор на 220 вольт.



Потребуется:


— коллекторный мотор, можно другой на 12 вольт
— насадка на ось мотора — патрон от дрели
— бесперебойник UPS или инвертор с 12 на 220
— диод на 10 ампер: Д214, Д242, Д215, Д232, КД203 и т. д.
— провода
— велосипед
— и желательно аккумулятор на 12 вольт

Сборка:


— закрепляем велосипед так, что бы заднее колесо крутилось свободно, вывешиваем его
— прикручиваем патрон на ось мотора
— крепим мотор так, что бы патрон плотно прижимался к колесу, можно подтянуть его пружиной
— подключаем мотор к аккумулятору: минусовой провод мотора к минусу аккумулятора, плюсовой провод мотора к аноду диода, катод диода к плюсу аккумулятора
— аккумулятор соединяем с бесперебойником или с инвертором
Всё! К бесперебойнику можно подключать потребители на 220 вольт и пользоваться электричеством! Как только аккумулятор разрядится, достаточно будет покрутить педали и примерно через час аккумулятор зарядится.
Читать дальше →
Total votes 270: ↑262 and ↓8 +254
Comments 181

Простой монитор сетевых интерфейсов Linux, с помощью netlink

Reading time 12 min
Views 25K
Однажды, в одном из проектов, мне понадобилось организовать строгий и надежный контроль над всеми сетевыми интерфейсами, таблицами маршрутизации, а так же получать нотификации о каких-либо изменениях. Было принято стратегическое решение — не использовать старые-добрые ioctl netdevice (SIOCGIFMETRIC, SIOCSIFNAME и т.п.) или непосредственные вызовы соответствующих утилит (ifconfig, route и т.д.), а найти более современное и болле удобное решение. Оно было найдено — libnetlink. Это библиотека, предоставляющая большое количество методов для коммуникации с ядром, с помощью механизма netlink. Данная библиотека идеально подходила для моих целей, позволяя решить огромное количество задач. К сожалению, у библиотеки оказался не особо удобный и довольно сложный API, требовавший совершать множество непонятных действий. Особого веселья добавляло практически полное отсутствие документации и вообще любых материалов на эту тему.
Подумав, я решил как следует разобраться в netlink и написать свою библиотеку. В данный момент реализован весь функционал для работы с нотификацией, сетевыми интерфейсами, таблицами маршрутизации, разумеется поддерживаются IPv4 и IPv6. В достаточно скором времени данный проектик будет представлен на суд общественности :) А пока я бы хотел познакомить всех интересующихся с прекрасным миром netlink, на примере простого монитора сетевых интерфейсов.
Читать далее...
Total votes 53: ↑51 and ↓2 +49
Comments 4

Information

Rating
Does not participate
Location
Dresden, Sachsen, Германия
Registered
Activity