Страница 1 из 1

Ethernet на asm

Добавлено: Вс июл 25, 2010 23:16:08
Enelar
Появилась у меня задача сделать физический фаервол на микроконтроллере.
А именно приходит пакет который направлен на такой то порт такой то машины, в ту сторону не передавать.
Встает вопрос, документация ethernet нужна.
А именно как фиксируется начало передачи, конец, как передается байты, тактуется сигнал или нет...
вобщем все что нужно для того что бы принять хотя бы один байт.
(PS о существовании роутеров, ethernet контроллеров и тп знаем, хотелось бы самому спрограммировать)

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 14:41:26
Enelar
Ну может кто нибудь знает хотя бы ключевое слово для поиска?

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 14:49:52
ARV
ключевое слово ENC28J60

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 14:57:26
Enelar
Ну это не то. Я хочу сделать какраз что то вроде ENC28J60. Для этого мне нужно знать то что спросил раньше.
Они то откуда то знают, а стандарт Ethernet открытый, значит и мы можем знать.

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 15:14:49
Pe3ucTop
Кличевое слова - Ethernet frame , потом читаем IP protocol, потом TCP соединения.
Это для теории.
Для практики - хм, поиск "Ethernet" по форуму поможет.
Но в вашей задаче не хватает параметров:
- на сколько быстро всё это делать :)
- тип данных - мелкие пакеты или крупные
- что анализировать - от / к / адресс / порт / ещё чегонибудь ..

Поищите по этому форуму - я много ссылок давал на разъяснение этого.
ARV писал(а):ключевое слово ENC28J60
Тоже можно поискать - но это только один контроллер Ethernet на SPI шину.
Я бы посоветомал поизучать RTL8019 - на паралельную шину.

P.S. из личного опыта - без специальных микроконтроллеров под Ethernet скорость никакая.

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 15:32:52
Pe3ucTop
Enelar писал(а):Ну это не то. Я хочу сделать какраз что то вроде ENC28J60. Для этого мне нужно знать то что спросил раньше.
Они то откуда то знают, а стандарт Ethernet открытый, значит и мы можем знать.
Как-то не сходится то что вы с прашиваете...
Enelar писал(а): ...
(PS о существовании роутеров, ethernet контроллеров и тп знаем, хотелось бы самому спрограммировать)
Хочется делать - преобразователи уровней, преобразование серийных данных, выделение задающей частоты, аналоговое определение состояния ?
Это к микроконтроллеру почти никакого отношения не имеет, и делается на транзисторах/операционниках и логических элементах.
Если вас интересует именно уровень логического начала пакета - то это взятие на микроконтроллер лишних задачь, но возможно ..

Ключевые слова - Ethernet PHY , SNI, MII, RMII , GMII, RGMII ...

По этим шинам переадётся начало/конец приема-передачи, синхронизация и данные в разных видах (кварт / серийный / двубитный получастотный )..

Линк: http://en.wikipedia.org/wiki/Ethernet английский вариант, там есть и русская версия, но она не полная - отсутствует картина кадра в среде (прамбулоа, определитель старта пакета, и межпакетный интервал)

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 16:33:37
Enelar
По сусекам наскреб, но основную информацию дал Таненбаум "Компьютерные сети!.
И вот этот замечательный ресурс http://sesia5.ru/lokseti/s331.htm
Пойду пить молоко, как переварю, вернусь.

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 16:40:05
Enelar
Так, встает отколовшийся вопрос(возможно нубский).
У таненбаума написанно, что еденица кодируется как пол интервала 1 пол 0, а ноль наоборот.
Следовательно проверять канал нужно в 2 раза чаще чем его пропускная скорость.
Т.о для канала в 100мбит нужна штуковина, которая сможет проверять с частотой 200МГц.
Где такую взять и что бы не очень дорого. (МК на 100Мгц уже 800р стоит)

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 17:07:11
Enelar
Pe3ucTop писал(а):Я бы посоветомал поизучать RTL8019 - на паралельную шину.
Вот за это спасибо. Хорошая штуковина и не дорогая.

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 18:23:29
YS
У таненбаума написанно, что еденица кодируется как пол интервала 1 пол 0, а ноль наоборот.
Се суть Манчестерское кодирование, такое же применяется в пультах от телевизоров (только там еще несущая).

Есть гораздо более элегантный способ приема такого сигнала: надо опрашивать состояние линии через 2/3 длительности бита после каждого фронта, это и будет искомый уровень. Про это даже есть аппнот у Atmel, сейчас номера не вспомню. Алгоритм выглядит примерно так (вход данных вешаем на внешнее прерывание по фронту):

по внешнему прерыванию:

запрещаем внешнее прерывание;
запускаем таймер на 2/3 длительности бита;

по прерыванию таймера:

читаем линию входа данных (ножку внешнего прерывания), записываем значение в переменную;
если посылка принята - вызываем обработчик;
разрешаем внешнее прерывание;

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 18:33:36
Enelar
Элегантное решение) Спасибо)

Re: Ethernet на asm

Добавлено: Пн июл 26, 2010 18:47:17
YS
Спасибо инженерам Atmel. :)

Кстати, вот он и аппнот нашелся. :)

