LINUX.ORG.RU

Пинг qemu (gcc, bare metal, raw LwIP, ARM versatile, smc91c111)

 , ,


0

1

Задача: написать код под qemu, и иметь возможность пингануть эту машину из хоста. То есть, поднять TCP сервак, отвечающий на ICMP пакеты.

Конфигурация - как сказано выше, без ОС, raw LwIP, ARM versatile, адаптер smc91c111.

Собственно проблемы две:

1. Как заставить qemu пропускать ICMP трафик ?

2. Как достучаться до сетевого адаптера ?

На данный момент есть код, где инициализируется LwIP, без реальной инициализации адаптера.

Запускаю qemu следующим образом: qemu-system-arm -M versatilepb -m 128M -nographic -s -S -kernel firmware.bin -net nic,model=smc91c111

Сам я вижу решение таким образом:

1. Заставить qemu с работающим linux гостём отвечать на ICMP и применить эту конфигурацию к моей bare-metal машине.

2. Взять готовый raw LwIP TCP сервер и пробовать с ним.



Последнее исправление: markontheboard (всего исправлений: 1)

Как достучаться до сетевого адаптера

Открыть документацию, увидеть интерфейс 91c111 - он может быть 8 16 или 32 бита (скорее всего 32 бита в QEMU). Запустив Linux на QEMU, попробовать узнать на каком физическом адресе висит адаптер, наверняка для bare metal это полностью сохранится. Судя по документации, у адаптера 16-битные регистры статуса и настройки, вот регистр 2 и 3 содержат инфу про PHY чип (который встроен в адаптер) - эти биты можно вычитать как показатель умения работать с устройством - они по идее будут как и документации.

Твои пункты решения это разумное разбиение задачи на подзадачи. Да, сначала я бы убедился что Linux в QEMU хорошо работает по сети через такой адаптер. Ну и попробовать отдельно LwIP TCP сервер в своей программке покрутить - тоже разумно предварительно опробовать так, без впиховывания в железюку или эмуль.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Спасибо. Как говорится, make sense.

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

markontheboard
() автор топика
Ответ на: комментарий от markontheboard

Задача решена, но не тут (здесь Linux и есть решение). На другом форуме https://electronix.ru/forum/index.php?showforum=43 есть масса тем про прикручивание LwIP, однако исключительно имея железо, и как правило свой родной MAC-контроллер на чипе, поэтому дичь вроде smc91c111 как раз весьма редкое решение. Обычно это, как я выше указал, это ARM со встроенным MAC и внешним PHY, либо тупо PCI/PCI-E контроллер, опять же с внешним PHY.

Вешать подобное было бы удобно к ПЛИС/FPGA, однако ж и там на форумах я не вижу упоминания этого контроллера, потому что в самом деле там проще подвесить PHY по *GMII, а MAC тоже не проблема свой либо в soft/hard-CPU имеется свой.

Для чего необходима такая задача?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Для чего необходима такая задача?

Задача от заказчика. Который, скорее всего, сам являясь программистом и ,зашиваясь или просто не имея желания этим заниматься, перекинул задачу на фриланс. Я думаю это просто начало проекта, где потребуется абстрагировать аутсорс от своего железа.

На самом деле, можно заюзать и другой чип, сейчас важно, чтобы сеть ну хоть как-нибудь заработала с bare-metal LwIP.

Вот тут нашел драйвер для FPGA, чуваки используют lan91c111.

markontheboard
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Да не, проект-то свежий, я общаюсь с клиентом )

Но, к слову, уже просрачиваюсь. Собственно поэтому я и здесь )

Раз уж тут такие чудеса разоблачения, то, если кто готов осилить, можем договориться по цене. Но делать прийдется молниеносно.

markontheboard
() автор топика
Ответ на: комментарий от iliyap

Спасибо. Да, вариант есть. Как до него стучать из lwip ?

markontheboard
() автор топика
Ответ на: комментарий от I-Love-Microsoft

нет, просто проект закрыт для предложений вроде бы.

zudwa
()
Ответ на: комментарий от markontheboard

вообще, проект случайно обнаружил, когда темой заинтересовался.

кстати, у versatilepb вроде бы нет поддержки smc91c111

qemu-system-arm -M versatilepb -net nic,model=?
qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio

zudwa
()
Ответ на: комментарий от zudwa

Шах и мат, атеисты.

Да и просто:

qemu-system-arm -M versatilepb -kernel firmware.bin -serial stdio -net user -net nic,model=smc91c111,macaddr=52:54:00:00:EE:03
Booting
Initializing lwip...
All done
Entering an endless loop
qemu-system-arm -M versatilepb -kernel firmware.bin -serial stdio -net nic,model=smc91c123,macaddr=52:54:00:00:EE:03
qemu-system-arm: Unsupported NIC model: smc91c123
markontheboard
() автор топика
Ответ на: комментарий от anonymous

поднять TCP сервак, отвечающий на ICMP

Кек, мда.

Никто, походу, и не заметил. Что, собственно, и говорит о качестве регистрантов на ЛОРе в наше время.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.