Разработка драйвера сетевого адаптера для Linux. Часть 2
vm109 2 минуты назад Разработка драйвера сетевого адаптера для Linux. Часть 2 Средний 24 мин 1 Linux * Системное программирование * Туториал В первой части статьи мы ознакомились со структурой сетевого адаптера и...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. vm109 2 минуты назад Разработка драйвера сетевого адаптера для Linux. Часть 2 Средний 24 мин 1 Linux * Системное программирование * Туториал В первой части статьи мы ознакомились со структурой сетевого адаптера и научились принимать сетевые пакеты. Во второй части продолжим изучение этой темы, перейдем, как и планировалось, на использование ядерных фреймворков (clocks, reset, libphy), рассмотрим что есть в DeviceTree, добавим передачу пакетов и в итоге получим полноценный (почти) драйвер сетевого адаптера.
Общий план статьи следующий:подготавливаем макетную платуподключаем ядерные фреймворки к проектудобавляем очередь передачи пакетовподключаем драйвер к сетевому стеку ядрасобираем, запускаем, тестируем1. Подготовка макетной платыПодготовим загрузочный образ для тестовой платы OrangePi Zero. В отличии от первой части мы не будет собирать образ вручную из исходников, а сделаем это при помощи buildroot.
Технические детали
Скачиваем пакет, распаковываем и ставим переменную окружения BR к корневому каталогу, куда распаковали пакет:wget tar xfz buildroot-2026. gz cd buildroot-2026. 02 export BR=$PWD echo $BR В каталог $(BR)/board/orangepi/orangepi-zero/patches/linux копируем патч, для чего он нужен объясним ниже.
Формируем конфигурацию для платы:make orangepi_zero_defconfig Заходим в конфигуратор ядра:make linux-defconfig Отключаем сетевой адаптер:Device Drivers -> Network Device Support -> Ethernet driver support -> STMicroelectronics devices Выходим из режима конфигурирования с сохранением всех изменений и запускаем сборку:make Сборка занимает некоторое время, возможно потребуется доустановить некоторые зависимости. Если все прошло успешно, то в каталоге $BR/output/images будет файл sdcard. img, который прошиваем на microSD карту:sudo dd if=sdcard.
img of=/dev/sda Далее прошитую карту вставляем в слот платы и подаем питание, процесс загрузки наблюдаем на отладочной консоли:Процесс загрузки макетной платы1 USB Device(s) found scanning bus usb@1c1a400 for devices... 1 USB Device(s) found scanning bus usb@1c1b000 for devices... 1 USB Device(s) found scanning bus usb@1c1b400 for devices...
Отраслевые последствия
1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found /boot/extlinux/extlinux.
conf Retrieving file: /boot/extlinux/extlinux. conf 1: default Retrieving file: /boot/zImage append: root=PARTUUID=fce358a3-1b42-487f-8e35-b596deee660f rootwait console=ttyS0,115200 rootfstype=ext4 quiet panic=10 Retrieving file: /boot/sun8i-h2-plus-orangepi-zero. dtb Kernel image @ 0x42000000 ## Flattened Device Tree blob at 43000000 Booting using the fdt blob at 0x43000000 Working FDT set to 43000000 Loading Device Tree to 49ff7000, end 49fffdc4 ...
OK Working FDT set to 49ff7000 Starting kernel ...
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





