[d | au / b / bro / ci / cu / dev / hr / l / m / mi / mu / o / r / s / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / ts / vn]
- [Радио 410] [ii.booru-Архив РПГ] [acomics-cf-ost] [@] - [Архив - Каталог] [Главная]

[Назад]
Ответ
Leave these fields empty (spam trap):
Имя
Тема
Сообщение
Файл
Подтверждение
Перейти к [
Пароль (для удаления файлов и сообщений)
 
ЗАПРЕЩЕНО:
  • детская эротика/порнография
  • троллинг
 
  • Поддерживаются файлы типов GIF, JPG, MP4, OGV, PNG, WEBM размером до 4096 кБ.
  • Максимальное количество бампов треда: 500.
  • Всем посетителям рекомендуется ознакомиться с FAQ.

controller.jpg - (634 KB, 800x800)  
634 KB №208070   #1

Пишу минималистичный драйвер для сетевой карты. В качестве эмулятора выбрал QEMU.
Почитал PCI Specification, почитал PCI Family of Gigabit Ethernet Controllers Software Developer’s Manual для 82540EM.
Написал код: https://pastebin.com/FrBKUzYR

Запустил командой
qemu-system-x86_64 -drive format=raw,file=raw.img,if=floppy,index=0 \

-netdev user,id=n1 -device e1000,netdev=n1,mac=00-14-22-01-23-45

Регистры контроллера отобразились в I/O Address Space, но вот проблема:
Записал в Ethernet Controller's Control Register биты, читаю обратно - всегда возвращается 0.
Status Register тоже возвращает 0.
Регистры возвращают 0 даже там, где по дефолту должен быть 1.

Однако Ubuntu, запущенная в виртуальной машине, каким-то образом обнаруживает рабочий адаптер.

В чем может быть проблема?

>> №208073   #2
>ОП-пик

О, это ты зря.

>> №208074   #3

>>208073
почему?

>> №208077   #4

Открой исходники QEMU и посмотри файл с эмуляцией адаптера. Не исключено что программная реализация в чём-то будет отличаться от спецификации. QEMU никогда не ставили себе целью полностью и всецело эмулировать железо, достаточно чтобы драйверы интересующего ПО работали.

Ну или ты просто спеку не дочитал.

>> №208082   #5

запустил код драйвера на virtualbox (выбрав тот же сетевой адаптер в настройках), и там порты I/O работают.
интересно, как Ubuntu в QEMU все-таки работает с интеловской карточкой.

>> №208083   #6
>Открой исходники QEMU и посмотри файл с эмуляцией адаптера

хорошая идея, учитывая, что в QEMU также имеется эмулятор RTL8139 с исходниками, и у него нормально работает I/O (тоже проверил) - есть с чем сравнить.



Удалить сообщение []
Пароль
[d | au / b / bro / ci / cu / dev / hr / l / m / mi / mu / o / r / s / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / ts / vn]
- [Радио 410] [ii.booru-Архив РПГ] [acomics-cf-ost] [@] - [Архив - Каталог] [Главная]