Материал по "пинговалке" предоставлен
Если говорить кратко, то "пинговалка" представляет собой сетевую карту ISA, и подключенный к ней однокристальный микроконтроллер фирмы MicroChip. В данном экземпляре устройства используется микроконтроллер 16F877.
Исходные детали показаны ниже - вроде ничего страшного в них нет.
Микроконтроллер осуществляет эмуляцию управляющих сигналов шины ISA, умеет работать с регистрами сетевой карты и, что самое главное, содержит реализацию подмножества протоколов TCP/IP.
Проект базируется на двух разработках зарубежных товарищей (первая и вторая).
Соответственно, в них используется карта NE2000 и 3com 3C509B. Проекты не совместимы т.к. используют различные порты микроконтроллера для управления сетевой картой. Для определенности рассмотрим изготовление "пинговалки" на базе второй разработки (там фото симпатичнее).
Для разработки нужно:
- Работающая ISA карта 3C509. На ней необходимо предварительно отключить режим P&P и установить базовый адрес 0x300. Делается это с помощью утилиты 3c5x9cfg.zip.
- Микроконтроллер. MicroChip PIC16F877 в DIP40 корпусе. В Москве можно купить в фирме Микрочип. В общем, это совсем не дефицит.
- Два конденсатора 30 пф, один 10 мкф. Один резистор 10кОм.
- Желательно (но не обязательно) дополнительно иметь еще 7 светодиодов, 7 резисторов, стабилизатор напряжения КРЕН5 на 5 вольт (выпаивается почти из любого дохлого хаба), два конденсатора на 10 мкф и два по 0.1 мкф.
- Разъем ISA платы (обычно отпиливаются ножовкой по-одному от 286 материнской платы), панелька DIP40 и макетная плата.
- Блок питания от сгоревшего хаба. Из хаба же можно выковырять разъем питания и светодиоды :-)
Принципиальная схема на следующем рисунке:
Следует отметить, что нумерация выводов на ISA плате следующая:
Если смотреть на сетевую плату со стороны микросхем и разъемов RJ45
вправо, то правый вывод с Вашей стороны - A1, левый A31. C противоположной
стороны B1 - B31 соответственно.
Далее нужна прошивка для однокристалки. Пример можно взять тут. Только не забудьте перед сборкой поправить IP адрес в строчках 203 - 208, т.е. прописать правильный IP адрес, который будет у Вашей "пинговалки".
Собрать ассемблерный исходник можно транслятором, взятым тут. Строка должна представлять собой что-то типа gpasm source.asm -I ..\header, где source.asm - то, что вы компилируете. ..\header - путь к заголовочным файлам, которые идут в комплекте.
В результате образуется файл source.hex, который можно скармливать
программатору. Если нет доступа к программатору, или нет желания с этим
возится -
Вот такой результат должен получиться после сборки схемы:
С обратной стороны:
Настоятельно рекомендуется включать схему через диод и стабилизатор на КРЕН5. Это позволит питать схему от любого блока питания, или от батарейки Крона. Кроме того, диод избавит от тяжких последствий включения питания в неверной полярности. Схема стабилизатора приводится на следующем рисунке:
Проверить результат можно командой ping (не забудьте включить сетевой
кабель и питание :-).
Итак, ping 192.168.xx.xx...
Не пингуется? Все правильно. Максимальный воспринимаемый размер пакета - 22 байта. Правильная команда - ping 192.168.xx.xx -l 20
В качестве итога, опишем что умеет собранная схема:
- Управлять 7 выходами на порте C однокристалки с помощью UDP (об этом ниже).
- Пинговаться.
- Отвечать на ARP запросы.
- Выдавать состояние с 8 аналоговых входов порта A на запрашивающий хост по протоколу UDP (можно повесить датчик и получать SMS сообщение, что воруют хаб :-)
Важно понимать, что окончательной принципиальной схемы подобной "пинговалки" просто не существует т.к. она сильно зависит от выполняемых задач, условий эксплуатации и т.д.
Минимальная схема состоит из сетевой карты, однокристалки, трех конденсаторов, одного резистора и кварца на 4 mz. Максимальная - тут все зависит от фантазии.
Несколько слов о том, как это используется у нас. Стандартную прошивку не используем. "Своя" позволяет динамически менять IP адрес "пинговалки" по комманде от сервера (не перешивать же из-за такой ерунды чип :-).
Выход управляемый оставлен только один. На остальные 6 выходов подключены светодиоды, которые загораются, если "пинговалку" пингуют с определенных хостов (программируются с сервера динамически). Таким образом, наличие только трех подобных устройств в цепочке из 11 неуправляемых свичей и хабов позволяет с весьма большой точностью определять место поломки.
Кроме того, устройство может использоваться монтажниками вместо ноутбука (в ограниченной области :-) Т.е. может мигать лампочками, когда его пингуют определенные хосты. При подключении клиента или поиске неисправностей в сети больше и не нужно.
Потом, если интересно, могу рассказать, как к однокристалке подключается COM порт, поднимается PPP и получаем... Ну можно догадаться :-)