Re: Ethernet на asm

Добавлено: Пт июл 30, 2010 00:50:27
Enelar
Вскроем карты, дабы получить советы от людей более опытных. Чего там темнить, думаю.
Я хочу сделать роутер. Хороший и дешевый. Т.е для дома аля D-LINK, но стабильнее и все такое + пара удобных функций(идеи).
Понимаю работы много будет, но трудностей не боимся.
Цель - сделать опытный образец, потестить, улучшить и поставить на конвеер.
Вот соответственно и интересовался как получать пакеты 802.3(а в дальнейшем и 802.11).

Re: Ethernet на asm

Добавлено: Пт июл 30, 2010 01:37:27
РадиоЛоматель
Enelar писал(а):Т.е для дома аля D-LINK, но стабильнее и все такое + пара удобных функций(идеи).
Вряд ли у вас получится сделать что-то стабильнее, чем D-LINK и иже с ними. Над этими роутерами корпели многие и многие инженеры с высочайшим образованием именно в этой сфере. В них применяются узкоспециализированные микросхемы, сделанные специально для этой задачи. Это устройство настолько сложное (если смотреть с самого низкого уровня) что и вообразить себе трудно. А так, конечно: открыл коробку- "а, что тут? Одна микросхема, 5 трансформаторов? Да я тоже такое могу собрать!"
Я буду аплодировать вам стоя, если вы сможете сделать роутер, который хотя-бы как то работает на скорости 10 МБит. (Действительно 10 МБит).

Сам сейчас долбаюсь с Ethernet, TCP, UDP, NTP. Хочу кое-какой проектик, если успею, то и на конкурс его... Поэтому, я не просто так говорю, что это сложно. Конечно, я использую ENC28J60. Но если вы хотите заняться RTL-ями, с параллельной шиной....

В общем, мое мнение, что вряд-ли у вас что-то выйдет. Хотя как знать...

Re: Ethernet на asm

Добавлено: Пт июл 30, 2010 09:21:54
kolobok0
РадиоЛоматель писал(а):...если вы сможете сделать роутер, который хотя-бы как то работает на скорости 10 МБит....долбаюсь с Ethernet, TCP, UDP, NTP...ENC28J60....
Собственно на десятку (с юзаньем CS8900 или как в Вашем проекте ENC28J60 - хотя есть сомнения лично у меня) - ничего сверх сложного. Сложнее сами протоколы реализовать согласно спецификации. Есть свои нюансы конечно же. Например в инете Вы не найдёте примеров со сборкой на IP уровне дефрагментированных пакетов. Без памяти - не прокатит. TCP так же требует бОльшей отладки на уровне логики состояний, анализа заторов и потерь пакетов, правильных стартов... а так - ничего сложного в принципе.

Кстати на ENC28J60 по SPI - вряд ли Вы выкачаете десятку. На CS8900 на 4 битной шине, на 51 серии (2 мф), где то около 8 выходит после конкретной заточке на скорость (пинги больших кусков данных > 30 кб).

удачи вам
(круглый)

Re: Ethernet на asm

Добавлено: Пт июл 30, 2010 12:36:02
РадиоЛоматель
Я не сказал, что знаю как это сделать, причем быстро. Я просто написал, что не спроста говорю про сложность. И именно грамотный обмен ее создает.

Re: Ethernet на asm

Добавлено: Пт июл 30, 2010 23:16:52
Enelar
Я и не говорил про то что считаю что это легко, и что смогу это сделать.
Я решил попробовать.
А вопрос заключался в том, может кто знает как выбрать железки.
Ну я про то что дорого выходит, а хотелось бы попасть в ту же ценовую категорию.

Re: Ethernet на asm

Добавлено: Сб июл 31, 2010 10:33:00
котэ315
А кому-нибудь известны уровни сигнала в ethernet? А то я нигде найти не могу

Re: Ethernet на asm

Добавлено: Пн авг 02, 2010 14:43:57
Pe3ucTop
Мда, почитал, народ лезет в дебри.. Уровни сигнала в ethernet, начала пакета, кодирование Манчестера и т.д. Зачем вам это ??
Pe3ucTop писал(а): ...
Ключевые слова - Ethernet PHY , SNI, MII, RMII , GMII, RGMII ...
...
По этим шинам переадётся начало/конец приема-передачи, синхронизация и данные в разных видах (кварт / серийный / двубитный получастотный )..
Линк: http://en.wikipedia.org/wiki/Ethernet английский вариант, там есть и русская версия, но она не полная - отсутствует картина кадра в среде (прамбулоа, определитель старта пакета, и межпакетный интервал)
Работайте с цифровыми данными..
У болшинства комутаторов чип имеет подобную шину (свободную) - используйте, не говоря уже о специальных чипах преобразования уровней за копейки. Далее для пробы посоветовал бы ARM LPCxxx с ethernet, и развернутся есть где и скорость хорошая и при надобности вплоть до Linux-a (но быстрее роутеров заводских замучаетесь делать).
котэ315 писал(а):А кому-нибудь известны уровни сигнала в ethernet? А то я нигде найти не могу
http://en.wikipedia.org/wiki/Ethernet_over_twisted_pair
Для скоростей рассписаны уровни.